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 并结合 namevalue.

机器人 (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 文档中