アダプティブ ダイアログでの宣言型アセットの使用Using declarative assets in adaptive dialogs

この記事では、宣言型の方法を使用してアダプティブ ダイアログを組み込む宣言型アセットとボットの背後にある概念について説明します。This article explains the concepts behind declarative assets and bots that incorporate adaptive dialogs using the declarative approach. 宣言型アダプティブ ダイアログは、トリガーアクションを含め、アダプティブ ダイアログのすべての属性を記述する JSON ベースのファイルで構成されています。Declarative adaptive dialogs consist of JSON-based files that describe all of the attributes of adaptive dialogs, including their triggers and actions. これらの宣言ファイルはリソース マネージャーを使用して実行時に読み込まれ、アダプティブ ダイアログが作成されます。These declarative files are loaded at run time using the resource manager to create the adaptive dialogs.

前提条件Prerequisites

宣言ファイルDeclarative files

現在、宣言ファイルは、アダプティブ ダイアログのすべての属性が記述された .dialog ファイルと、ボットの言語生成 (LG) の側面が定義された LG テンプレートから成る .lg ファイルで構成されています。Declarative files currently consist of .dialog files that describe all of the attributes of an adaptive dialog and .lg files that consist of LG templates that define the language generation (LG) aspects of your bot.

.dialog ファイル.dialog files

拡張子が .dialog のアダプティブ ダイアログ宣言ファイルには、次の要素が含まれています。Adaptive dialog declarative files that have the .dialog extension contain the following elements:

  • $schema 値には、この宣言ファイルの形式が記述されたスキーマを指す URI が含まれています。The $schema value contains a URI pointing to the Schema that describes the format of this declarative file. そのスキーマは Bot Framework コンポーネント スキーマであり、JSON スキーマ ボキャブラリの draft 7 に準拠しています。That schema is a Bot Framework component schema, which adheres to draft 7 of the JSON schema vocabulary. このスキーマ ファイルを使用すると、宣言型の要素に対して IntelliSense が機能するようになります。This schema file enables IntelliSense to work for your declarative elements. このファイルの作成方法については、「宣言型アダプティブ ダイアログを使用してボットを作成する」の記事の「スキーマ ファイルの作成」を参照してください。For information on how to create this file, see Creating the schema file in the Create a bot using declarative adaptive dialogs article. スキーマ ファイルの名前は任意の有効なファイル名にすることができますが、通常は app.schema という名前です。The name of the schema file can be any valid filename, but is typically named app.schema.
  • $kind フィールドによって、このファイルに記述されているコンポーネントの種類が識別されます。The $kind field identifies the type of component described in this file. アダプティブ ダイアログの場合、$kindMicrosoft.AdaptiveDialog である必要があります。For an adaptive dialog, $kind must be Microsoft.AdaptiveDialog. サブオブジェクトでは、$kind によって、ダイアログの一部であるトリガーまたはアクションが識別されます。In subobjects, $kind identifies a trigger or action that is part of the dialog. このフィールドは、宣言型の方法を使用して機能するように設計された、Bot Framework SDK のすべてのクラスに関連付けられている [JsonProperty("$kind")] クラス属性と関連しています。This field correlates with the [JsonProperty("$kind")] class attribute that is associated with every class in the Bot Framework SDK that is designed to work using the declarative approach.
  • recognizer 値には、レコグナイザー タイプと 1 つ以上の意図の配列、およびオプションで 1 つ以上のエンティティの配列が含まれています。The recognizer value contains a recognizer type and an array of one or more intents and optionally an array of one or more entities.
  • generator 値には、この .dialog ファイルに定義されているアダプティブ ダイアログに関連付けられた .lg ファイルへのリンクが含まれています。The generator value contains a link to the .lg file associated with the adaptive dialog that this .dialog file defines.
  • triggers 値には、1 つ以上のトリガーの配列が含まれています。The triggers value contains an array of one or more triggers. トリガーの種類は、$kind キーワードを使用して宣言されます。The type of trigger is declared using the $kind keyword. 各トリガーには、1 つ以上のアクションの配列が含まれています。Each trigger contains an array of one or more actions.
  • actions 値には、1 つ以上のアクションの配列が含まれており、各アクションにはプロパティを関連付けることができます。The actions value contains an array of one or more actions, each action can have properties associated with it.

