问题陈述:
当自定义事件发送到机器人时,我想从 MessageController 调用对话框。
设置:
我有一个使用 Microsoft Bot Framework [v3.15.3] 构建的机器人
我有一组自定义事件,这些事件从外部系统发送到机器人,以通知机器人并要求它执行操作。
[例如,MarkUserAsOfflineInBackEndStore ShowExternalActionCompletedMessageToUser]
我的用户使用具有网络聊天连接的门户网站连接到机器人。这还会向机器人发送自定义事件,以通知机器人有关用户操作
[示例UserClickedOnLogoutFromSite,userNavigatedToDifferentPage]
对于这些事件,机器人也必须采取一些行动。
问题陈述:
从我的消息控制器,我必须根据传入的不同事件重定向到不同的对话框。我当前的设置如下:
using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
{
if (activity.Type == ActivityTypes.Event)
{
var eventDialog = GetEventDialog(scope, activity);
if (eventDialog != null)
{
await Conversation.SendAsync(activity, () => eventDialog).ConfigureAwait(false);
}
}
else
{
await Conversation.SendAsync(activity, () => scope.Resolve<RootDialog>()).ConfigureAwait(false);
}
}
我希望用户能够与机器人交谈而不会出错,而不管正在发生的事件如何。这意味着如果机器人正在等待使用context.Wait(...)事件的用户输入,则不应导致意外行为。
我探索了使用调用对话框,context.Call但找不到在 messagecontroller 中获取上下文引用的推荐方法。
在此处寻找有关如何设置代码的建议。在我的基本场景中,当我一次发送一个消息,一次发送一个事件而无需等待时,它似乎工作正常。但是通过复杂的对话框,我得到“对不起,我的机器人代码有错误”。
FFIVE
相关分类