Самый простой способ отобразить информацию, собранную из чата, - это отправить назад события канала от бота с данными, а затем перехватить сообщение с помощью специального промежуточного программного обеспечения активности в WebChat.Затем вы можете обрабатывать данные на веб-странице так, как вам нравится.
Bot - NodeJs SDK v4
В боте мы собираемся отправлять события канала назадна веб-чат с данными, которые мы собрали в чате.По сути, вам просто нужно отправить действие со свойством type, для которого установлено значение «event», а для атрибута name установлено некоторое строковое значение - в этом случае мы будем использовать данные.Данные разговора будут инкапсулированы в данные канала активности.
await step.context.sendActivity({name: 'data', type: 'event', channelData: data});
WebChat - пользовательское промежуточное ПО
В WebChat мы собираемся реализовать специальное промежуточное ПОэто будет проверять входящие действия для значений типа и имени, которые мы указали ранее.Когда мы сталкиваемся с событием обратного канала, мы можем обработать поступающие данные и обновить веб-страницу.
const store = createStore(
{},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
let { channelData, name, type } = action.payload.activity;
channelData || (channelData = {});
if(type === 'event' && name === 'data') {
this.props.handleData(channelData);
}
}
return next(action);
});
Снимок экрана
![enter image description here](https://i.stack.imgur.com/u266M.png)
Поскольку WebChat создан с использованием React, я настоятельно рекомендую также создать эту веб-страницу с помощью React.Уже есть пример - customization-selectable-Activity - который разбивает страницу на два столбца, в одном из которых содержится веб-чат, а в другом - инспектор действий.Вы можете легко изменить этот образец, чтобы он соответствовал вашим требованиям, добавив пользовательское промежуточное программное обеспечение в WebChat в этом примере и изменив представление инспектора на таблицу данных.
Запрос токена WebChat
Обратите внимание: для простоты начала работы вы можете получить токен DirectLine со стороны клиента;однако рекомендуется создать внутренний REST API для генерации и управления вашими токенами.
const res = await fetch('https://directline.botframework.com/v3/directline/tokens/generate',
{
method: 'POST',
headers: {
'Authorization': `Bearer <SECRET>`,
'Content-Type': 'application/json'
},
});
const { token } = await res.json();
Надеюсь, это поможет.