単純な .dialog ファイルの例:An example of a simple .dialog file:

{
  "$schema": "../app.schema",
  "$kind": "Microsoft.AdaptiveDialog",
  "generator": "multiTurnPrompt.lg",
  "recognizer": {
      "$kind": "Microsoft.RegexRecognizer",
      "intents": [
          {
              "intent": "CancelIntent",
              "pattern": "(?i)cancel"
          }
      ]
  },
  "triggers": [
    {
      "$kind": "Microsoft.OnUnknownIntent",
      "actions": [
        {
          "$kind": "Microsoft.SendActivity",
          "activity":  "You said '${turn.activity.text}'"
        }
      ]
    }
  ]
}

注意

$schema ファイルは、IntelliSense を機能させるものです。The $schema file is what enables IntelliSense to work. $schema キーワードが見つからない場合、または見つからないスキーマ ファイルを $schema 値で参照している場合でも警告やエラーは発生せず、IntelliSense 以外のすべてが想定どおりに機能します。No warning or error will occur if $schema keyword is missing or the $schema value references a schema file that cannot be found and everything except IntelliSense will still work as expected.

定義されている .dialog ファイルの要素:The elements of the .dialog file defined:

天気予報の作成ダイアログCreate Get Weather Dialog

.lg ファイル.lg files

拡張子が .lg のアダプティブ ダイアログ宣言ファイルの詳細については、「.lg ファイル形式」の記事を参照してください。Adaptive dialog declarative files that have the .lg extension are described in detail in the .lg file format article.

リソース エクスプローラーThe resource explorer

宣言型アダプティブ ダイアログ ファイルをボットにインポートして、ボットのソース コードで直接定義されたアダプティブ ダイアログであるかのように使用するために必要なツールは、リソース エクスプローラーに用意されています。The resource explorer provides the tools you need to import declarative adaptive dialog files into your bot and use them as if they were adaptive dialogs defined directly in your bot source code.

リソース エクスプローラーを使用すると、実行時にアダプティブ ダイアログを作成するために必要な宣言ファイルに関するすべての関連情報を含むリソース オブジェクトを作成できます。これは、拡張子が .dialog および .lg のファイルをインポートするリソース エクスプローラーの型ローダーを使用して行います。With the resource explorer, you can create resource objects that contain all of the relevant information about the declarative files required to create adaptive dialogs at run time, which is done using the resource explorer's type loader that imports files with the .dialog and .lg extensions.

リソース オブジェクトThe resource object

リソース エクスプローラーの "リソースの取得" メソッドを使用すると、宣言ファイルをリソース オブジェクトに読み込むことができます。The resource explorer's get resource method reads the declarative file into a resource object. リソース オブジェクトには宣言ファイルに関する情報が含まれており、型ローダーなど、それを参照する必要がある任意のプロセスで使用できます。The resource object contains the information about the declarative file and can be used by any process that needs to reference it, such as the type loader.

var resource = this.resourceExplorer.GetResource("main.dialog");

型ローダーThe type loader

リソースエクスプローラーのメソッドが _get resource_ 宣言ファイルをリソースオブジェクトに読み込むと、は _load type_method リソースをオブジェクトにキャストし AdaptiveDialog ます。Once the resource explorer's _get resource_ method reads the declarative file into a resource object, the _load type_method casts the resource to an AdaptiveDialog object. AdaptiveDialog オブジェクトは、ダイアログ マネージャーの作成時に使用される他の非宣言型アダプティブ ダイアログと同じように使用できます。The AdaptiveDialog object can be used the same as any other non-declarative adaptive dialog is used when creating a dialog manager.

dialogManager = new DialogManager(resourceExplorer.LoadType<AdaptiveDialog>(resource));

ファイルの変更時にダイアログを自動的にリロードするAuto reload dialogs when file changes

ボットの実行中に宣言ファイルが変更されるたびに、changed イベントが発生します。Any time a declarative file changes when your bot is running, a changed event fires. そのイベントをキャプチャし、宣言ファイルをリロードすることができます。こうすることで、アダプティブ ダイアログを更新する必要があるときに、コードを更新してソース コードを再コンパイルしたり、ボットを再起動したりする必要がなくなります。You can capture that event and reload your declarative files, that way when any adaptive dialog needs updated you do not need to update your code and recompile your source code or restart your bot. これは、運用環境で特に便利です。This can be especially useful in a production environment.

