我一直在我的项目中使用 MS 机器人框架 - 聊天机器人,并且我在聊天机器人的后端使用 QnAMaker,该聊天机器人在直接线路机器人 channel 中运行。
在使用 JavaScript 前端代码加载页面时,我在询问后通过 createStore 方法向机器人(C# 代码 - 服务器托管)发送一些值 say ABC机器人将开始使用 ABC 作为严格过滤器在 qnamaker 中查询该问题。
一段时间后,在某种情况下,我将向 BOT 提供输入并将值更改为 XYZ。到目前为止一切都很好。
现在,我想要获取值 XYZ 并在我的前端 JavaScript 代码中更新该值。
换句话说,我想反转createstore方法。或创建从服务器端到客户端的通信
有什么办法可以实现我的要求吗?
最佳答案
您可以利用同一商店来接收来自机器人的任何事件(以前称为反向 channel 方法)。例如,您可以从您的机器人发送事件
类型的事件以及名称
和值
。
机器人 (JavaScript)
await context.sendActivity({
type: ActivityTypes.Event,
name: 'sample:backchannel',
value: 'XYZ'
});
机器人 (C#)
await turnContext.SendActivityAsync(
new Activity {
Type = ActivityTypes.Event,
Name = "sample:backchannel",
Value = "XYZ"
}
);
网络聊天
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);
}
);
View full sample在 BotFramework-Webchat 文档中
关于javascript - MS Bot Framework 将值从服务器代码 (C#) 传递到前端代码 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60616474/