我一直在项目中使用MS bot框架-聊天bot,并且在我的聊天bot的后端使用QnAMaker,该聊天bot在直接bot通道中运行。
在使用JavaScript前端代码进行页面加载时,我正在通过createStore方法向bot(C#代码-服务器托管的服务器)发送一些值say ABC到bot,在询问了bot将开始查询的问题之后在qnamaker中使用ABC作为严格过滤器。
一段时间后,在某些情况下,我将输入输入到BOT并将值更改为XYZ。到此为止一切都很好。
现在,我想获取值XYZ并在前端JavaScript代码中对其进行更新。
换句话说,我想反转createstore方法。或创建服务器端到客户端的通信
有什么方法可以满足我的要求。
您可以利用同一家商店来接收机器人的任何活动(以前称为反向渠道方法)。例如,您可以从机器人发送的event
类型的活动与name
和value
结合使用。
Bot
await context.sendActivity({
type: ActivityTypes.Event,
name: 'sample:backchannel',
value: 'XYZ'
});
WebChat
const store = window.WebChat.createStore(
{},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const { activity } = action.payload;
if (activity.type === 'event' && activity.name === 'sample:backchannel') {
alert(activity.value); // Do whatever you want in your front-end
}
}
return next(action);
}
);
[B0Framework-Webchat文档中的View full sample