机器人框架:如何等待后台任务?



我想在机器人框架操作中运行后台任务,例如运行 Azure 自动化作业或向人工发送审批请求。 目标是,机器人应仅在后台任务完全完成后回复用户,在这种情况下,当 Azure 自动化作业成功完成或人工批准请求时。

我的机器人正在使用自定义 DirectLine 通道,在该通道中,如果与用户的通信是异步的,则不是问题,用户不会期望机器人立即回复。 如何让机器人框架等待后台任务完成,然后再将响应发送回用户?

您正在寻找的方法称为主动消息传递。首先保存对话引用,当后台任务完成后,可以利用此引用发送消息。

Microsoft文档:向用户发送主动通知

对于OP来说可能有点太晚了,但可能与到达这里的其他人有关。

几个月前,我制作了一个机器人,该机器人必须等待后台进程(使用 Power BI Embedded 生成报表并生成其图像(并将该图像返回给用户。

在我的例子中,后台进程非常适合作为使用 BackgroundService 类作为托管服务的进程内后台服务,以及用于准备数据并通过通道将其发送到后台服务的自定义操作。

最后,工作完成后,服务使用机器人框架 SDK 中的 ContinueConversationAsync 方法将信息返回给用户。

您可以在我的 GitHub 存储库中查看所有实现详细信息。相关部分是自定义操作和服务本身。

最新更新