C# Bot框架:如何等待后台任务?

C# Bot框架:如何等待后台任务?,c#,botframework,chatbot,azure-bot-service,direct-line-botframework,C#,Botframework,Chatbot,Azure Bot Service,Direct Line Botframework,我希望作为Bot框架操作的一部分运行后台任务,例如运行Azure自动化作业或向人员发送批准请求。 目标是,只有后台任务完全完成后,bot才应该回复用户,在这种情况下,当Azure自动化作业成功完成或人员已批准请求时 我的机器人正在使用自定义的DirectLine通道,在该通道中,如果与用户的通信是异步的,则不会出现问题,用户不会期望机器人立即回复。 如何让Bot框架在向用户发送响应之前等待后台任务完成 您正在寻找的方法称为主动消息传递。首先保存对话引用,当后台任务完成时,可以利用此引用发送消息

我希望作为Bot框架操作的一部分运行后台任务,例如运行Azure自动化作业或向人员发送批准请求。 目标是,只有后台任务完全完成后,bot才应该回复用户,在这种情况下,当Azure自动化作业成功完成或人员已批准请求时

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

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


Microsoft文档:

您签出async/await了吗?嗨,乔纳斯,谢谢你的回复。是的,我做了,但我预计对我来说等待的时间会很长。根据自动化作业的类型或人员的可用性,在后台任务完成之前,时间可以从几分钟到几个小时不等。我相信async/await语句不会让我的bot等待这么久?由于我的机器人是在Azure功能上运行的,我也不想让机器人逻辑主动等待这么长时间,因为我要支付每秒的资源消耗。如果我误解了,请告诉我?谢谢,看来这确实可行!我是否仍然需要立即从bot向用户发回一条消息,上面写着“我正在处理这个问题,我完成后再给你回复”,或者在后端处理完成之前,是否可以不向用户返回任何内容?我更喜欢这样一个选项,在主动消息指示流程已完成之前,我不会向用户发送任何内容,由于我的频道类似于邮件,因此没有必要让机器人立即回复。我想我自己已经解决了最后一个问题:看起来我不必立即发送回复来确认收到了邮件,我只需将邮件转发给外部服务即可。每当外部服务完成时,它都可以使用主动消息在对话中回复用户。谢谢你的帮助!