アダプティブ ダイアログのイベントとトリガー

この記事の対象: SDK v4

このトピックの概要については、「Composer ドキュメントのトリガーの概念に関する記事」を参照してください。

認識エンジンのイベント トリガー

Note

Azure AI QnA Maker は 2025 年 3 月 31 日に廃止されます。 2022 年 10 月 1 日以降、新しい QnA Maker リソースまたはナレッジ ベースを作成できなくなります。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。

Azure AI Language の機能であるカスタム質問応答は、QnA Maker サービスの更新バージョンです。 Bot Framework SDK での質問と回答のサポートの詳細については、「自然言語の理解」を参照してください。

イベントの原因 トリガー名 基本イベント 説明
意図の選択 OnChooseIntent ChooseIntent このトリガーが実行されるのは、CrossTrainedRecognizerSet 内の複数の認識エンジンから取得された意図の間にあいまいさが検出された場合です。
意図の認識 OnIntent RecognizedIntent 指定した意図が認識されたときに実行するアクション。
QnAMatch の意図 OnQnAMatch RecognizedIntent このトリガーは、QnAMakerRecognizerQnAMatch の意図を返したときに実行されます。 エンティティ @answerQnAMaker の回答を受け取ります。
不明な意図の認識 OnUnknownIntent UnknownIntent ユーザー入力が認識されない場合や、どの OnIntent トリガーでも一致が見つからなかった場合に実行するアクション。 これを OnBeginDialog の代わりにルート ダイアログの最初のトリガーとして使用し、ダイアログが最初に開始されたときに、必要な任意のタスクを実行することもできます。

OnIntent トリガーを使用すると、recognizedIntent イベントを処理できます。 認識エンジンによって recognizedIntent イベントが発生します。 QnA Maker 認識エンジンを除き、Bot Framework SDK のすべての組み込み認識エンジンは、ボットが適切に応答できるようにユーザー入力を正常に識別したときにこのイベントを発行します。

他のどのトリガーでも recognizedIntent イベントがキャッチおよび処理されない場合に、OnUnknownIntent トリガーを使用してキャッチして応答します。 これは、ハンドルされない意図 ("none" を含む) によってトリガーされる可能性があることを意味しますが、ダイアログに対して現在実行中のアクションがない場合にのみトリガーされます。 OnUnknownIntent トリガーを使用して、"none" 意図が発生したときにキャッチして応答します。 OnIntent トリガーを使用して "none" 意図を処理すると、予期しない結果が発生する可能性があります。

ダイアログ イベント トリガー

ダイアログ トリガーは、ダイアログのライフサイクルに関連するダイアログ固有のイベントを処理します。 Bot Framework SDK には現在 6 つのダイアログ トリガーがあり、これらはすべて OnDialogEvent クラスから派生しています。

ヒント

これらは、ハンドラー アクションの完了後に子のアクションが引き続き実行される通常の中断イベント ハンドラーとは似ていません。 以下のすべてのイベントについて、ボットは新しい一連のアクションを実行し、いったんそれらのアクションが完了すると実行を終了します。

トリガー名 基本イベント 説明
OnBeginDialog BeginDialog このダイアログの開始時に実行するアクション。 ルート ダイアログで使用するのではなく、子ダイアログでのみ使用する場合は、OnUnknownIntent を使用してダイアログ初期化アクティビティを実行します。
OnCancelDialog CancelDialog このイベントを使用すると、CancelAllDialogs アクションを実行中の子ダイアログが原因で、現在のダイアログがキャンセルされるのを防止できます。
OnEndOfActions EndOfActions このイベントは、アクションとあいまいなイベントがすべて処理されると発生します。
OnError Error Error ダイアログ イベントが発生したときに実行するアクション。 このイベントは、このトリガーを含むアダプティブ ダイアログが終了しないようにしている点で OnCancelDialog に似ています。この場合は子ダイアログのエラーが原因です。
OnRepromptDialog RepromptDialog RepromptDialog イベントが発生したときに実行するアクション。
OnDialog DialogEvents.VersionChanged

アクティビティ イベント トリガー

アクティビティ トリガーを使用すると、新しいユーザーが参加し、ボットが新しい会話を開始するときなど、クライアントからのすべての受信アクティビティにアクションを関連付けることができます。 アクティビティに関する追加情報については、Bot Framework アクティビティ スキーマに関するページを参照してください。

すべてのアクティビティ イベントには基本イベント ActivityReceived があり、アクティビティの種類によってさらに細分化されます。 すべてのアクティビティ トリガーの派生元になっている基底クラスは OnActivity です。

イベントの原因 ActivityType トリガー名 説明
あいさつ ConversationUpdate OnConversationUpdateActivity ボットまたはユーザーが会話に参加または会話を離れたときに、conversationUpdate アクティビティの受信時に実行するアクション。
会話の終了 EndOfConversation OnEndOfConversationActivity endOfConversation アクティビティの受信時に実行するアクション。
受信されたイベント Event OnEventActivity event アクティビティの受信時に実行するアクション。
人間への引き継ぎ Handoff OnHandoffActivity handOff アクティビティの受信時に実行するアクション。
会話の呼び出し Invoke OnInvokeActivity invoke アクティビティの受信時に実行するアクション。
ユーザーが入力中 Typing OnTypingActivity typing アクティビティの受信時に実行するアクション。

メッセージ イベント トリガー

メッセージ イベントのトリガーを使用すると、メッセージが更新されたとき (MessageUpdate) や削除されたとき (MessageDeletion)、または他のユーザーがメッセージに応答したとき (MessageReaction) など、どのようなメッセージ イベントにも対応できます (たとえば、よくあるメッセージの反応には、いいね!、ハート、笑い、驚いた、悲しい、怒った、といった反応が含まれます)。

メッセージ イベントは一種のアクティビティ イベントであり、そのためすべてのメッセージ イベントには基本イベント ActivityReceived があり、"アクティビティの種類" によってさらに細分化されます。 すべてのメッセージ トリガーの派生元になっている基底クラスは OnActivity です。

イベントの原因 ActivityType トリガー名 説明
受信したメッセージ Message OnMessageActivity MessageReceived 型のアクティビティの受信時に実行するアクション。
メッセージの削除 MessageDeletion OnMessageDeleteActivity MessageDelete 型のアクティビティの受信時に実行するアクション。
メッセージの反応 MessageReaction OnMessageReactionActivity MessageReaction 型のアクティビティの受信時に実行するアクション。
メッセージの更新 MessageUpdate OnMessageUpdateActivity MessageUpdate 型のアクティビティの受信時に実行するアクション。

カスタム イベント トリガー

任意のトリガーに EmitEvent アクションを追加することによって、独自のイベントを出力できます。その後、ボットの任意のダイアログで、任意のトリガー内にカスタム イベント トリガーを定義することで、そのカスタム イベントを処理できます。 カスタム イベント トリガーは、Event プロパティを EmitEvent の EventName プロパティと同じ値に設定したときに実際にカスタム トリガーになる OnDialogEvent トリガーです。

ヒント

EmitEvent の BubbleEvent プロパティを true に設定することによって、ボット内の他のダイアログでカスタム イベントを処理することができます。

イベントの原因 トリガー名 基底クラス 説明
カスタム イベント OnDialogEvent OnCondition カスタム イベントが検出されたときに実行するアクション。 カスタム イベントを出力する アクションを使用してカスタム イベントを発生させます。