// auto reload the root dialog when it changes
this.resourceExplorer.Changed += (e, resources) =>
{
    if (resources.Any(resource => resource.Id == "main.dialog"))
    {
        Task.Run(() => this.LoadRootDialogAsync());
    }
};

private void LoadRootDialogAsync()
{
    var resource = this.resourceExplorer.GetResource("main.dialog");
    dialogManager = new DialogManager(resourceExplorer.LoadType<AdaptiveDialog>(resource));
}

VersionChangedイベントThe VersionChanged event

ファイルに加えられた変更に対応するために、宣言型アセットが再読み込みされた場合は、現在のメッセージ交換の状態を再評価して、 .dialog ダイアログのロジックに対する変更を考慮する必要がある場合があります。When your declarative assets have been reloaded to accommodate the changes made to a .dialog file, you may need to reevaluate the state of any current conversations to account of any changes to the logic of your dialog. ロジックへの変更は、メッセージ交換スタックをクリアして再起動するのと同じように簡単です。The changes to your logic may be as simple as to clear your conversation stack and restart. より高度なロジックを使用すると、データを保持したままダイアログを再起動するなどの操作を行うことができます。これにより、以前に存在していなかった新しいプロパティやパスを取得できます。More sophisticated logic would enable you to do things like restart a dialog keeping the data you have, allowing you to pick up new properties and or paths that didn't exist before.

DialogEvents.VersionChangedイベントは、トリガーを使用してキャプチャされ OnDialogEvent ます。The DialogEvents.VersionChanged event is captured using the OnDialogEvent trigger.

Triggers = new List<OnCondition>()
{
    new OnDialogEvent(DialogEvents.VersionChanged)
    {
        Actions = new List<Dialog>()
        {
            new SendActivity("The VersionChanged event fired.")
        }
    }
}

宣言型アセットDeclarative assets

Bot Framework SDK にはさまざまな宣言型アセットがあります。それらを以下に示します。The Bot Framework SDK has various declarative assets available, each will be listed below. これらのアセットは、.dialog ファイルで $kind 値として使用できます。These assets can be used in your .dialog files as the $kind value.

トリガーTriggers

このセクションには、種類ごとにグループ化されたすべてのトリガーが含まれています。This section contains all triggers, grouped by type:

基本トリガーBase trigger

$kind$kind value トリガー名Trigger Name このトリガーで実行される内容What this trigger does
Microsoft.OnCondition OnCondition OnCondition トリガーは、すべてのトリガーの派生元である基本トリガーです。The OnCondition trigger is the base trigger that all triggers derive from. アダプティブ ダイアログでトリガーを定義する場合、OnCondition トリガーの一覧として定義されます。When defining triggers in an adaptive dialog they are defined as a list of OnCondition triggers.

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

$kind の値$kind value トリガー名Trigger name 説明Description
Microsoft.OnChooseIntent OnChooseIntent このトリガーが実行されるのは、CrossTrainedRecognizerSet 内の複数の認識エンジンから取得された意図の間にあいまいさが検出された場合です。This trigger is run when ambiguity has been detected between intents from multiple recognizers in a CrossTrainedRecognizerSet.
Microsoft.OnIntent OnIntent 指定した意図が認識されたときに実行するアクション。Actions to perform when specified intent is recognized.
Microsoft.OnQnAMatch OnQnAMatch このトリガーは、QnAMakerRecognizerQnAMatch の意図を返したときに実行されます。This trigger is run when the QnAMakerRecognizer has returned a QnAMatch intent. エンティティ @answer は QnAMaker の回答を受け取ります。The entity @answer will have the QnAMaker answer.
Microsoft.OnUnknownIntent OnUnknownIntent ユーザー入力が認識されない場合や、どの OnIntent トリガーでも一致が見つからなかった場合に実行するアクション。Actions to perform when user input is unrecognized or no match is found in any of the OnIntent triggers.

ダイアログ イベント トリガーDialog event triggers

