Получение значений из моего разговора в чате на моем веб-сайте с использованием обратного канала - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь интегрировать обратный канал и получить значения. https://github.com/Microsoft/BotFramework-WebChat/tree/master/samples/15.d.backchannel-send-welcome-event

Я тоже пробовал это. Получить URL Referer и заголовок источника из Microsoft Bot Framework

Я также попытался десериализовать значения, которые все еще не могут получить данные. как я могу получить языковые значения?

вот мой пример кода:

        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');
            });

Цель этого я хочу передать локаль моему боту с моего сайта. как в эмуляторе. enter image description here Спасибо!

1 Ответ

1 голос
/ 03 апреля 2019

Я бы порекомендовал добавить локаль к данным канала события обратного канала.Таким образом, на стороне бота вы можете просто получить доступ к локали во входящей деятельности без необходимости десериализации каких-либо объектов 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");
    }
}

Надеждаэто помогает!

...