【发布时间】:2020-08-20 06:06:02
【问题描述】:
我目前在客户端使用 react.js,在服务器端使用 node.js。Webchat 客户端使用直线与机器人通信。 有没有办法将数据从机器人发送到客户端?
这里的数据只是一个消息数组。我希望用以前的对话消息初始化机器人。我尝试了 sendConversationHistory() 方法,但这似乎在部署时效果不佳。因此,我正在考虑从数据库中获取消息,然后将这些获取的消息发送给客户端。
我遇到了反向通道方法,我们可以从客户端发布活动。我计划从 Webchat 客户端发布一个名为 getHistory() 的活动,当服务器侦听此活动时,它从数据库中获取消息并发送它们作为对客户端的响应。客户端读取此响应并相应地呈现。我计划将数据从机器人发送到客户端,但我不确定用于从机器人发送此数据的正确方法和语法。
客户端:
let messages;
function getMessages() {
botConnection
.postActivity({type: "event", value: "", from: {id: "me" }, name: "getHistory"})
.subscribe(res => messages = res);
}
我不确定我将如何处理服务器端。
bot.on("event", function (event) {
let fetchedMessages = [];
fetchedMessages = fetchConversations(); /*a method which fetches the messages from the database*/
bot.send(fetchedMessages) ; /*unsure about this part*/
}
我不确定如何将 fetchedMessages 发送到客户端。我希望客户端中的 messages 变量等于 fetchedMessages 服务器。我是 javascript 的初学者,并且仍然熟悉 bot 框架。 感谢阅读!
【问题讨论】:
-
您是否考虑过在对话历史记录中也使用直线? stackoverflow.com/questions/56969008/…
-
我曾尝试过类似的操作,但出现错误。我会尝试并通知您。只需快速跟进:我需要显示特定用户之前的所有对话。如何我明白了吗?目前,我正在对后端的数据库进行查询,并计划将这些查询发送到前端。我无法从前端调用数据库。有一些安全策略没有t 允许从前端对数据库的任何调用。 TLDR:需要所有对话 id 才能查看所有对话,但无法调用前端的数据库
-
我认为框架不会存储对话。它只是解决连接稳定性问题的有限部分(用户意外失去互联网连接并需要继续对话)。这部分可以通过使用我共享的示例来检索。如果您需要每个用户的所有对话,您可能需要编写一些中间件并使用您自己的存储。我很确定某处有一些关于此的示例
-
我将每个用户的消息存储在数据库中。我正在获取用户的消息并希望将其发送出去。我在问题中提到了相同的伪代码。只是我想知道确切的格式和方法。我没有找到任何用于发送此数据的示例。如果您能分享一些示例,那就太好了。
标签: botframework chatbot azure-bot-service direct-line-botframework