$kind の値$kind value トリガー名Trigger name 説明Description
Microsoft.OnBeginDialog OnBeginDialog このダイアログの開始時に実行するアクション。Actions to perform when this dialog begins. 子ダイアログでのみ使用します。For use with child dialogs only.
Microsoft.OnCancelDialog OnCancelDialog このイベントを使用すると、CancelAllDialogs アクションを実行中の子ダイアログが原因で、現在のダイアログがキャンセルされるのを防止できます。This event allows you to prevent the current dialog from being cancelled due to a child dialog executing a CancelAllDialogs action.
Microsoft.OnEndOfActions OnEndOfActions このイベントは、アクションとあいまいなイベントがすべて処理されると発生します。This event occurs once all actions and ambiguity events have been processed.
Microsoft.OnError OnError Error ダイアログ イベントが発生したときに実行するアクション。Action to perform when an Error dialog event occurs. このイベントは、現在のダイアログが終了するのを防ぐという点で OnCancelDialog に似ています。この場合は、子ダイアログのエラーが原因です。This event is similar to OnCancelDialog in that you are preventing the current dialog from ending, in this case due to an error in a child dialog.
Microsoft.OnRepromptDialog OnRepromptDialog RepromptDialog イベントが発生したときに実行するアクション。Actions to perform when RepromptDialog event occurs.

重要

問題を発生させる可能性があるため、ルート ダイアログでは OnBeginDialog トリガーを使用しないでください。Do not use the OnBeginDialog trigger in your root dialog as it can potentially cause problems. 代わりに、ルート ダイアログの実行時に起動する OnUnknownIntent トリガーを使用できます。You can instead use the OnUnknownIntent trigger which will fire when your root dialog runs.

ヒント

ほとんどの子ダイアログには、BeginDialog イベントに応答する OnBeginDialog トリガーが含まれています。Most child dialogs include an OnBeginDialog trigger that responds to the BeginDialog event. このトリガーは、ダイアログの開始時に自動的に発生します。これによってボットは、ウェルカム メッセージやユーザー入力のためのプロンプトを使って直ちに応答できます。This trigger automatically fires when the dialog begins, which can allow the bot to respond immediately with a welcome message or a prompt for user input.

宣言を使用したダイアログ イベント トリガーの例Dialog event trigger example using declarative
{
    "$schema": "../app.schema",
    "$kind": "Microsoft.AdaptiveDialog",
    "triggers": [
        {
            "$kind": "Microsoft.OnBeginDialog",
            "actions": [
                {
                    "$kind": "Microsoft.SendActivity",
                    "activity": "Hello world!"
                }
            ]
        }
    ]
}

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

アクティビティ トリガーを使用すると、新しいユーザーが参加し、ボットが新しい会話を開始するときなど、クライアントからのすべての受信アクティビティにアクションを関連付けることができます。Activity triggers enable you to associate actions to any incoming activity from the client such as when a new user joins and the bot begins a new conversation. アクティビティに関する追加情報については、Bot Framework アクティビティ スキーマに関するページを参照してください。Additional information on activities can be found in Bot Framework Activity schema.

$kind の値$kind value トリガー名Trigger name 説明Description
Microsoft.OnConversationUpdateActivity OnConversationUpdateActivity ユーザーがボットとの新しい会話を開始すると発生するイベントを処理します。Handle the events fired when a user begins a new conversation with the bot.
Microsoft.OnEndOfConversationActivity OnEndOfConversationActivity EndOfConversation 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type EndOfConversation.
Microsoft.OnEventActivity OnEventActivity Event 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type Event.
Microsoft.OnHandoffActivity OnHandoffActivity HandOff 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type HandOff.
Microsoft.OnInvokeActivity OnInvokeActivity Invoke 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type Invoke.
Microsoft.OnTypingActivity OnTypingActivity Typing 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type Typing.

メッセージ イベント トリガーMessage event triggers

メッセージ イベントのトリガーを使用すると、メッセージが更新されたとき (MessageUpdate) や削除されたとき (MessageDeletion)、または他のユーザーがメッセージに応答したとき (MessageReaction) など、どのようなメッセージ イベントにも対応できます (たとえば、よくあるメッセージの反応には、いいね!、ハート、笑い、驚いた、悲しい、怒った、といった反応が含まれます)。Message event triggers allow you to react to any message event such as when a message is updated (MessageUpdate) or deleted (MessageDeletion) or when someone reacts (MessageReaction) to a message (for example, some of the common message reactions include a Like, Heart, Laugh, Surprised, Sad and Angry reactions).

