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

適用対象: SDK v4

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

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

注意

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 トリガー名 説明
Greeting 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 カスタム イベントが検出されたときに実行するアクション。 カスタム イベントを生成するには、カスタム イベント アクションを生成するを使用します。