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

问题描述 投票:0回答:1

我一直在项目中使用MS bot框架-聊天bot,并且在我的聊天bot的后端使用QnAMaker,该聊天bot在直接bot通道中运行。

在使用JavaScript前端代码进行页面加载时,我正在通过createStore方法向bot(C#代码-服务器托管的服务器)发送一些值say ABC到bot,在询问了bot将开始查询的问题之后在qnamaker中使用ABC作为严格过滤器。

一段时间后,在某些情况下,我将输入输入到BOT并将值更改为XYZ。到此为止一切都很好。

现在,我想获取值XYZ并在前端JavaScript代码中对其进行更新。

换句话说,我想反转createstore方法。或创建服务器端到客户端的通信

有什么方法可以满足我的要求。

javascript botframework c#-3.0 direct-line-botframework qnamaker
1个回答
0
投票

您可以利用同一家商店来接收机器人的任何活动(以前称为反向渠道方法)。例如,您可以从机器人发送的event类型的活动与namevalue结合使用。

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

© www.soinside.com 2019 - 2024. All rights reserved.