クラシック Watson Assistant エクスペリエンスの資料が移動しました。 最新バージョンについては、 ダイアログの作成を参照してください。
ダイアログの作成
ダイアログでは、アシスタントが顧客に返す応答メッセージを定義します。
ダイアログの作成
ダイアログを作成するには、以下の手順を実行します。
-
スキルのメニューにある**「ダイアログ (Dialog)」**をクリックします。
次のノードが自動的に作成されます。
- Welcome: 最初のノード。 初めてアシスタントを使用したユーザーに表示されるあいさつが含まれています。 あいさつは編集できます。
このノードは、ユーザーが開始したダイアログ・フローではトリガーされません。 例えば、Facebook や Slack などのチャネルとの統合で使用されるダイアログは、
welcome
という特殊条件を持つノードをスキップします。- Anything else: 最終ノード。 ユーザー入力が認識されないときにユーザーへの応答に使用されるフレーズが含まれています。 用意されている応答を置き換えたり、同じような意味の応答を追加してダイアログにバリエーションを追加したりできます。 また、アシスタントから各応答を定義順序どおりに返すか、ランダムな順序で返すかを選択することもできます。
これらの組み込みノードについて詳しくは、ダイアログの開始と終了を参照してください。
-
ダイアログ・ツリーにノードを追加するには、**「ノードの追加」**をクリックします。
新規ノードが、Welcome ノードの後で、Anything else ノードの前に追加されます。
-
ノードに名前を追加します。
ノードが何をするのかを示す、短くてわかりやすい説明をノード名として使用してください。 例えば、
Open an account
、Get policy information
、またはGet a weather forecast
などです。名前は最大 512 文字にすることができます。
このノード名は、このダイアログ・ブランチの目的を示すために、顧客やサービス・デスク担当者に対して表示されるものです。幾らかの時間をかけて、簡潔で分かりやすい名前を追加してください。
-
**「アシスタントが認識する場合 (If assistant recognizes)」**フィールドに、アシスタントをトリガーしてノードを処理する条件を入力します。
まず、通常はインテントを条件として追加できます。 例えば、ここで
#open_account
を追加する場合、それは「ユーザー入力からユーザーがアカウントの開設を求めていることが分かったら、このノードに指定された応答をそのユーザーに返す」ということを指定していることになります。条件の定義を開始すると、ボックスが表示され、オプションが示されます。 次のいずれかの文字を入力し、表示されたオプションのリストから値を選択できます。
文字 | これらの成果物タイプの定義済みの値がリストされます。 |
---|---|
`#` | インテント |
`@` | エンティティ |
`@{entity-name}:` | {entity-name} の値 |
`$` | ダイアログ内の他の場所で定義または参照したコンテキスト変数 |
新しいインテント、エンティティー、エンティティー値、またはコンテキスト変数を作成するには、それを使用する新しい条件を定義します。 この方法で成果物を作成する場合は、成果物を完全に作成するために必要なその他の手順 (インテントのサンプル発話の定義など) に戻り、確実に完了させてください。
複数の条件に基づいてトリガーするノードを定義するには、条件を 1 つ入力した後に、その隣にある正符号 (+) アイコンをクリックします。 複数の条件に OR
演算子の代わりに AND
演算子を適用する場合は、フィールドの間に表示される and
をクリックして、演算子タイプを変更します。 AND 演算は OR 演算より前に実行されますが、括弧を使用するとその順序を変更できます。 以下に例を示します。
$isMember:true AND ($memberlevel:silver OR $memberlevel:gold)
定義する条件は、2,048 文字未満でなければなりません。
条件の値をテストする方法について詳しくは、[条件](#dialog-overview-conditions)を参照してください。
-
オプション: このノードでユーザーから複数の情報を収集するには、「カスタマイズ」をクリックし、「スロット」を有効にします。 詳しくは、スロットを使用した情報の収集を参照してください。
-
応答を入力します。
- アシスタントが応答としてユーザーに表示するテキストまたはマルチメディア要素を追加します。
- 特定の条件に基づいて、さまざまな応答を定義する場合は、**「カスタマイズ (Customize)」をクリックし、「複数の応答 (Multiple responses)」**を有効にします。
- 条件付き応答、リッチ応答、応答に種類を追加する方法については、応答を参照してください。
-
現行ノードが処理された後に行う処理を指定します。 以下のオプションから選択できます。
- ユーザー入力を待機する (Wait for user input): ユーザーから新しい入力が提供されるまで、アシスタントは一時停止します。
- ユーザー入力をスキップする (Skip user input): アシスタントは直接、最初の子ノードにジャンプします。 このオプションは、現行ノードに少なくとも 1 つの子ノードがある場合にのみ使用可能です。
- ジャンプする (Jump to): アシスタントは、指定されたノードを処理してダイアログを続けます。 アシスタントでターゲット・ノードの条件を評価するか、ターゲット・ノードの応答まで直接スキップするかを選択できます。 詳しくは、Jump to アクションの構成を参照してください。
-
オプション: 実行時にノード選択のセットがユーザーに示されてユーザーの目的に最も合うものを選出するようユーザーが求められたときにこのノードが考慮されるようにするには、このノードが扱うユーザーの目的の簡略説明を**「external node name」**フィールドに追加します。 例えば、*「アカウントを開く」*などです。
「外部ノード名」フィールドは、有料プランのユーザーにのみ表示されます。 詳しくは、明確化を参照してください。
-
さらにノードを追加するには、ツリー内のノードを選択してから、「その他」 アイコンをクリックします。
- 既存のノードの条件が満たされていない場合に次にチェックするピア・ノードを作成するには、「ノードを下に追加」を選択します。
- 既存のノードの条件をチェックする前にチェックするピア・ノードを作成するには、「ノードを上に追加」を選択します。
- 選択したノードの子ノードを作成するには、「子ノードを追加」を選択します。 子ノードはその親ノードの後に処理されます。
- 現在のノードをコピーするには、**「重複」**を選択します。
ダイアログ・ノードの処理順序については、ダイアログの概要を参照してください。
-
ダイアログを作成したら、そのダイアログをテストします。
詳しくは、ダイアログのテストを参照してください。
条件
ノード条件により、そのノードを会話で使用するかどうかが決まります。 応答条件により、ユーザーに返す応答が決まります。
条件に関してさらに拡張された操作を実行するためのヒントは、条件の使用上のヒントを参照してください。
条件成果物
条件を定義するには、次の成果物を 1 つ以上組み合わせて使用します。
-
コンテキスト変数: ノードは、指定したコンテキスト変数式が true の場合に使用されます。
$variable_name:value
または$variable_name == 'value'
という構文を使用します。ノード条件では、この成果物タイプは通常、演算子 AND または OR、および別の条件値と共に使用されます。 これは、ユーザー入力の中にノードをトリガーする要素が含まれている必要があるためです。コンテキスト変数値が一致しただけでは、ノードをトリガーするために不十分です。 例えば、ユーザー入力オブジェクトがコンテキスト変数値を何かの方法で設定する場合などに、ノードがトリガーされます。
コンテキスト変数値を設定するダイアログ・ノードと同じノードに、そのコンテキスト変数値に基づくノード条件を定義しないでください。
応答条件では、この成果物タイプを単独で使用できます。 特定のコンテキスト変数値に基づいて応答を変えることができます。 例えば、
$city:Boston
は、$city
コンテキスト変数に値Boston
が含まれているかどうかを検査します。 含まれている場合は、応答が返されます。コンテキスト変数について詳しくは、コンテキスト変数を参照してください。
-
エンティティー: ノードは、ユーザー入力でエンティティー値またはシノニムが認識された場合に使用されます。 構文
@entity_name
を使用します。 例えば、@city
は、@city エンティティーとして定義されている都市名がユーザー入力に検出されたかどうかを検査します。 検出されている場合は、ノードまたは応答が処理されます。エンティティー値もシノニムも認識されないケースを処理するピア・ノードを作成することを検討してください。
エンティティーについて詳しくは、エンティティーの定義を参照してください。
-
エンティティー値: ノードは、ユーザー入力でエンティティー値が検出された場合に使用されます。 構文
@entity_name:value
を使用して、シノニムではなく、エンティティーの定義済みの値を指定します。 例えば、@city:Boston
は特定の都市名Boston
がユーザー入力で検出されたかどうかを検査します。ピア・ノードで特定の値を指定せずにエンティティーの存在を検査する場合は、必ず、エンティティーの存在のみを検査するピア・ノードより前に、このノード (特定のエンティティー値を検査するノード) を配置してください。 そうしないと、このノードは評価されません。
エンティティーがキャプチャー・グループを持つパターン・エンティティーである場合は、特定のグループ値との一致がないかを検査できます。 例えば、次の構文を使用できます。
@us_phone.groups[1] == '617'
詳しくは、 入力に含まれるパターン・エンティティー・グループの保管と認識を参照してください。 -
インテント: 最も単純な条件は単一のインテントです。 このノードが使用されるのは、アシスタントの自然言語処理が、ユーザー入力を評価した後に、ユーザー入力の目的が事前定義済みインテントにマップされると判別した場合です。 構文
#intent_name
を使用します。 例えば、#weather
は、ユーザー入力が天気予報を要求しているかどうかを検査します。 要求している場合、#weather
インテント条件のあるノードが処理されます。インテントについて詳しくは、インテントの定義を参照してください。
-
特殊条件: 一般的なダイアログ機能を実行できるように製品に用意されている条件。 詳しくは、次のセクションにある特殊な条件の表を参照してください。
特殊な条件
条件の構文 | 説明 |
---|---|
anything_else |
この条件をダイアログの最後で使用して、ユーザー入力が他のどのダイアログ・ノードとも一致しない場合の処理を実行できます。 この条件により、Anything else ノードがトリガーされます。 アシスタントに検索スキルを追加した場合は、この条件を持つルート・ノードを、検索をトリガーするように構成できます。 |
conversation_start |
welcome と同じく、この条件はダイアログの最初のターンで true と評価されます。 welcome とは異なり、アプリケーションからの最初の要求にユーザー入力が含まれているかどうかにかかわらず、true になります。 |
false |
この条件は常に false と評価されます。 開発中のブランチの先頭にこれを使用して、そのブランチが使用されないようにしたり、一般的な機能を提供するノードの条件として使用し、そのノードを Jump to アクションのターゲットとしてのみ使用するようにしたりできます。 |
irrelevant |
Watson Assistant サービスがユーザー入力を不適当と判断した場合に、この条件は true と評価されます。 |
true |
この条件は常に true と評価されます。 ノードまたは応答のリストの最後でこれを使用して、それまでの条件と一致しなかったすべての応答をキャッチできます。 |
welcome |
この条件は、アプリケーションからの最初の要求にユーザー入力が含まれていない場合にのみ、ダイアログの最初のターン (ダイアログの開始時) に true と評価されます。 2 ターン目以降では false と評価されます。 この条件により、Welcome ノードがトリガーされます。 通常、この条件を持つノードは、ユーザーに挨拶するために使用されます。例えば、Welcome to our Pizza ordering app. などのメッセージを表示するために使用されます。このノードは、Facebook や Slack などのチャネルを介して行われる対話中には処理されません。 |
条件構文の詳細
条件で有効な式を作成するには、次のいずれかの構文オプションを使用します。
-
インテント、エンティティー、コンテキスト変数を参照する省略表現。 オブジェクトへのアクセスと評価を参照してください。
-
Spring Expression (SpEL) 言語。実行時のオブジェクト・グラフの照会と操作をサポートする式言語です。 詳しくは、 Spring Expression Language(SpEL)言語 を参照してください。
正規表現を使用して、条件として使用する値を検査できます。 例えば、String.find
メソッドを使用して、一致する文字列を検索できます。 詳しくは、メソッドを参照してください。
応答
ダイアログの応答は、ユーザーへの応答方法を定義するものです。
以下の方法で応答することができます。
単純なテキスト応答
テキスト応答を提供する場合は、単に、アシスタントでユーザーに表示するテキストを入力します。
応答にコンテキスト変数の値を含めるには、$variable_name
という構文を使用して指定します。 詳しくは、コンテキスト変数を参照してください。 例えば、ノードが処理される前に $user コンテキスト変数が現行ユーザーの名前に設定されたことを知っている場合、以下のように、ノードのテキスト応答でそれを参照できます。
Hello $user
現行ユーザーの名前が Norman
であれば、Norman さんに表示される応答は、Hello Norman
となります。
これらの特殊文字のいずれかをテキスト応答に含める場合は、その前に円記号 (\
) を追加してエスケープしてください。 JSON エディターを使用している場合は、エスケープするために 2 つの円記号 (\\
) を使用する必要があります。 文字をエスケープすることで、アシスタントがその文字を以下の成果物タイプの 1 つとして誤って解釈することを防ぎます。
特殊文字 | 成果物 | 例 |
---|---|---|
$ |
コンテキスト変数 | The transaction fee is $2. |
@ |
エンティティー | Send us your feedback at feedback@example.com. |
# |
意図 | We are the #1 seller of lobster rolls in Maine. |
組み込み統合は、以下の Markdown 構文要素をサポートしています。
フォーマット | 構文 | 例 |
---|---|---|
イタリック | We're talking about *practice*. |
私たちは練習 について話し合っています。 |
太字 | There's **no** crying in baseball. |
野球で泣くことはしません。 |
ハイパーテキスト・リンク | Contact us at [ibm.com](https://www.ibm.com). |
ibm.com からお問い合わせください。 |
モバイル・デバイスからアクセスされる Web チャット統合以外では、リンクをコーディングせずにテキスト応答の中に電話番号を指定した場合、その電話番号は電話リンクに変換されません。
「Try it out」ペインでは、現在 Markdown 構文がサポートされていません。 テストの目的で、アシスタントの プレビュー を使用して、マークダウン構文がどのようにレンダリングされるかを確認できます。
「試行する (Try it out)」ペイン、アシスタント「プレビュー」、および Web チャット 統合は HTML 構文をサポートします。 Slack 統合と Facebook 統合ではサポートされていません。
単純な応答に関する詳細
複数行の追加
復帰で分離された複数の行を単一のテキスト応答に含める場合、以下の手順に従います。
- ユーザーに別個の文として表示する各行を、それぞれ独自の応答バリエーション・フィールドに追加します。 以下に例を示します。
応答バリエーション |
---|
こんにちは。 |
お元気ですか? |
-
応答バリエーション設定には、**「multiline」**を選択します。
リッチ応答タイプのサポートが製品に追加される前に作成されたダイアログ・スキルを使用している場合には、「multiline」オプションが表示されないことがあります。 現在のノード応答に、2 番目のテキスト応答タイプを追加してください。 この処理により、基礎となる JSON に応答が示される方法が変更されます。 その結果、multiline オプションを使用できるようになります。 multiline バリエーション・タイプを選択してください。 これで、応答に追加した 2 番目のテキスト応答タイプを削除できます。
応答がユーザーに表示されるときは、以下のように、両方の応答バリエーションが各行に 1 つずつ表示されます。
Hi.
How are you today?
バリエーションの追加
常に同じあいさつと応答を聞かされては、ダイアログ・サービスをよく利用するユーザーがうんざりする可能性があります。 バリエーションを応答に追加すると、Conversation が同じ条件に対してさまざまな方法で応答できるようになります。
次の例では、店舗地についての質問に対する応答として、アシスタントが対話ごとに異なる回答を返します。
応答のバリエーションを順番に選択するか、ランダムな順序で選択するかを選択できます。 デフォルトでは、順序付きリストから選択されたかのように、応答は順番に選択されます。
個々のテキスト応答が返される順序を変更するには、以下の手順を実行します。
- 応答に対する各バリエーションを、それぞれ独自の応答バリエーション・フィールドに追加します。 以下に例を示します。
応答バリエーション |
---|
こんにちは。 |
こんにちは。 |
元気ですか! |
-
応答バリエーション設定には、以下のいずれかの設定を選択します。
-
sequential: システムは、ダイアログ・ノードが最初にトリガーされたときには最初の応答バリエーションを返し、2 回目にノードがトリガーされたときには 2 番目の応答バリエーションを返す、というように、ノードにバリエーションを定義した順序で処理されます。
ノードが処理されるとき、以下の順序で応答が返されます。
-
1 回目:
Hello.
-
2 回目:
Hi.
-
3 回目:
Howdy!
-
-
random: システムは、ダイアログ・ノードが最初にトリガーされたときにはバリエーション・リストからテキスト・ストリングをランダムに選択し、その次の回には別のバリエーションをランダムに選択します。ただし、同じテキスト・ストリングを連続して繰り返すことはありません。
ノードが処理されるときに応答が返される順序の例:
-
1 回目:
Howdy!
-
2 回目:
Hi.
-
3 回目:
Hello.
-
-
リッチ応答
応答を返すとき、画像などのマルチメディア要素やクリック可能ボタンなどの対話式要素を含めることにより、アプリケーションの対話モデルを簡単にし、ユーザー・エクスペリエンスを向上させることができます。
ユーザーに返す応答にテキストを指定する、デフォルト応答タイプの**「Text」**に加えて、以下の応答タイプがサポートされています。
-
人間のエージェントにつなげる (Connect to human agent): このダイアログは、指定されたサービス (通常は人間のエージェントのサポート・チケット・キューを管理するサービス) を呼び出して、会話を人に転送します。 オプションで、人間の担当者に提供するための、ユーザーの問題を要約したメッセージを含めることもできます。
-
チャネル転送: ダイアログは、会話を別のチャネル (例えば、Slack 統合から Web チャット統合へ) に転送することを要求します。
-
Image: イメージを応答に組み込みます。 ソース・イメージ・ファイルがいずれかの場所でホストされていて、そこに参照可能な URL があることが必要です。 パブリック・アクセスが不可能なディレクトリーに保管されたファイルは使用できません。
-
動画: 動画プレイヤーを応答に組み込みます。 ソース動画は、サポートされる動画ストリーミング・サービス上の再生可能動画として、または参照に使用できる URL を持つ動画ファイルとして、どこかでホストする必要があります。 パブリック・アクセスが不可能なディレクトリーに保管されたファイルは使用できません。
-
音声: 音声クリップを応答に組み込みます。 ソース音声ファイルは、どこかでホストされている必要があり、それを参照するために使用できる URL を持っている必要があります。 パブリック・アクセスが不可能なディレクトリーに保管されたファイルは使用できません。
-
iFrame: 外部 Web サイト (フォームやその他の対話式コンポーネントなど) のコンテンツをチャット内に直接組み込みます。 ソース・コンテンツは、HTTP を使用してパブリックにアクセス可能でなければならず、HTML
iframe
要素として組み込むことができなければなりません。 -
Option: 1 つ以上のオプションからなるリストを追加します。 ユーザーがいずれかのオプションをクリックすると、関連付けられたユーザー入力値がアシスタントに送信されます。 オプションがどのようにレンダリングされるかは、オプションの数とダイアログをデプロイする場所によって異なることがあります。
-
Pause: アプリケーションが処理を続行する前に、指定されたミリ秒だけ強制的に待機するようにします。 応答を入力する際に、アシスタントが機能していることを示す標識を表示するかどうかを選択できます。 時間がかかる可能性があるアクションを実行する必要がある場合には、この応答タイプを使用してください。
-
検索スキル: ユーザーに返す関連情報を外部データ・ソースで検索します。 検索するデータ・ソースは、このダイアログ・スキルを使用するアシスタントに検索スキルを追加するときに構成する Discovery サービス・データ・コレクションです。
この応答タイプは、有料プランのユーザーのみが使用できます。
-
ユーザー定義: JSON エディターを使用して応答を定義する場合は、独自のユーザー定義応答タイプを作成できます。 詳しくは、JSON エディターを使用して応答を定義するを参照してください。
統合が異なると、リッチ応答を表示するための機能も異なります。 異なるチャネル用にカスタマイズされた異なる応答を定義する場合は、JSON エディターを使用して応答を編集することができます。 詳しくは、「特定の統合のターゲット設定」を参照してください。
リッチ応答を追加するには、以下の手順を実行します
-
**「アシスタントは次の応答を返します (Assistant responds)」**フィールドのドロップダウン・メニューをクリックして応答タイプを選択してから、必要な情報を指定します。
詳しくは、以下のセクションを参照してください。
-
現在の応答に別の応答タイプを追加するには、**「応答タイプの追加 (Add response type)」**をクリックします。
単一の応答に複数の応答タイプを追加して、ユーザー照会にリッチ・データで回答を示すこともできます。 例えば、ユーザーが店舗の場所を問い合わせた場合、地図と共に各店舗の場所に対応するボタンが表示されて、ユーザーがボタンをクリックすると住所の詳細を表示できるようにします。 そのような応答を構築するには、イメージ、オプション、およびテキスト応答タイプを組み合わせて使用できます。 別の例として、一時停止応答タイプの前にテキスト応答タイプを使用することにより、ダイアログを一時停止する前にユーザーに警告を出すことができます。
単一の応答タイプに対して追加できる応答タイプの数は 5 つまでです。 つまり、1 つのダイアログ・ノードに 3 つの条件付き応答を定義した場合、それぞれの条件付き応答に最大で 5 つの応答タイプを追加できます。
1 つのダイアログ・ノードに対して、複数の**「人間のエージェントにつなげる (Connect to human agent)」応答タイプまたは複数の「検索スキル」**応答タイプを追加することはできません。
1 つのダイアログ・ノードに複数のオプション応答タイプを追加しないでください。同時に両方のリストが表示されても、顧客はどちらかのリストからしかオプションを選択することができないからです。
-
複数の応答タイプを追加した場合、**「Move」**の上矢印または下矢印をクリックして、それらの応答タイプをアシスタントで処理する順序に配列できます。
「人間のエージェントにつなげる (Connect to human agent)」 応答タイプの追加
クライアント・アプリケーションで人 (顧客サポートの担当者など) に会話を転送できる場合は、「人間のエージェントにつなげる (Connect to human agent)」 応答タイプを追加して、その転送を開始することができます。 Web チャットや Intercom などの一部の組み込み統合では、サービス・デスクの担当者への転送がサポートされています。 カスタム・アプリケーションを使用する場合は、この応答タイプがトリガーされたことを認識するようにアプリケーションをプログラミングする必要があります。
完結率 (containment) メトリックを利用してアシスタントの成功率を追跡するには、この応答タイプをダイアログに追加するか別の方法を使用して、顧客が外部サポートに転送されたことを判別してください。 詳しくは、抑制の測定を参照してください。
「人間のエージェントにつなげる (Connect to human agent)」 応答タイプを追加するには、次の手順を実行します。
-
応答タイプを追加するダイアログ・ノードで、**「アシスタントは次の応答を返します (Assistant responds)」フィールドのドロップダウン・メニューをクリックしてから、「人間のエージェントにつなげる (Connect to human agent)」**を選択します。
-
オプション。 **「人間のエージェントへのメッセージ (Message to human agent)」**フィールドに、会話の転送先の人間のエージェントに伝えるメッセージを追加します。
-
転送中であることを表すために顧客に示すメッセージを追加します。
エージェントが対応できる場合に示すメッセージと、エージェントが対応できない場合に示すメッセージを追加することができます。 各メッセージの長さは最大 320 文字です。
Web チャットの組み込みサービス・デスク統合のみ: Web チャットのバージョン 3 以降では、「エージェントがオンラインの場合の応答 (Response when agents are online)」 フィールドと*「エージェントがオンラインでない場合の応答 (Response when no agents are online)」* フィールドに追加したテキストが転送に使用されます。 独自のメッセージを追加しなかった場合は、ヒント・テキスト (メッセージの例として表示されるグレー表示のテキスト) が使用されます。
この応答タイプを複数のノードで使用する場合に、各ノードを個々に編集することなく、毎回同じカスタム・テキストを使用するには、Web チャットで使用されるデフォルトのテキストを変更します。 デフォルト・メッセージを変更するには、 言語ソース・ファイルを編集します。
default_agent_availableMessage
の値とdefault_agent_unavailableMessage
の値を探します。 Web チャット・テキストの変更方法について詳しくは、 言語を参照してください。 -
オプション: アシスタントをデプロイするチャネルがサービス・デスクに統合されている場合は、転送要求で渡す初期転送情報を追加することができます。
- **「サービス・デスク転送 (Service desk routing)」**フィールドから統合タイプを選択します。
- 使用しているサービス・デスクで意味を持つ転送情報を追加します。
サービス・デスクのタイプ | 転送情報 | 説明 |
---|---|---|
Salesforce | ボタン ID | Salesforce デプロイメントの有効なボタン ID を指定してください。 詳しくは、「Salesforce 転送のルーティング・ロジックの追加」を参照してください。 |
Zendesk | 所属 | Zendesk アカウントの有効な部門名を指定してください。 詳しくは、「Zendesk 転送のルーティング・ロジックの追加」を参照してください。 |
ダイアログ・スキルの「試行する (Try it out)」ペインで、この応答タイプのダイアログ・ノードをテストする場合、ダイアログの転送は行われません。 ユーザーがこの応答タイプをどのように使用するかを確認するには、アシスタントの「プレビュー」ボタンから、この応答タイプを使用するノードにアクセスする必要があります。
「チャネル転送」応答タイプの追加
アシスタントが複数の統合を使用して、ユーザーとの対話のためにさまざまなチャネルをサポートする場合、お客様が 1 つのチャネルで会話を開始した後に、別のチャネルに転送する必要が生じることがあります。
最も一般的な状況は、サービス・デスク統合などの Web チャット機能を利用するために、会話を Web チャット統合に転送することです。
現在、チャネル転送のターゲットとしてサポートされているのは Web チャットのみです。
チャネル転送を開始できるのは、以下の統合のみです。
- Slack
- Facebook メッセンジャー
その他の統合では、「チャネル転送」応答タイプは無視されます。
「チャネル転送」応答タイプを追加するには、以下のステップを実行します。
-
レスポンス・タイプを追加するダイアログ・ノードで、「アシスタントの応答」フィールドのドロップダウン・メニューをクリックし、「チャネル転送」を選択します。
-
オプション。 「Web チャットにリンクする前のメッセージ」フィールドで、転送を開始するリンクの前に (発信元チャネルで) ユーザーに表示する概要メッセージを編集します。 デフォルトでは、このメッセージは
OK, click this link for additional help. Chat will continue on a new web page.
です。 -
「Web チャットの URL」フィールドに、Web チャット・ウィジェットが組み込まれている Web サイトの URL を入力します。
「チャネル転送」応答を処理する統合では、概要メッセージが表示され、その後に指定した URL へのリンクが続きます。 その後、ユーザーはリンクをクリックして転送を開始する必要があります。
会話があるチャネルから別のチャネルに転送されると、セッション履歴とコンテキストが保持されるため、宛先チャネルは中断した場所から会話を続行できます。 チャネル転送 応答を含むメッセージ出力は、まず転送を開始するチャネルによって処理され、次にターゲット・チャネルによって処理されることに注意してください。 出力に複数の応答が含まれている場合 (異なる応答タイプを使用している可能性があります)、これらの応答は両方のチャネルによって処理されます (転送の前と後)。 個々の応答のターゲットを特定のチャネルに設定する場合は、JSON エディターを使用して応答を編集することができます。 詳しくは、「特定の統合のターゲット設定」を参照してください。
「イメージ (Image)」 応答タイプの追加
時により、1 枚の絵が 1000 の言葉に値することがあります。 概念を説明する、販売商品を見せる、店舗の場所の地図を示す、などのために応答に画像を含めることができます。
「イメージ (Image)」 応答タイプを追加するには、次の手順を実行します。
-
**「イメージ (Image)」**を選択します。
-
**「イメージのソース (Image source)」**フィールドに、ホストされているイメージ・ファイルの絶対 URL を追加します。
イメージは、.jpg、.gif、または .png 形式でなければなりません。 イメージ・ファイルは、
https:
URL によってパブリックにアドレス指定できる場所に保管する必要があります。例:
https://www.example.com/assets/common/logo.png
応答内の埋め込みイメージの上にイメージのタイトルと説明を表示する場合、それらを指定フィールドに追加します。
IBM Cloud® Object Storage に保管されているイメージにアクセスするには、個々のイメージ・ストレージ・オブジェクトへのパブリック・アクセスを有効にした後、
https://s3.eu.cloud-object-storage.appdomain.cloud/your-bucket-name/image-name.png
のような構文でイメージ・ソースを指定して参照します。一部の統合チャネルでは、タイトルや説明は無視されます。
「動画」応答タイプの追加
ハウツー・デモンストレーション、プロモーション・クリップなどを共有するには、応答に動画を含めてください。 Web チャットでは、動画の応答は埋め込み動画プレイヤーとしてレンダリングされます。
「動画」応答タイプを追加するには、以下のステップを実行します。
-
「動画」を選択します。
-
ホストされた動画への完全な URL を「動画ソース」フィールドに追加します。
-
動画ファイルに直接リンクするには、MPEG や AVI などの任意の標準形式でファイルの URL を指定します。 Web チャットでは、リンクされた動画は埋め込み動画プレイヤーとしてレンダリングされます。
HLS (
.m3u8
) および DASH (MPD) ストリーミング動画はサポートされていません。 -
サポートされている動画ホスティング・サービスでホストされている動画にリンクするには、動画の URL を指定します。 Web チャットでは、リンクされた動画はホスティング・サービスの組み込み可能プレイヤーを使用してレンダリングされます。
ブラウザーで動画を表示するために使用する URL (例えば、
https://www.youtube.com/watch?v=52bpMKVigGU
) を指定します。URL を組み込み可能フォームに変換する必要はありません。Web チャットによって自動的に変換されます。以下のサービスでホストされている動画を埋め込むことができます。
応答の埋め込み動画の上に動画タイトルと説明を表示する場合は、表示されるフィールドにそれらを追加します。
一部の統合チャネルでは、タイトルや説明は無視されます。
動画を特定のディスプレイ・サイズに拡大縮小する場合は、「基本の高さ」フィールドに数値を指定します。
-
-
「動画」応答タイプは、Web チャット、Facebook、WhatsApp、Slack、および SMS の統合でサポートされます。
「音声」応答タイプの追加
スポーク・ワードまたはその他の音声コンテンツを共有するには、応答に音声クリップを含めます。 Web チャットでは、動画の応答は埋め込み動画プレイヤーとしてレンダリングされます。 電話統合では、音声応答が電話を介して再生されます。
「音声」応答タイプを追加するには、以下のステップを実行します。
-
「音声」を選択します。
-
ホストされた音声クリップへの完全な URL を「音声ソース」フィールドに追加します。
-
音声ファイルに直接リンクするには、MP3 や WAV などの標準形式のファイルへの URL を指定します。 Web チャットでは、リンクされた音声クリップは組み込み音声プレイヤーとしてレンダリングされます。
-
サポートされている音声ホスティング・サービス上の音声クリップにリンクするには、その音声クリップの URL を指定します。 Web チャットでは、リンクされた音声クリップはホスティング・サービスの組み込み可能プレイヤーを使用してレンダリングされます。
ブラウザーで音声ファイルにアクセスするために使用する URL を指定します (例:
https://soundcloud.com/ibmresearch/fallen-star-amped
)。URL を組み込み可能フォームに変換する必要はありません。Web チャットによって自動的に変換されます。以下のサービスでホストされる音声を埋め込むことができます。
応答の埋め込み音声プレイヤーの上にタイトルと説明を表示する場合は、表示されるフィールドにそれらを追加します。
一部の統合チャネルでは、タイトルや説明は無視されます。
音声クリップを無期限にループさせたい場合は、「ループ」フィールドで「オン (On)」を選択します。 例えば、このオプションを使用して、ユーザーが電話で待機している間に音楽を再生することができます。 (デフォルトでは、音声は一度だけ再生された後に停止します。)
「ループ」オプションは、現在電話統合でのみサポートされています。 このオプションは、Web チャット統合またはその他のチャネルを使用している場合は効果がありません。
-
-
「音声」応答タイプは、Web チャット、Facebook、WhatsApp、Slack、SMS、および電話の統合でサポートされます。
iFrame 応答タイプの追加
別の Web サイトからのコンテンツを HTML iframe
要素としてチャット・ウィンドウ内に直接埋め込むには、応答に iFrame を含めます。 iFrame 応答は、お客様がチャットを終了せずに外部サービスとの何らかの対話を実行できるようにする場合に役立ちます。 例えば、iFrame 応答を使用して、Web チャット内で以下を表示することができます。
- Google Maps 上の対話式マップ
- SurveyMonkey を使用したアンケート調査
- OpenTable を使用して予約を行うためのフォーム
- Calendly を使用したスケジューリング・フォーム
Web チャットでは、iFrame 応答は、埋め込みコンテンツを記述するプレビュー・カードとしてレンダリングされます。 お客様はこのカードをクリックしてフレームを表示し、コンテンツと対話できます。
iFrame 応答タイプを追加するには、以下のステップを実行します。
-
iFrame を選択します。
-
「iFrame ソース」フィールドに、外部コンテンツの完全な URL を追加します。
URL は、HTML
iframe
要素に埋め込むことができるコンテンツを指定する必要があります。 サイトによって、コンテンツの組み込みに関する制限が異なります。また、組み込み可能 URL を生成するためのプロセスも異なります。 組み込み可能 URL とは、iframe
エレメントのsrc
属性の値として指定できる URL のことです。例えば、Google マップを使用して対話式マップを組み込むには、Google マップ組み込み API を使用できます。 (詳しくは、 マップ組み込み API の概要を参照してください。) 他のサイトには、組み込み可能コンテンツを作成するためのさまざまなプロセスがあります。
Content-Security-Policy: frame-src
を使用して Web サイト・コンテンツを埋め込むことができるようにする方法について詳しくは、 CSP: frame-srcを参照してください。 -
オプションで、「タイトル」フィールドに説明的なタイトルを追加します。
Web チャットでは、お客様が外部コンテンツをレンダリングするためにクリックする前に、このタイトルがプレビュー・カードに表示されます。 (タイトルを指定しない場合、Web チャットは指定された URL からメタデータを取得し、ソースで指定されたコンテンツのタイトルを表示しようとします。)
-
iFrame 応答タイプは、Web チャットと Facebook の統合でサポートされます。
「試行する (Try it out)」ペインでは、iFrame はプレビュー・カードなしで即時にレンダリングされます。 Web チャットで応答がどのようにレンダリングされるかを確認するには、アシスタントの「プレビュー」ページを使用します。
技術詳細: < iframe> サンドボックス
Web チャットによって iFrame にロードされるコンテンツは_サンドボックス_です。これは、セキュリティーの脆弱性を軽減する制限付き許可があることを意味します。 Web チャットは、iframe
要素の sandbox
属性を使用して、以下の許可のみを付与します。
権限 | 説明 |
---|---|
allow-downloads |
ダウンロードがユーザーによって開始された場合に、ネットワークからのファイルのダウンロードを許可します。 |
allow-forms |
フォームの送信を許可します。 |
allow-scripts |
スクリプトの実行を許可しますが、ポップアップ・ウィンドウを開くことは_できません_。 |
allow-same-origin |
コンテンツが独自のデータ・ストレージ (Cookie など) にアクセスできるようにし、JavaScript API への非常に限定的なアクセスのみを許可します。 |
サンドボックス化された iFrame 内で実行されているスクリプトは、_もし_外側のページと iFrame のオリジンが異なっていれば、iFrame 外のコンテンツコンテンツに変更を加えることはできません。 Web チャット・ウィジェットがホストされているページと同じ発信元を持つコンテンツを埋め込むために iFrame 応答を使用する場合は、注意してください。この場合、組み込みコンテンツによってサンドボックス機能が無効になり、フレーム外のコンテンツにアクセスできるようになります。
この潜在的な脆弱性について詳しくは、 sandbox
属性 の資料を参照してください。
「オプション (Option)」 応答タイプの追加
一連のオプション (選択肢) から顧客が選択できるようにするには、オプション応答タイプを追加します。 例えば、次のように応答を構成することができます。
リスト・タイトル | リストの説明 | オプション・ラベル | クリックでユーザー入力の送信 |
---|---|---|---|
保険のタイプ | 保険の対象とするアイテムを選択してください。 | ||
ボート | 船の保険を購入します | ||
自動車 | 自動車の保険を購入します | ||
家 | 家の保険を購入します |
たいていの統合では、項目が少ししかない場合 (4 個以下など)、選択肢がボタンで表示されます。
項目が多い場合、オプションはリストとして表示されます。
「オプション (Option)」 応答タイプを追加するには、次の手順を実行します。
-
応答タイプを追加するダイアログ・ノードで、**「アシスタントは次の応答を返します (Assistant responds)」フィールドのドロップダウン・メニューをクリックしてから、「オプション (Option)」**を選択します。
-
**「オプションの追加 (Add option)」**をクリックします。
-
**「リスト・ラベル (List label)」**フィールドに、リストに表示するオプションを入力します。
ラベルは 2,048 文字未満の長さでなければなりません。
-
このオプションが選択されたときにアシスタントに渡されるユーザー入力を、対応する**「Value」**フィールドに入力します。
値は 2,048 文字未満の長さでなければなりません。
オプションがリストとして表示される Slack 統合の場合は、各値の長さが 75 文字以下でなければなりません。
送信されると正しいインテントをトリガーすることがわかっている値を指定してください。 例えば、そのインテントに対するトレーニング・データ内のユーザー例を使用できます。
-
リストにオプションをさらに追加する場合は、上記の手順を繰り返します。
最大 20 個のオプションを追加できます。
-
**「タイトル (Title)」**フィールドに、リストの概要を追加します。 オプションのリストから選択するようユーザーに促すタイトルにすることもできます。
一部の統合チャネルでは、タイトルが表示されません。
-
オプションで、**「説明」**フィールドに詳しい情報を追加します。 指定した場合、タイトルとオプション・リストの間に説明が表示されます。
一部の統合チャネルでは、説明が表示されません。
-
オプション: オプションの表示方法の設定 (ボタンまたはリスト) を指定するには、応答の
preference
プロパティーを追加します。これを行うには、応答のために JSON エディターを開き、
preference
の名前と値のペアの前に、response_type
の名前と値のペアを追加します。 preference をdropdown
またはbutton
に設定することができます。{ "output": { "generic": [ { "title": "Insurance types", "options": [ { "label": "Boat", "value": { "input": { "text": "I want to buy boat insurance." } } }, { "label": "Car", "value": { "input": { "text": "I want to buy car insurance." } } }, { "label": "House", "value": { "input": { "text": "I want to buy house insurance." } } } ], "preference": "dropdown", //add this name and value pair "description": "Which of these items do you want to insure?", "response_type": "option" } ] } }
項目が 3 個のみの選択肢リストを定義する場合、選択肢は通常、ボタンとして表示されます。
dropdown
の設定を指定する preference プロパティーを追加した場合は、例えば、「試行する (Try it out)」ペインで、代わりにドロップダウン・リストとして表示されたリストを確認できます。Web チャットなど、いくつかの統合タイプでは、指定した設定が反映されます。 Slack などのように、オプションのレンダリング時に設定が反映されない統合タイプもあります。
1 つのダイアログ・ノードに複数のオプション応答タイプを追加しないでください。同時に両方のリストが表示されても、顧客はどちらかのリストからしかオプションを選択することができないからです。
他の要因に応じて異なる値をオプションのリストに取り込めるようにするには、動的なオプションのリストを設計します。 詳しくは、「 応答オプションをダイアログ・ノードに動的に追加する方法 」のブログ投稿を参照してください。
「一時停止 (Pause)」 応答タイプの追加
一時停止応答タイプを追加すると、応答するための時間をアシスタントに与えることができます。 例えば、Web フックを呼び出すノードに一時停止応答タイプを追加することができます。 一時停止によって、アシスタントが回答を作成中であることが伝えられるので、その間にアシスタントで Web フックを呼び出して応答を得ることができます。 その後、子ノードにジャンプして結果を表示できます。
「一時停止 (Pause)」 応答タイプを追加するには、次の手順を実行します。
-
応答タイプを追加するダイアログ・ノードで、**「アシスタントは次の応答を返します (Assistant responds)」フィールドのドロップダウン・メニューをクリックしてから、「一時停止 (Pause)」**を選択します。
-
**「Duration」**フィールドに、一時停止が続く時間の長さをミリ秒 (ms) 単位で追加します。
値は 10,000 ミリ秒を超えることはできません。 ユーザーは通常、誰かが応答を入力するまで約 8 秒 (8,000 ミリ秒) 待機します。 一時停止の期間内に入力中の標識が表示されないようにするには、**「Off」**を選択します。
一時停止の後に、テキスト応答タイプなど別の応答タイプを追加して、一時停止が終了したことを明確に示してください。
「Try it out」ペインでは、この応答タイプはレンダリングされません。 ユーザー・エクスペリエンスを確認するためには、テスト・デプロイメントから、この応答タイプを使用するノードにアクセスする必要があります。
「検索スキル」応答タイプ「」の追加
顧客からよく尋ねられる質問に答えられる既存の顧客向け資料 (FAQ、製品カタログ、販売資料など) がある場合は、その情報を利用することができます。 既存の資料の検索をリアルタイムでトリガーし、顧客のために最新の回答を取得できます。
検索スキルの応答タイプを使用するには、検索スキルを作成して、そのダイアログ・スキルを使用する同じアシスタントに追加する必要があります。 詳しくは、検索スキルの作成を参照してください。
「検索スキル」 応答タイプを追加するには、次の手順を実行します。
-
応答タイプを追加するダイアログ・ノードで、**「アシスタントは次の応答を返します (Assistant responds)」フィールドのドロップダウン・メニューをクリックしてから、「検索スキル」**を選択します。
外部データ・ソースで、応答として返す関連情報を検索することを示します。
-
Discovery サービスに渡す検索照会を編集するには、**「カスタマイズ」**をクリックしてから、以下のフィールドに値を入力します。
-
「照会 (Query)」: オプション。 Discovery に渡す具体的な照会内容を自然言語で指定できます。 照会を追加しない場合、顧客の入力テキストがそのまま照会として渡されます。
例えば、
What cities do you fly to?
と指定できます。 この照会値は、検索照会として Discovery に渡されます。Discovery は、自然言語理解を使用して照会を理解し、検索スキル用に構成されたデータ・コレクション内のサブジェクトに関する回答または関連情報を見つけます。ユーザーの入力内で検出されたエンティティーを参照することにより、ユーザーが提供した具体的な情報を、照会の一部として含めることができます。 例えば、
Tell me about @product
です。 または、Do you have flights to $destination?
のように、コンテキスト変数を参照することもできます。 照会内で参照されているエンティティーまたはコンテキスト変数に有効な値が設定されていない場合は検索がトリガーされないようにダイアログを設計してください。このフィールドは、Discovery の
natural_language_query
パラメーターに相当します。 詳しくは、 照会パラメーターを参照してください。-
「フィルター」: オプション。 返されるすべての検索結果の中に存在しなければならない情報を定義するテキスト・ストリングを指定します。
-
例えば、肯定的な評判が検出された文書だけを返すように指示するには、
enriched_text.sentiment.document.label:positive
と指定します。 -
結果をフィルターに掛けて、取り込みプロセスでエンティティー
Boston, MA
が含まれることが識別された文書だけを含めるには、enriched_text.entities.text:"Boston, MA"
と指定します。 -
結果をフィルターに掛けて、取り込みプロセスで顧客提供の製品名が含まれると認識された文書だけを含めるには、
enriched_text.entities.text:@product
と指定します。 -
結果をフィルターに掛けて、取り込みプロセスで
$destination
という名前のコンテキスト変数に保存した都市名が含まれると認識された文書だけを含めるには、enriched_text.entities.text:$destination
と指定します。
このフィールドは、Discovery の
filter
パラメーターに相当します。 詳しくは、 照会パラメーターを参照してください。 -
照会とフィルター値の両方が追加されている場合は、フィルター・パラメーターが最初に適用されて、データ・コレクション文書がフィルターに掛けられ、結果がキャッシュに入れられます。 その後、キャッシュに入れられた結果が、照会パラメーターによってランク付けされます。
-
-
-
オプション: 検索に使用する照会タイプを変更します。
検索スキルは、自動的に自然言語照会を Discovery に送信します。 代わりに Discovery の照会言語を使用するには、そのように指定します。 そのためには、JSON エディターでノードの応答を開きます。
JSON コード・スニペットを編集して、
natural_language
をdiscovery_query_language
に置き換えます。 以下に例を示します。{ "output": { "generic": [ { "query": "", "filter": "enriched_text.sentiment.document.label:positive", "query_type": "discovery_query_language", "response_type": "search_skill" } ] } }
アシスタント「プレビュー」からこの応答タイプをテストします。 ダイアログ・スキルの「試行する (Try it out)」ペインからテストすることはできません。
条件付き応答
1 つのダイアログ・ノードで、条件に応じてさまざまな応答をトリガーすることができます。 このアプローチを使用すると、単一ノードで複数のシナリオに対処できます。
このようなノードにもメインの条件があります。それは、そのノードを使用して、ノードに含まれている条件と応答を処理するための条件です。
この例では、アシスタントは前に収集したユーザーの現在地についての情報を基に応答を調整し、ユーザーの最寄りの店舗に関する情報を提供しています。 ユーザーから収集した情報の保管方法について詳しくは、コンテキスト変数を参照してください。
この単一のノードは、ノード 4 つ分に相当する機能を備えています。
条件付き応答をノードに追加するには、以下の手順を実行します。
-
**「カスタマイズ」をクリックしてから、「複数の条件付き応答 (Multiple conditioned responses)」スイッチを「オン (On)」**に設定します。
ノード応答セクションが変化して、条件フィールドと応答フィールドのペアが表示されます。 それらに条件と応答を追加できます。
-
応答をさらにカスタマイズするには、応答の横にある「応答の編集」「」アイコンをクリックします。
応答を編集用に開いて、以下のタスクを実行する必要があります。
-
コンテキストの更新。 応答がトリガーされたときにコンテキスト変数の値を変更するには、コンテキスト・エディターにコンテキスト値を指定します。 個別の条件付き応答ごとにコンテキストを更新します。すべての条件付き応答に使用できる共通のコンテキスト・エディターや JSON エディターはありません。
-
リッチ応答の追加。 単一の条件付き応答に複数のテキスト応答を追加したりテキスト応答以外の応答タイプを追加したりするには、「Edit response」ビューを開く必要があります。
-
ジャンプの構成。 この条件付き応答が処理された後に別のノードにジャンプするようにアシスタントに指示するには、「Edit response」ビューの**「And finally」*セクションで「Jump to」*を選択します。 アシスタントで次に処理するノードを指定します。 詳しくは、Jump to アクションの構成を参照してください。
すべての条件付き応答が処理されるまで、ノードに対して構成された**「Jump to」**アクションは処理されません。 そのため、条件付き応答が別のノードにジャンプするように構成されていて、その条件付き応答がトリガーされる場合、そのノードに対して構成されているジャンプは処理されないので、ジャンプは生じません。
-
-
別の条件付き応答を追加するには、**「Add response」**をクリックします。
ノード内の条件は、ノードと同様に順序どおりに評価されます。 条件付き応答が正しい順序でリストされていることを確認してください。 順序を変更する必要がある場合は、条件と応答のペアを選択し、表示された矢印を使用してリスト内で上下に移動します。
次の処理の定義
指定された応答を返した後に、次のいずれかの処理を行うようにアシスタントに命令できます。
-
ユーザー入力を待機する (Wait for user input): アシスタントは、ユーザーが応答に対して新しい入力を提供するまで待機します。 例えば、応答でユーザーに「はい」または「いいえ」で回答する質問をしたとします。 このダイアログは、ユーザーが回答を入力するまで進行しません。
-
ユーザー入力をスキップする (Skip user input): このオプションは、ユーザー入力を待たずに現在のノードの最初の子ノードに直接ジャンプする場合に使用します。
現在のノードに少なくとも 1 つの子ノードが存在しないと、このオプションは使用できません。
-
Jump to another dialog node: このオプションは、会話をまったく別のダイアログ・ノードに直接移動する場合に使用します。 例えば、Jump to アクションを使用して、ツリー内の複数の場所から共通のダイアログ・ノードにフローを向かわせることができます。
ジャンプ先のノードを使用するように Jump to アクションを構成する前に、そのターゲット・ノードが存在している必要があります。
Jump to アクションの構成
別のノードにジャンプすることにした場合は、以下のいずれかのオプションを選択して、ターゲット・ノードがいつ処理されるかを指定します。
-
条件: ステートメントのターゲットが、選択したダイアログ・ノードの条件セクションである場合、アシスタントはまず、ジャンプ先ノードの条件が trueと評価されるかどうかをチェックします。
-
条件が true と評価された場合、システムはターゲット・ノードをただちに処理します。
-
条件が true と評価されなかった場合、システムはターゲット・ノードの次の兄弟ノードに移動してその条件を評価します。条件が true と評価されるダイアログ・ノードを検出するまで、このプロセスを繰り返します。
-
システムがすべての兄弟ノードを処理し、どの条件も true と評価されなかった場合は、基本フォールバック戦略が使用され、ダイアログ・ツリーの基本レベルでダイアログがノードを評価します。
ダイアログ・ノードの条件をチェーニングする場合は、条件をターゲットにすると便利です。 例えば、最初に入力に
#turn_on
などのインテントが含まれているかどうかをチェックし、含まれている場合は、入力に@lights
、@radio
、@wipers
などのエンティティーが含まれているかどうかをチェックします。 条件をチェーニングすることで、大規模なダイアログ・ツリーを構成できます。ダイアログ・ツリーで現行ノードの上位にあるノードに移動するように条件付き応答のジャンプ先を構成するときは、このオプションを選択しないでください。 選択すると、無限ループが作成される可能性があります。 アシスタントが前段のノードにジャンプしてその条件を検査する場合、ダイアログによって現行ノードを前回トリガーしたものと同じユーザー入力が評価されるため、false が返される可能性が高くなります。 アシスタントは次の兄弟ノードに移動するかルートに戻ってそれらのノードの条件を検査し、おそらくこのノードを再びトリガーすることになります。つまり、同じプロセスが繰り返されます。
-
-
応答: ステートメントのターゲットが、選択したダイアログ・ノードの応答セクションである場合は、即時に実行されます。 つまり、選択したダイアログ・ノードの条件をシステムは評価しません。選択したダイアログ・ノードの応答がただちに処理されます。
複数のダイアログ・ノードをチェーニングする場合は、応答をターゲットにすると便利です。 このダイアログ・ノードの条件が true であったかのように、応答が処理されます。 選択したダイアログ・ノードに Jump to アクションがもう 1 つ含まれている場合は、そのアクションも即時に実行されます。
-
Wait for user input: ユーザーからの新しい入力を待機し、その後、ジャンプ先のノードからその処理を開始します。 このオプションは、例えばソース・ノードで質問をして、その質問に対するユーザーの回答を処理するために別個のノードにジャンプする場合などに役立ちます。
次のステップ
- ダイアログを作成したら、そのダイアログを必ずテストします。 詳しくは、ダイアログのテストを参照してください。
- 一般的なユース・ケースに対応する方法について詳しくは、ダイアログ作成のヒントを参照してください。
- ダイアログを改良するために使用できる式言語 (日付またはテキストの形式を再設定するメソッドなど) について詳しくは、式言語のメソッドを参照してください。
API を使用してノードを追加したり、ダイアログを編集したりすることもできます。 詳しくは、API を使用したダイアログの変更を参照してください。