【发布时间】:2017-11-07 16:57:05
【问题描述】:
我们正在构建一个 MS botframework 机器人,它将托管在我们控制的网站上。
有没有办法将会话 ID 从主机网站传递到网络聊天机器人小部件,以便在处理来自机器人内部的消息时可以访问它?
如果没有,是否可以访问此处描述的“t”令牌参数http://docs.botframework.com/connector/embed-chat-control/
谢谢
【问题讨论】:
标签: c# botframework
我们正在构建一个 MS botframework 机器人,它将托管在我们控制的网站上。
有没有办法将会话 ID 从主机网站传递到网络聊天机器人小部件,以便在处理来自机器人内部的消息时可以访问它?
如果没有,是否可以访问此处描述的“t”令牌参数http://docs.botframework.com/connector/embed-chat-control/
谢谢
【问题讨论】:
标签: c# botframework
目前无法通过聊天控件执行此操作。
如果您想要更紧密的集成,您应该考虑使用 DirectLIne API 并通过它构建您自己的 UX 体验。
【讨论】:
可以检索对话 ID,它在您的机器人的消息中可用。为此,您应该向 https://webchat.botframework.com/api/conversations 发出带有值“BOTCONNECTOR {您的安全代码}”的标头授权的 POST 请求
您应该会收到新的令牌和 conversationId 作为结果或请求。该令牌用于创建 iframe 标签,conversationId 可用作您的会话令牌。
【讨论】:
使用 DirectLine 和 Backchannel 可能会对您有所帮助。如果您滚动到最后一部分,您将在repo 的自述文件中找到信息。它允许网络聊天和主机可以发送/接收任何你想要的东西。
<body onload="postLoadMessage()">
<div id="BotChatGoesHere" class="wc-narrow"></div>
<script src="botchat.js"></script>
<script>
var params = BotChat.queryParams(location.search);
var user = { id: '***' };
var bot = { id: '***' };
window['botchatDebug'] = params['debug'] && params['debug'] === "true";
var botConnection = new BotChat.DirectLine({
secret: '****',
token: params['t'],
domain: params['domain'],
webSocket: params['webSocket'] && params['webSocket'] === "true" // defaults to true
});
BotChat.App({
botConnection: botConnection,
user: user,
bot: bot
}, document.getElementById("BotChatGoesHere"));
//var x= whatever value you want to send;
const postLoadMessage = () => {
botConnection
.postActivity({type: "event", value: x , from: {id: "me" }, name: "PageLoaded"})
.subscribe(id => console.log("success"));
}
</script>
</body>
上面给出的代码是我在加载带有机器人的页面时使用它发送值 x 的方式。
我希望这会有所帮助:)
【讨论】: