【问题标题】:Sending data from bot to client将数据从机器人发送到客户端
【发布时间】: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


【解决方案1】:

要从机器人向用户发送信息(不是响应),您应该使用proactive messages。样品here。您可以修改触发器应该是什么,何时发送消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 2013-04-11
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2020-08-17
    • 2021-01-26
    相关资源
    最近更新 更多