メッセージ イベントは一種のアクティビティ イベントであり、そのためすべてのメッセージ イベントには基本イベント ActivityReceived があり、ActivityType によってさらに細分化されます。Message events are a type of activity event and as such, all message events have a base event of ActivityReceived and are further refined by ActivityType. すべてのメッセージ トリガーの派生元になっている基底クラスは OnActivity です。The Base class that all message triggers derive from is OnActivity.

$kind の値$kind value トリガー名Trigger name 説明Description
Microsoft.OnMessageActivity OnMessageActivity MessageReceived 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type MessageReceived.
Microsoft.OnMessageDeleteActivity OnMessageDeleteActivity MessageDelete 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type MessageDelete.
Microsoft.OnMessageReactionActivity OnMessageReactionActivity MessageReaction 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type MessageReaction.
Microsoft.OnMessageUpdateActivity OnMessageUpdateActivity MessageUpdate 型のアクティビティの受信時に実行するアクション。Actions to perform on receipt of an activity with type MessageUpdate.

カスタム イベント トリガーCustom event triggers

任意のトリガーに EmitEvent アクションを追加することによって、独自のイベントを出力できます。その後、ボットの任意のダイアログで、任意のトリガー内に_カスタム イベント_ トリガーを定義することで、そのカスタム イベントを処理できます。You can emit your own events by adding the EmitEvent action to any trigger, then you can handle that custom event in any trigger in any dialog in your bot by defining a custom event trigger. カスタム イベント トリガーは OnDialogEvent トリガーの一種であり、その "イベント" プロパティは、出力イベントの "イベント名" プロパティと同じ値に設定されます。A custom event trigger is a type of OnDialogEvent trigger, where its event property to the same value as the emit event's event name property.

ヒント

出力イベントの "バブル イベント" プロパティを true に設定することによって、ボット内の他のダイアログでカスタム イベントを処理することができます。You can allow other dialogs in your bot to handle your custom event by setting the emit event's bubble event property to true.

$kind の値$kind value トリガー名Trigger name 説明Description
Microsoft.OnDialogEventMicrosoft.OnDialogEvent OnDialogEventOnDialogEvent カスタム イベントが検出されたときに実行するアクション。Actions to perform when a custom event is detected. カスタム イベントを出力する アクションを使用してカスタム イベントを発生させます。Use Emit a custom event' action to raise a custom event.

ActionsActions

このセクションには、種類ごとにグループ化されたすべてのアクションが含まれています。This section contains all actions, grouped by type:

応答を送信するSend a response

$kind$kind value アクション名Action Name このアクションで実行することWhat this action does
Microsoft.SendActivity SendActivitySendActivity ユーザーへの応答など、任意の種類のアクティビティを送信できます。Enables you send any type of activity such as responding to users.

ユーザー入力の要求Requesting user input

$kind$kind value 入力クラスInput class 説明Description 戻り値Returns
Microsoft.AttachmentInput AttachmentInputAttachmentInput ファイルのアップロードをユーザーに要求または許可するために使用されます。Used to request/enable a user to upload a file. 添付ファイル オブジェクトのコレクション。A collection of attachment objects.
Microsoft.ChoiceInput ChoiceInputChoiceInput 一連のオプションからの選択を要求するために使用されます。Used to asks for a choice from a set of options. 選択の値またはインデックス。The value or index of the selection.
Microsoft.ConfirmInput ConfirmInputConfirmInput ユーザーからの 確認を要求するために使用されます。Used to request a confirmation from the user. ブール値です。A Boolean value.
Microsoft.DateTimeInput DateTimeInputDateTimeInput 日付または時刻をユーザーに要求するために使用されます。Used to ask your users for a date and or time. 日時オブジェクトのコレクション。A collection of date-time objects.
Microsoft.InputDialog InputDialogInputDialog これは、すべての入力クラスの派生元である基底クラスです。This is the base class that all of the input classes derive from. すべての共有プロパティを定義します。It defines all shared properties.
Microsoft.NumberInput NumberInputNumberInput 数値をユーザーに要求するために使用されます。Used to ask your users for a number. 数値。A numeric value.
Microsoft.OAuthInput OAuthInputOAuthInput セキュリティで保護されたサイトへのサインインをユーザーに許可するために使用されます。Used to enable your users to sign into a secure site. トークン応答。A token response.
Microsoft.TextInput TextInputTextInput 語または文をユーザーに要求するために使用されます。Used to ask your users for a word or sentence. 文字列。A string.

