如何在 Microsoft 网络聊天(bot 框架)中自动加入对话
How to automatically join conversation in Microsoft web chat (bot framework)
我正在使用 https://github.com/Microsoft/BotFramework-WebChat/blob/master/README.md
我希望每当网站上显示网络聊天小部件时,机器人都能收到一条 "join" 消息。
这个想法是人类不必发起对话。机器人可以通过欢迎消息回应加入对话的人。
这怎么可能?
这个 "Welcome feature" 自 Webchat v3 以来一直是一个长期的讨论和话题。看起来它已在 2 天前通过此拉取请求修复:https://github.com/Microsoft/BotFramework-WebChat/pull/1286
现在有一个关于如何做到这一点的示例,位于此处:
https://github.com/Microsoft/BotFramework-WebChat/blob/master/samples/15.d.backchannel-send-welcome-event/index.html
简而言之,演示如下:
(async function () {
// In this demo, we are using Direct Line token from MockBot.
// To talk to your bot, you should use the token exchanged using your Direct Line secret.
// You should never put the Direct Line secret in the browser or client app.
// https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-authentication
const res = await fetch('https://webchat-mockbot.azurewebsites.net/directline/token', { method: 'POST' });
const { token } = await res.json();
// We are using a customized store to add hooks to connect event
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
// When we receive DIRECT_LINE/CONNECT_FULFILLED action, we will send an event activity using WEB_CHAT/SEND_EVENT
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
return next(action);
});
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token }),
store
}, document.getElementById('webchat'));
document.querySelector('#webchat > *').focus();
})().catch(err => console.error(err));
请注意,由于此 PR 非常新,它并未嵌入 latest
版本中,因此您必须指向 webchat.js
文件的 master
版本, 不是 latest
:
<script src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>
它正在运行:您的机器人端会收到 activity 类型 Event
的通知,您可以在用户输入任何内容之前回复您的用户:
我正在使用 https://github.com/Microsoft/BotFramework-WebChat/blob/master/README.md
我希望每当网站上显示网络聊天小部件时,机器人都能收到一条 "join" 消息。
这个想法是人类不必发起对话。机器人可以通过欢迎消息回应加入对话的人。
这怎么可能?
这个 "Welcome feature" 自 Webchat v3 以来一直是一个长期的讨论和话题。看起来它已在 2 天前通过此拉取请求修复:https://github.com/Microsoft/BotFramework-WebChat/pull/1286
现在有一个关于如何做到这一点的示例,位于此处: https://github.com/Microsoft/BotFramework-WebChat/blob/master/samples/15.d.backchannel-send-welcome-event/index.html
简而言之,演示如下:
(async function () {
// In this demo, we are using Direct Line token from MockBot.
// To talk to your bot, you should use the token exchanged using your Direct Line secret.
// You should never put the Direct Line secret in the browser or client app.
// https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-authentication
const res = await fetch('https://webchat-mockbot.azurewebsites.net/directline/token', { method: 'POST' });
const { token } = await res.json();
// We are using a customized store to add hooks to connect event
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
// When we receive DIRECT_LINE/CONNECT_FULFILLED action, we will send an event activity using WEB_CHAT/SEND_EVENT
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
return next(action);
});
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token }),
store
}, document.getElementById('webchat'));
document.querySelector('#webchat > *').focus();
})().catch(err => console.error(err));
请注意,由于此 PR 非常新,它并未嵌入 latest
版本中,因此您必须指向 webchat.js
文件的 master
版本, 不是 latest
:
<script src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>
它正在运行:您的机器人端会收到 activity 类型 Event
的通知,您可以在用户输入任何内容之前回复您的用户: