MS Bot Framework 将值从服务器代码 (C#) 传递到前端代码 (JavaScript)
MS Bot Framework pass the values from server code (C# ) to front end code (JavaScript)
我一直在使用 MS 机器人框架 - 在我的项目中使用聊天机器人,我在后端使用 QnAMaker 聊天机器人,它在直线机器人频道中 运行。
在使用 JavaScript 前端代码加载页面时,我正在通过 [=23] 向机器人(c# 代码 - 服务器托管)发送一些值 比如 ABC =]createStore 方法,在提出问题后,机器人将开始使用 ABC 作为严格过滤器在 qnamaker 中查询它。
一段时间后,在某些情况下,我将向 BOT 提供输入并将值更改为 XYZ。至此一切都很好。
现在,我想获取值 XYZ 并在我的前端 JavaScript 代码中更新它。
也就是说,我想反转createstore方法。或创建从服务器端到客户端的通信
有什么办法可以达到我的要求。
您可以利用同一家商店从机器人(以前称为反向渠道方法)接收任何 activity。例如,您可以从 event
类型的机器人发送一个 activity 并结合 name
和 value
.
机器人 (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 文档中
我一直在使用 MS 机器人框架 - 在我的项目中使用聊天机器人,我在后端使用 QnAMaker 聊天机器人,它在直线机器人频道中 运行。
在使用 JavaScript 前端代码加载页面时,我正在通过 [=23] 向机器人(c# 代码 - 服务器托管)发送一些值 比如 ABC =]createStore 方法,在提出问题后,机器人将开始使用 ABC 作为严格过滤器在 qnamaker 中查询它。
一段时间后,在某些情况下,我将向 BOT 提供输入并将值更改为 XYZ。至此一切都很好。
现在,我想获取值 XYZ 并在我的前端 JavaScript 代码中更新它。
也就是说,我想反转createstore方法。或创建从服务器端到客户端的通信
有什么办法可以达到我的要求。
您可以利用同一家商店从机器人(以前称为反向渠道方法)接收任何 activity。例如,您可以从 event
类型的机器人发送一个 activity 并结合 name
和 value
.
机器人 (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 文档中