Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 主动式机器人触发瀑布_C#_Botframework_Microsoft Teams_Azure Bot Service - Fatal编程技术网

C# 主动式机器人触发瀑布

C# 主动式机器人触发瀑布,c#,botframework,microsoft-teams,azure-bot-service,C#,Botframework,Microsoft Teams,Azure Bot Service,我开发了一个机器人,它可以帮助用户预订会议室,并且只能在团队频道中进行1对1的对话。我开发了瀑布式对话框来收集数据(首选房间、楼层、参与者数量、日期、时间等)。它工作得非常好。但现在我想添加一个新功能,即在特定会议室空闲时主动通知用户(假设用户在预订会议室之前没有这样做)。我已经添加了第二个端点“api/notify”(根据官方的主动式机器人示例),该端点接收webhook,并且我使用连接器向用户发送主动式消息,例如,“1号会议室现在免费,是否要编辑您的原始约会位置?”。这里我有一些关于设计和进

我开发了一个机器人,它可以帮助用户预订会议室,并且只能在团队频道中进行1对1的对话。我开发了瀑布式对话框来收集数据(首选房间、楼层、参与者数量、日期、时间等)。它工作得非常好。但现在我想添加一个新功能,即在特定会议室空闲时主动通知用户(假设用户在预订会议室之前没有这样做)。我已经添加了第二个端点“api/notify”(根据官方的主动式机器人示例),该端点接收webhook,并且我使用连接器向用户发送主动式消息,例如,“1号会议室现在免费,是否要编辑您的原始约会位置?”。这里我有一些关于设计和进一步开发的问题:

  • 一旦用户收到主动通知并回答“是”,我想调用新的瀑布让用户更改预订。我不确定这里的正确方法是什么,也不确定如何“触发”EditReservation瀑布对话框,因为简单的“是”似乎不是作为中断捕获的正确触发器。我是否应该将有关发送的主动消息的信息存储在Cosmos DB/Blob容器中,并将其作为一个条件与“是”中断相结合(可能还应检查是否有任何活动对话框作为第三个条件)。或者有没有一种方法可以直接从“api/notify”端点触发瀑布?也许有办法将“api/notify”请求以某种方式传递给主bot.cs?或者其他想法

  • 当用户进行新预订时,以及在此过程中“api/notify”收到post请求时,如何处理这些场景。如何防止“api/notify”代码不中断当前瀑布?我是否可以检查“api/notify”端点是否有任何活动对话框,并可能以不成功的状态代码响应webhook,以便webhook在某个时间再次发送请求。还是有其他聪明的方法


  • 请注意,webhook逻辑在这里是独立的,将根据需要进行配置。

    为了使用Bot框架发送主动消息,Bot必须首先使用TurnContext.getConversationReference()从传入消息中捕获对话引用。此引用可存储以供以后使用。若要发送主动消息,请获取对话引用,然后使用adapter.continueConversation()创建TurnContext对象,该对象将允许bot传递新的传出消息。请查看@Trinetra MSFT谢谢您的反馈,但它实际上并不能解决任何问题,因为我已经看到了您链接的文档。continueConversation()方法是否防止中断任何其他正在进行的瀑布?这是bot中的文档谢谢,但这些是用户中断,我要求bot通过从notify controller发送主动消息来中断正在进行的瀑布。