Bot Framework:如何等待后台任务?

Bot Framework: How to wait for background task?

我想 运行 后台任务作为 Bot Framework 操作的一部分,例如 运行 执行 Azure 自动化作业或向人工发送批准请求。 目标是一旦后台任务完全完成,机器人应该 回复用户,在这种情况下,当 Azure 自动化作业成功完成或人工批准请求时。

我的 bot 使用自定义 DirectLine 通道,如果与用户的通信是异步的,这不是问题,用户不会期望 bot 立即回复。 如何让 Bot Framework 等待后台任务完成, 将响应发送回用户之前?

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

微软文档:Send proactive notifications to users

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

几个月前,我制作了一个机器人,它必须等待后台进程(使用 Power BI Embedded 构建报告并生成它的图像),然后 return 将该图像提供给用户。

就我而言,后台进程非常适合使用 BackgroundService class as the hosted service, and a custom action to prepare the data and send it to the background service through a Channel.

的进程内后台服务

最后,工作完成后,服务 return 使用 Bot Framework SDK 中的 ContinueConversationAsync 方法向用户发送信息。

您可以在我的 GitHub repo. The relevant pieces are the custom action and the service 本身查看所有实施细节。