

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ビジュアル会話ビルダーの使用
<a name="visual-conversation-builder"></a>

ビジュアル会話ビルダーは、豊富なビジュアル環境内でインテントを使用して会話パスを簡単に設計および視覚化できる、ドラッグアンドドロップの会話ビルダーです。

**ビジュアル会話ビルダーにアクセスするには**

1. Amazon Lex V2 コンソールで、ボットを選択し、左側のナビゲーションペインから **[インテント]** を選択します。

1. 以下のいずれかの方法で、インテントエディタを開きます。
   + **[インテント]** セクションの右上隅にある **[インテントを追加]** を選択し、空のインテントを追加するか、ビルトインインテントを追加するかを選択します。
   + **[インテント]** セクションからインテントの名前を選択します。

1. インテントエディターの画面下部のペインで **[ビジュアルビルダー]** を選択し、ビジュアル会話ビルダーにアクセスします。

1. メニューインテントエディターのインターフェースに戻るには、**[エディター]** を選択します。

![\[ビジュアル会話ビルダーを使った会話フローの例。\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-sample.png)


ビジュアル会話ビルダーは、会話フローを視覚化して変更できる、より直感的なユーザーインターフェースを備えています。ブロックをドラッグアンドドロップすることで、既存のフローを拡張したり、会話のステップを並べ替えたりできます。Lambda コードを一切記述しなくても、複雑な分岐を伴う会話フローを開発できます。

この変更は、会話フロー設計を Lambda の他のビジネスロジックから切り離すのに役立ちます。ビジュアル会話ビルダーは既存のインテントエディターと組み合わせて使用でき、会話フローの構築にも使用できます。ただし、より複雑な会話フローにはビジュアルエディタービューを使用することをおすすめします。

インテントを保存すると、Amazon Lex V2 は接続に失敗したと判断したときにインテントを自動接続したり、Amazon Lex V2 が接続を提案したり、ブロック用に独自の接続を選択したりできます。


| アクション | 例 | 
| --- | --- | 
|  ブロックをワークスペースに追加する  |  ![\[ブロックをワークスペースに追加する\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-addblock.gif)  | 
|  ブロック間の接続  |  ![\[ブロック間の接続\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-connectionblock.gif)  | 
|  ブロックで設定パネルを開く  |  ![\[ブロックの設定パネルを開く\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-openpanelblock.gif)  | 
|  大きさを合わせてズーム  |  ![\[大きさを合わせてズーム\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-zoomtofit.gif)  | 
|  会話フローからブロックを削除する  |  ![\[会話フローからブロックを削除する\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-deleteblock.gif)  | 
|  ワークスペースを自動クリーンアップする  |  ![\[ワークスペースを自動クリーンアップする\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-autoclean.gif)  | 

**用語:**

**ブロック** — 会話フローの基本構成単位。各ブロックには、会話のさまざまなユースケースに対応するための特定の機能があります。

**ポート** — 各ブロックには、あるブロックを別のブロックに接続するために使用できるポートが含まれています。ブロックには入力ポートと出力ポートを含めることができます。各出力端子は、ブロックの特定の機能バリエーション (エラー、タイムアウト、成功など) を表します。

**エッジ** — エッジは、あるブロックの出力ポートと別のブロックの入力ポートの間の接続です。会話フローの分岐の一部です。

**会話フロー** — 顧客とのインテントレベルのやりとりを説明する、エッジでつながった一連のブロック。

**ブロック**

ブロックは、会話フロー設計の構成要素です。インテントの開始からユーザー入力、終了までのインテント内のさまざまな状態を表します。

各ブロックには、ブロックタイプに応じて 1 つのエントリポイントと 1 つまたは複数の終了ポイントがあります。各終了ポイントには、会話が終了ポイントを通過するにつれて、対応するメッセージを設定できます。複数の終了ポイントあるブロックの場合、終了ポイントはノードに対応するステータスに関係します。条件ノードの場合、終了ポイントは異なる条件を表します。

各ブロックには設定パネルがあり、ブロックの右上隅にある **[編集]** アイコンをクリックすると開きます。設定パネルには、各ブロックに対応するように設定できる詳細フィールドがあります。

ボットのプロンプトとメッセージは、新しいブロックをドラッグしてノード上で直接設定することも、ブロックの他の属性とともに右側のパネル内で変更することもできます。

**ブロックタイプ** — ビジュアル会話ビルダーで使用できるブロックタイプは次のとおりです。


| ブロックタイプ | ブロック | 
| --- | --- | 
|  **開始** — 会話フローのルートまたは最初のブロックです。このブロックは、ボットが初期応答 (意図を認識したというメッセージ) を送信できるように設定することもできます。詳細については、「[初期応答](intent-initial.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーの開始ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-start.png)  | 
|  **スロット値取得** — このブロックは 1 つのスロットの価値を誘発しようとします。このブロックには、スロット誘発プロンプトに対する顧客の応答を待つ設定があります。詳細については、「[Slots](intent-slots.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーのスロット値取得ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-getslotvalue.png)  | 
|  **条件** — このブロックには条件文が含まれます。最大 4 つのカスタムブランチ (条件付き) と 1 つのデフォルトブランチが含まれます。詳細については、「[ブランチ会話への条件の追加](paths-branching.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーの条件ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-condition.png)  | 
|  **ダイアログコードフック** — このブロックはダイアログ Lambda 関数の呼び出しを処理します。このブロックには、ダイアログの Lambda 関数の成功、失敗、またはタイムアウトに基づくボット応答が含まれます。詳細については、「[ダイアログコードフックを呼び出す](paths-code-hook.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーのコードフックブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-codehook.png)  | 
|  **確認** — このブロックは、インテントがフルフィルメントされる前に顧客にクエリを実行します。確認プロンプトに対して顧客が「はい」または「いいえ」と言ったことに基づいてボット応答が含まれます。詳細については、「[確認](intent-confirm.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーの確認ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-confirmation.png)  | 
|  **フルフィルメント** — このブロックは、通常はスロット誘発後のインテントのフルフィルメントを処理します。フルフィルメントが成功または失敗した場合に、Lambda 関数を呼び出したり、メッセージで応答したりするように設定できます。詳細については、「[フルフィルメント](intent-fulfillment.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーの達成ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-fulfillment.png)  | 
|  **応答を閉じる** — このブロックにより、ボットは会話を終了する前にメッセージを返信できます。詳細については、「[終了応答](intent-closing.md)」を参照してください。  |  ![\[ビジュアル会話ビルダーの閉じるブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-closing.png)  | 
|  **会話を終了する** — このブロックは会話フローの終了を示します。  |  ![\[ビジュアル会話ビルダーの終了ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-end.png)  | 
|  **ユーザーの入力を待つ** — このブロックを使用すると、顧客からの入力を取り込み、その発話に基づいて別のインテントに切り替えることができます。  |  ![\[ビジュアル会話ビルダーの待つブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-wait.png)  | 
|  **インテントに移動** — このブロックを使用して、新しいインテントに移動したり、そのインテントの特定のスロットを直接誘発したりできます。  |  ![\[ビジュアル会話ビルダーの移動ブロック\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/vcb-gotointent.png)  | 

**ポートタイプ**

すべてのブロックには、親ブロックを接続するための入力ポートが 1 つあります。会話は、親ブロックの出力ポートから特定のブロックの入力ポートにのみ流すことができます。ただし、ブロックに含めることができるのは、0、1、または多数の出力ポートです。出力ポートのないブロックは、現在のインテント (`GoToIntent`、`EndConversation`、`WaitForUserInput`) における会話フローの終了を示します。

**インテントデザインのルール:**
+ インテント内のすべてのフローは開始ブロックから始まります。
+ 各終了ポイントに対応するメッセージは省略可能です。
+ 設定パネルで各終了ポイントに対応する値を設定するようにブロックを設定できます。
+ インテント内の 1 つのフローに存在できるのは、開始、確認、フルフィルメント、終了の各ブロック 1 つのみです。複数の条件、ダイアログコードフック、スロット値の取得、会話の終了、転送、ユーザー入力待ちの各ブロックが存在する可能性があります。
+ 条件ブロックを条件ブロックに直接接続することはできません。同じことがダイアログコードフックにも当てはまります。
+ 循環フローは 3 ブロック許可されていますが、Start Intent への受信コネクタは許可されていません。
+ オプションスロットには受信コネクタも送信接続もなく、主にインテントの誘発中に存在するデータをキャプチャするために使用されます。会話パスの一部であるその他すべてのスロットは必須スロットでなければなりません。

ブロック:
+ 開始ブロックには出力エッジが必要です。
+ スロットが必要な場合は、すべての get slot value ブロックに成功ポートからの出力エッジが必要です。
+ ブロックがアクティブであれば、すべての条件ブロックには各ブランチからの出力エッジが必要です。
+ 1 つの条件ブロックに複数の親を設定することはできません。
+ アクティブな条件ブロックには入力エッジが必要です。
+ すべてのアクティブなコードフックブロックには、成功、失敗、タイムアウトの各ポートからの出力エッジが必要です。
+ アクティブなコードフックブロックには入力エッジが必要です。
+ アクティブな確認ブロックには入力エッジが必要です。
+ アクティブなフルフィルメントブロックには入力エッジが必要です。
+ アクティブな終了ブロックには入力エッジが必要です。
+ 条件ブロックには、デフォルト以外のブランチを 1 つ以上含める必要があります。
+ インテントに移動ブロックにはインテントが指定されている必要があります。

エッジ:
+ 条件ブロックを別の条件ブロックに接続することはできません。
+ コードフックブロックを別のコードフックブロックに接続することはできません。
+ 条件ブロックは、0 個または 1 個のコードフックブロックにのみ接続できます。
+ 接続 (コードフック-> 条件-> コードフック) は無効です。
+ フルフィルメントブロックが子としてコードフックブロックを持つことはできません。
+ フルフィルメントブロックの子である条件ブロックは、コードフックブロックの子を持つことはできません。
+ 終了ブロックが子としてコードフックブロックを持つことはできません。
+ 終了ブロックの子である条件ブロックは、コードフックブロックの子を持つことはできません。
+ 開始ブロック、確認ブロック、またはスロット値取得ブロックでは、依存関係チェーンに複数のコードフックブロックを含めることはできません。

**注記**  
2022 年 8 月 17 日、Amazon Lex V2 はユーザーとの会話の管理方法の変更をリリースしました。この変更により、ユーザーが会話の中でたどるパスをより細かく制御できるようになりました。詳細については、「[Amazon Lex V2 の会話フローの変更 V2](understanding-new-flows.md)」を参照してください。2022 年 8 月 17 日より前に作成されたボットは、ダイアログコードフックメッセージ、値の設定、次のステップの設定、条件の追加をサポートしていません。