Я пытаюсь подключиться к службе бота с помощью Angular клиента. Я могу подключиться к службе ботов, но как только я отправляю сообщение Activity, клиент WebChat отправляет на сеанс сообщения EventUpdate, в результате чего я получаю карточку входа от бота. (Если я отправлю userToken в channelData firstMessage в службу Bot от клиента, я не получу карточку входа).
Я пытаюсь отправить действие с userToken в channelData, но событие dialogUpdate достигает службы Bot. до того, как я отправил сообщение и получил карточку входа.
Мне нужно отправить пользовательские данные channelData с событием dialogUpdate, отправляемым из клиента.
Используя механизм обратного канала, я могу отправить пользовательские данные channelData для публикации действий, но это событие dialogUpdate инициируется внутренне из websocket, и мне нужно перехватить этот триггер события.
Ниже приведены подробности кода:
Index. html
<script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
<script src="https://unpkg.com/simple-update-in/dist/simple-update-in.production.min.js"></script>
app.component.ts
// after response from https://directline.botframework.com/v3/directline/conversations
createDirectLine(response: any) {
this.directLine = window.WebChat.createDirectLine({
token: response.token,
webSocket: true,
streamUrl: response.streamUrl,
conversationId: response.conversationId
});
}
this.store = window.WebChat.createStore({},
({dispatch}) => next => action => {
if (action.type === 'DIRECT_LINE/POST_ACTIVITY') {
// add custom channelData to every postActivity
action = window.simpleUpdateIn(action, ['payload', 'activity', 'channelData', 'UserToken'], function () { return this.userToken; });
}
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
// Send event to bot with custom data
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
activity: {
type : 'conversationUpdate',
channelData : { 'UserToken : this.userToken}
}
}
})
}
return next(action);
});
renderWebChat() {
window.WebChat.renderWebChat(
{
directLine: this.directLine,
store: this.store
},
this.botWindowElement.nativeElement
);
}
PS Это ' Не полный код, я только добавил фрагменты.