如何从机器人内部向Microsoft机器人发送消息,以便消息通过对话流并具有相应的响应?



这个标题实际上应该是"当某些东西清除上下文或在有人使用机器人时服务器重新启动时,我如何才能使机器人优雅地响应。 A. 这令人困惑和 B.我需要分部分计划,所以从逻辑上讲,这将是第一部分。

  1. 不使用直线,也许我最好不使用,我怎么能像在客户端中与机器人交谈一样,从用户那里向机器人发送消息。 例如,当我在客户端中说"hello"时,机器人会处理该信息并通过我的对话进行响应。

我想"预先"向机器人发送一条消息,以便它主动引发响应。现在这不是主动消息传递,因为这是另一个用户进入机器人并与客户端交谈,这不是我想要的。

同样,我如何从机器人内部向机器人发送消息。

  1. 我想这样做的原因如下:如果服务器关闭或该人由于某种原因丢失了上下文,并且他们已经在机器人内部,他们必须重新进入机器人。具体来说,就好像正在"重新启动"对话一样。但是,就像在模拟器中重新启动对话时一样,您将重新进入机器人,并且正在重新连接/重新启动用户。 在这种情况下,您什么都不做。你就在那里...下次键入路径时,路径应该已经存在。

就我而言,就像上下文被清除并且必须重新建立自己,然后您可以继续与机器人交谈。

对用户体验的影响是这样的:他们键入文本,机器人忽略,它基本上重新启动,然后他们将不得不再次键入文本。

你使用的是什么状态存储?如果您使用的是内存存储,则您看到的行为是预期的。内存存储是易失性和临时性的。需要使用持久且更可靠的状态存储(Cosmos、Azure Blob(。通过这样做,将保留用户所在的"位置"(例如,在对话中,在瀑布对话中(。通常按 ConversationState。

有关更多信息,请参阅此处: https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-state?view=azure-bot-service-4.0

没有办法完全按照你的要求去做。主动消息是最接近的。但主动消息并不完全适用于其他用户进入机器人的情况。它们通常用于外部内容可以触发向用户发送消息的情况(例如,天气预报或股票达到阈值(。对于主动消息,您肯定需要某种持久的状态存储。

最新更新