我正在编写一个BotFramework机器人,并将它与Slack和Teams集成在一起,并且在一对一的聊天中它运行得非常好。
我也想让它在小组频道中发挥作用,但我不希望它回应每一条评论(因为大多数回复都是“我不明白这个问题”) - 我是使用Luis Dialog以及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或提示时会导致问题 - 因为我需要在响应中包含“Octobot”来发送值,我可以从中删除FormFlow,但提示全部都以我的后备文本失败。
如何区分正常的频道聊天和对我的机器人问题的回答?
答案 0 :(得分:2)
如果机器人被提及,它将显示在活动的实体字段中。
activity.Entities.Items [0] = {{ “提到”:{ “id”:“{你的bot slack id}”, “名字”:“{你的机器人名称}” }, “text”:“@ {your bot name}” }}
答案 1 :(得分:0)
无法知道何时将消息发送到您的机器人。您可以尝试: