アダプティブ ダイアログのイベントとトリガー
適用対象: 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 |
このトリガーは、QnAMakerRecognizer が QnAMatch の意図を返したときに実行されます。 エンティティ @answer は QnAMaker の回答を受け取ります。 |
不明な意図の認識 | 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 |
カスタム イベントが検出されたときに実行するアクション。 カスタム イベントを生成するには、カスタム イベント アクションを生成するを使用します。 |