使用反向通道从我网站上的网络聊天电话中获取价值

Getting values from my web chat call in my website using backchannel

我正在尝试集成反向通道并获取值。 https://github.com/Microsoft/BotFramework-WebChat/tree/master/samples/15.d.backchannel-send-welcome-event

这个我也试过了。

我也试过反序列化仍然无法获取数据的值。 我怎样才能获得语言值?

这是我的示例代码:

        var userinfo = {
            id: 'user-id',
            name: 'user name',
            locale: 'es'
        };
        var botConnection = new BotChat.DirectLine({
            token: 'mytoken',
            user: userinfo,
            locale: 'es'
        });
        BotChat.App({
            botConnection : botConnection,
            user: userinfo,
            bot: { id: 'bot-id', name: 'bot name' },

        }, document.getElementById('botDiv'));
        botConnection
            .postActivity({
                from: userinfo,
                name: 'ConversationUpdate',
                type: 'event',
                value: '',
            })
            .subscribe(function (id) {
                console.log('"trigger ConversationUpdate" sent');
            });

这样做的目的是我想将语言环境从我的网站传递到我的机器人。 就像在模拟器中一样。 谢谢!

我建议将语言环境添加到反向频道事件的频道数据中。这样,在机器人端,您可以简单地访问传入 activity 中的语言环境,而无需在收到事件时反序列化任何 JSON 对象。请注意,您还可以使用文本或值代替 channelData。请参阅下面的代码片段。

BotChat 返回频道事件

// Send back channel event
botConnection.postActivity({
    from: userinfo,
    name: 'setLocale',
    type: 'event',
    channelData: "es"
}).subscribe(id => console.log(id));

机器人 - C#

public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{

    if (turnContext.Activity.Type == ActivityTypes.Message)
    {
        ...
    } else if (turnContext.Activity.Type == "event") {
        // Check for `setLocale` events
        if (turnContext.Activity.Name == "setLocale") {
            await turnContext.SendActivityAsync($"Your locale is set to {turnContext.Activity.ChannelData}");
        }
    }
    else
    {
        await turnContext.SendActivityAsync($"{turnContext.Activity.Type} event detected");
    }
}

希望对您有所帮助!