条件を作成するCreate a condition

実行するアクティビティActivity to accomplish $kind$kind value アクション名Action Name このアクションで実行することWhat this action does
分岐: if/elseBranch: if/else Microsoft.IfCondition IfConditionIfCondition 条件が true の場合にのみコードを実行するために使用する If および If-Else ステートメントを作成するために使用します。Used to create If and If-Else statements which are used to execute code only if a condition is true.
分岐:Switch (複数のオプション)Branch: Switch (Multiple options) Microsoft.SwitchCondition SwitchConditionSwitchCondition 複数選択メニューを構築するために使用します。Used to build a multiple-choice menu.
ループ: 項目ごとLoop: for each item Microsoft.Foreach ForEachForEach 配列に格納されている一連の値をループします。Loop through a set of values stored in an array.
ループ: ページごと (複数の項目)Loop: for each page (multiple items) Microsoft.ForeachPage ForEachPageForEachPage 一度に 1 ページずつ、配列に格納されている大きな一連の値をループします。Loop through a large set of values stored in an array one page at a time.
ループを終了するExit a loop Microsoft.BreakLoop BreakLoopBreakLoop ループから抜け出します。Break out of a loop.
ループを続行するContinue a loop Microsoft.ContinueLoop ContinueLoopContinueLoop ループを続行します。Continue the loop.
別のアクションに移動するGoto a different Action Microsoft.GotoAction GotoActionGotoAction 指定されたアクションにすぐに移動し、実行を続行します。Immediately goes to the specified action and continues execution. actionId によって決定されます。Determined by actionId.

ダイアログ管理Dialog management

$kind$kind value アクション名Action Name このアクションで実行することWhat this action does
Microsoft.BeginDialog BeginDialogBeginDialog 別のダイアログの実行を開始します。Begins executing another dialog. そのダイアログが終了すると、現在のトリガーの実行が再開されます。When that dialog finishes, the execution of the current trigger will resume.
Microsoft.CancelDialog CancelDialog アクティブなダイアログを取り消します。Cancels the active dialog. ダイアログをすぐに閉じるときに (それが処理中の停止を意味する場合でも) 使用します。Use when you want the dialog to close immediately, even if that means stopping mid-process.
Microsoft.CancelAllDialogs CancelAllDialogsCancelAllDialogs アクティブな親ダイアログを含むすべてのアクティブなダイアログを取り消します。Cancels all active dialogs including any active parent dialogs. スタックからすべてのダイアログを取り出す場合にこれを使用し、ダイアログ コンテキストの cancel all dialogs メソッドを呼び出すことで、ダイアログ スタックをクリアできます。Use this if you want to pop all dialogs off the stack, you can clear the dialog stack by calling the dialog context's cancel all dialogs method. CancelAllDialogs イベントが生成されます。Emits the CancelAllDialogs event.
Microsoft.EndDialog EndDialogEndDialog アクティブなダイアログを終了します。Ends the active dialog. ダイアログを完了し、終了する前に結果を返す場合に使用します。Use when you want the dialog to complete and return results before ending. EndDialog イベントが生成されます。Emits the EndDialog event.
Microsoft.EndTurn EndTurnEndTurn ダイアログを終了せずに、会話の現在のターンを終了します。Ends the current turn of conversation without ending the dialog.
Microsoft.RepeatDialog RepeatDialogRepeatDialog 親ダイアログを再起動するために使用します。Used to restart the parent dialog.
Microsoft.ReplaceDialog ReplaceDialogReplaceDialog 現在のダイアログを新しいダイアログに置き換えますReplaces the current dialog with a new dialog
Microsoft.UpdateActivity UpdateActivityUpdateActivity これにより、送信されたアクティビティを更新できます。This enables you to update an activity that was sent.
Microsoft.DeleteActivity DeleteActivityDeleteActivity 送信されたアクティビティを削除できます。Enables you to delete an activity that was sent.
Microsoft.GetActivityMembers GetActivityMembersGetActivityMembers アクティビティのメンバーの一覧を取得し、それをメモリ内のプロパティに保存できます。Enables you to get a list of activity members and save it to a property in memory.
Microsoft.GetConversationMembers GetConversationMembersGetConversationMembers 会話のメンバーの一覧を取得し、それをメモリ内のプロパティに保存できます。Enables you to get a list of the conversation members and save it to a property in memory.
Microsoft.EditActions EditActionsEditActions ユーザー入力に基づいて、現在のアクション シーケンスをすぐに編集できます。Enables you to edit the current action sequence on the fly based on user input. 中断を処理する場合に特に便利です。Especially useful when handling interruptions.

