Мы пытаемся получить некоторые события / сообщения для публикации, когда пользователь выходит из окна чата (или сайта) (или приветственного сообщения), но пока события не запускаются.
I можно увидеть в инструментах инспектора:
Снимок экрана 2020-02-18 в 15.15 39
Созданы различные действия / разговоры, чатбот работает, но не приветствуется / выходные события запускаются.
Код, который мы используем, практически идентичен коду документации здесь: https://github.com/microsoft/BotFramework-WebChat/blob/master/docs/WELCOME_MESSAGE.md
и здесь: Как для обработки оставления разговора пользователя
У меня есть функция, которая срабатывает при закрытии окна, следующим образом:
const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
return next( action );});
window.addEventListener( 'sendEventActivity', ( { data } ) => {
store.dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'user_event',
value: {
name: 'end_conversation',
value: 'user ended conversation'
},
text: 'The user has left the conversation.'
}
})
});
function exitEvent(){
const eventSendActivity = new Event( 'sendEventActivity' );
eventSendActivity.data = 'User left conversation';
window.dispatchEvent( eventSendActivity );
console.log('Exit Event Submitted (hopefully)');
}
exitEvent();
Я пробовал другие варианты, определяя магазин ранее, выше рендеринг чата, после рендеринга чата, отправка приветственных сообщений из разных мест и в разное время, но, похоже, не удается его отправить.
Мы используем https://cdn.botframework.com/botframework-webchat/latest/webchat.js
Есть идеи, в чем проблема? Не уверен, где мы идем не так или почему это не срабатывает - теоретически копирование, как известно, работает код прямо в наш код, похоже, не сработает.
Заранее спасибо, пожалуйста, дайте мне знать, если я не удалось включить какие-либо необходимые детали - новичок в chatbot и не много публиковать на github. Большое спасибо,
РЕДАКТИРОВАТЬ:
Я смог жениться на вышеупомянутом коде и коде отсюда: https://github.com/microsoft/BotFramework-WebChat/issues/2120#issuecomment -516056614 , чтобы достичь того, что я хотел. Я опубликую ниже на случай, если это поможет кому-то еще ...
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join'
}
});
}
return next(action);
});
window.addEventListener( 'sendEventActivity', ( { data } ) => {
store.dispatch( {
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/exit'
}
} );
} );
document.getElementById("action_menu_btn").addEventListener( 'click', function() {
const eventSendActivity = new Event( 'sendEventActivity' );
eventSendActivity.data = 'User left conversation';
window.dispatchEvent( eventSendActivity );
console.log('End Converstaion Event Fired');
});
Ура!