我正在编写一个 BotFramework 机器人,并将其与 Slack 和 Teams 集成,并且在一对一聊天中它运行得非常好。
我也想让它在群组频道中工作,但我不希望它回复每条评论(因为大多数回复都是“我不明白这个问题”) - 我使用的是 Luis对话框以及 FormFlow 表单和一些提示。
我最初在 MessagesController Post 方法中尝试了以下设置:
if (questionIsToMe(activity))
{
await Conversation.SendAsync(activity, () => new OctopusLuisDialog());
}
questionIsToMe
定义为:
private bool questionIsToMe(Activity activity)
{
// IsGroup is null => 1-1 conversation with non-group capable client
// IsGroup is False => 1-1 conversation within group capable client
// IsGroup is True AND message starts with OctoBot => group conversation with question
// to me
return !activity.Conversation.IsGroup.HasValue ||
!activity.Conversation.IsGroup.Value ||
(activity.Conversation.IsGroup.Value &&
activity.Text.StartsWith("OctoBot", StringComparison.InvariantCultureIgnoreCase));
}
这适用于大多数意图,但在用户响应 FormFlow 或 Prompts 时会导致问题 - 因为我需要在响应中包含“Octobot”以发送值,我可以从 FormFlow 中删除它,但是提示都失败了我的后备文本。
如何区分正常的频道聊天和对我的机器人问题的回答?