プロパティの管理Manage properties

$kind$kind value アクション名Action Name このアクションで実行することWhat this action does
Microsoft.EditArray EditArrayEditArray これにより、配列に対して編集操作を実行できます。This enables you to perform edit operations on an array.
Microsoft.DeleteProperty DeletePropertyDeleteProperty これにより、メモリからプロパティを削除できます。This enables you to remove a property from memory.
Microsoft.DeleteProperties DeletePropertiesDeleteProperties これにより、1 回のアクションで複数のプロパティを削除できます。This enables you to delete more than one property in a single action.
Microsoft.SetProperty SetPropertySetProperty これにより、メモリにプロパティの値を設定できます。This enables you to set a property's value in memory.
Microsoft.SetProperties SetPropertiesSetProperties これにより、1 回のアクションで 1 つ以上のプロパティを初期化できます。This enables you to initialize one or more properties in a single action.

外部リソースにアクセスするAccess external resources

$kind$kind value アクション名Action Name このアクションで実行することWhat this action does
Microsoft.BeginSkill BeginSkillBeginSkill アダプティブ スキル ダイアログを使用して、スキルを実行します。Use the adaptive skill dialog to run a skill.
Microsoft.HttpRequest HttpRequestHttpRequest 任意のエンドポイントに対して HTTP 要求を行うことができます。Enables you to make HTTP requests to any endpoint.
Microsoft.EmitEvent EmitEventEmitEvent カスタム トリガーを使用して、ボットが応答できるカスタム イベントを発生させることができます。Enables you to raise a custom event that your bot can respond to using a custom trigger.
Microsoft.SignOutUser SignOutUserSignOutUser 現在サインインしているユーザーをサインアウトできます。Enables you to sign out the currently signed in user.

デバッグ オプションDebugging options

$kind$kind value アクション名Action Name このアクションで実行することWhat this action does
Microsoft.LogAction LogActionLogAction コンソールに書き込み、必要に応じて、メッセージをトレース アクティビティとして送信します。Writes to the console and optionally sends the message as a trace activity.
Microsoft.TraceActivity TraceActivityTraceActivity 指定した任意のペイロードで、トレース アクティビティを送信します。Sends a trace activity with whatever payload you specify.

認識エンジンRecognizers

Bot Framework SDK には、約10個の異なるレコグナイザーが用意されています。ダイアログファイルで使用する認識エンジンを指定します。次に例を示します。The Bot Framework SDK provides over a half dozen different recognizers, you specify which recognizer to use in the .dialog file, for example:

{
    "$schema": "../app.schema",
    "$kind": "Microsoft.AdaptiveDialog",
    "recognizer": {
        "$kind": "Microsoft.RegexRecognizer",
        "intents": [
            {
                "intent": "JokeIntent",
                "pattern": "(?i)joke"
            },
            {
                "intent": "FortuneTellerIntent",
                "pattern": "(?i)fortune|future"
            },
            {
                "intent": "CancelIntent",
                "pattern": "(?i)cancel"
            }
        ]
    },
    ...
}

アダプティブ ダイアログでは、以下の認識エンジンがサポートされています。Adaptive dialogs support the following recognizers:

ジェネレーターGenerators

generator 値には、この .dialog ファイルに定義されているアダプティブ ダイアログに関連付けられた .lg ファイルへのリンクが含まれています。The generator value contains a link to the .lg file associated with the adaptive dialog that this .dialog file defines. 次に例を示します。For example:

{
    "$schema": "../app.schema",
    "$kind": "Microsoft.AdaptiveDialog",
    "generator": "MyBotGeneratorFile.lg",
    ...
}

関連情報Additional information