私は BotFramework ボットを作成しており、Slack および Teams と統合しており、1 対 1 のチャットでは非常にうまく機能しています。
グループ チャネルでも機能させたいのですが、すべてのコメントに応答する必要はありません (ほとんどの応答は「質問がわかりませんでした」になるため) - 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 に応答しているときに問題が発生します。プロンプトはすべてフォールバック テキストで失敗します。
通常のチャネル チャットとボットの質問への応答を区別するにはどうすればよいですか?