我试图通过微软提供的网络聊天html模板将其他频道数据传递到我的C#后端,我没有运气。
我已经阅读了很多关于这个的博客文章,但我不知道这些人是如何让它工作的,因为我总是在每个帖子上获得502 Bad Gateway。
我在HTML中的机器人应用程序初始化如下所示:
// removed my token for brevity
var connection = new BotChat.DirectLine({
token: "{secret}",
webSocket: true
});
function getBotConnectionDetail(botconnection) {
var botConnectionDetail = {};
var keys = Object.keys(botconnection);
for (var i = 0; i < keys.length; i++) {
botConnectionDetail[keys[i]] = botconnection[keys[i]];
};
botConnectionDetail['postActivity'] = function (activity) {
activity.channelData = {
Username: 'John Doe'
};
return botconnection.postActivity(activity);
};
return botConnectionDetail;
}
BotChat.App({
botConnection: getBotConnectionDetail(connection),
user: { id: "Yo" },
bot: { id: "Yo" },
resize: "window"
},
document.getElementById("bot"));
这个例子基于我在下面尝试过的以下博客和github门票。
这是在DirectlineJS组件上引入的新bug,或者这从未起作用。任何帮助将不胜感激。
Sending channelData to webchat with each message
https://github.com/Microsoft/BotBuilder/issues/15
https://github.com/Microsoft/BotBuilder/issues/201
https://github.com/Microsoft/BotFramework-WebChat/issues/142
更新
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Bot Chat</title>
<title>Siza</title>
<link href="webview/webview.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans" />
<style>
html, body {
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
}
</style>
</head>
<body>
<div id="bot"></div>
<script src="webview/botchat.js"></script>
<script>
var connection = new BotChat.DirectLine({
secret: "{secret}",
webSocket: true
});
function getBotConnectionDetail(botconnection) {
var botConnectionDetail = {};
var keys = Object.keys(botconnection);
for (var i = 0; i < keys.length; i++) {
botConnectionDetail[keys[i]] = botconnection[keys[i]];
};
botConnectionDetail['postActivity'] = function (activity) {
activity.channelData = {
Username: 'John Doe'
};
return botconnection.postActivity(activity);
};
return botConnectionDetail;
}
BotChat.App({
botConnection: getBotConnectionDetail(connection),
user: { id: "Yo" },
bot: { id: "Yo" },
resize: "window"
},
document.getElementById("bot"));
</script>
</body>
</html>
我想我明白了。我在尝试测试时遇到了同样的问题,然后我在导航器开发者工具中查看了我的网络视图。
抛出502的请求包含以下内容,这有助于我理解:
所以事实上这是一个在某个地方被取消授权的问题......所以通过快速谷歌搜索,我发现这篇文章:Unauthorized Bot Service from Web Chat
它就在那里:我没有在Azure的App Service中设置MicrosoftAppId
和MicrosoftAppPassword
。我编辑了它们(见另一个答案),没关系。