javascript - MS Bot Framework 将值从服务器代码 (C#) 传递到前端代码 (JavaScript)

标签 javascript botframework c#-3.0 direct-line-botframework azure-qna-maker

我一直在我的项目中使用 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/

相关文章:

c# - 结束对话 C# 机器人

c# - 在 C# 3.0 中我们使用 "var"在 C# 2.0 中它的替代品是什么?

node.js - 使用Microsoft Bot Framework,当我在Messenger channel 上写入时,如何将结果推送到特定的Slack channel ? (带 Node )

c# - Bot Framework 总是触发 Dialog 的相同方法

wpf - 如何提高 WPF 应用程序的性能

c# - 帮助合并 XML 数据

javascript - 为什么 ReactHighcharts SolidGauge 的圆形在 react 中不起作用

javascript - onChange 函数 console.log 少了一个字符

javascript - 如何在 Thymeleaf 中使用 DataTable?

javascript - 如何在页面加载时显示折线图的最新记录?