MS Bot Framework передает значения из кода сервера (C#) в код переднего плана (JavaScript) - PullRequest
0 голосов
/ 10 марта 2020

Я использую MS Bot Framework - чат-бот в своем проекте, и я использую QnAMaker в качестве бэк-энда для моего чат-бота, который работает на прямом канале бота.

При загрузке страницы используя JavaScript код переднего плана, я посылаю некоторые значения скажем, AB C в бот (c# код - сервер размещен) через createStore , после запроса Вопрос: бот начнет запрашивать его в qnamaker, используя AB C в качестве строгих фильтров.

Через некоторое время, в одном сценарии, я передам входные данные в BOT и изменим значения как XYZ . до этого все в порядке.

Теперь я хочу получить значения XYZ и обновить это в моем интерфейсе JavaScript Код.

Другими словами, я хочу полностью изменить метод createtore. или создание связи со стороны сервера на сторону клиента

Есть ли способ выполнить мое требование.

1 Ответ

1 голос
/ 10 марта 2020

Вы можете использовать один и тот же магазин, чтобы получать какие-либо действия от бота (ранее назывался подходом обратного канала). Например, вы можете отправить активность от своего бота типа event в сочетании с name и value.

Bot (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);
    }
);

Просмотреть пример целиком в документации BotFramework-Webchat

...