

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

# StartBotConversation
<a name="start-bot-conversation"></a>

`StartBotConversation` アクションにより、エンドユーザーと Amazon Lex v2 ボット間の音声会話が確立されます。ユーザーは必要な情報をボットに提供します。次に、ボットは情報を公衆交換電話網 (PSTN) Audio Lambda 関数に返し、関数は要求されたタスクを実行します。

例えば、ボットは会話の開始時にオプションのウェルカムメッセージを再生して、PSTN オーディオ Lambda 関数が実行できるタスクを簡単に説明できます。ボットが必要な情報を収集するまで、ユーザーとボットの間で会話が繰り返されます。会話が終了すると、Amazon Chime SDK はボットによって収集された情報を含むアクション成功イベントで PSTN オーディオ Lambda 関数を呼び出します。PSTN オーディオ Lambda 関数は情報を処理し、要求されたタスクを実行します。

Audio サービスは、ユーザーと本物そっくりの会話形式を提供します。例えば、音声プロンプトが終了する前に、ユーザーがボットに割り込み、質問に答えることができます。さらに、ユーザーは音声と DTMF の数字を自由に組み合わせて情報を提供できます。ボットは、ユーザーによる情報入力を待機してから応答します。ユーザーが話し終わってから音声入力を解釈するまでボットが待機する時間を設定できます。ユーザーは、通話中にクレジットカード番号などの追加情報を取得する時間が必要な場合、ボットに待機するように指示できます。

`StartBotConversation` アクションでは、ボットとの会話の間、Amazon Lex と Amazon Polly が使用されます。Amazon Lex と Amazon Polly の標準料金が適用されます。料金の詳細については、[Amazon Lex ストリーミング会話の料金表](https://aws.amazon.com/lex/pricing/)と [Amazon Polly 料金](https://aws.amazon.com/polly/pricing/)のページを参照してください。

**注記**  
このアクションは、ブリッジ通話や Amazon Chime SDK ミーティングに参加した通話では実行できません。

**重要**  
Amazon Lex と Amazon Polly の使用には、 AWS Machine Learningおよび人工知能サービスに固有の[AWS 条件を含むサービス](https://aws.amazon.com/service-terms/)条件 が適用されます。

**Topics**
+ [StartBotConversation の構文](#startbot-syntax)
+ [StartBotConversation アクションの使用](#using-startbot)
+ [ACTION\_SUCCESSFUL イベントの処理](#bot-action-success)
+ [ACTION\_FAILED イベントの処理](#bot-action-fail)
+ [ボットを使用するアクセス許可の付与](#bot-permissions)
+ [音声と DTMF のタイムアウトの設定](#bot-timeouts)
+ [会話中に DTMF 入力の使用](#bot-dtmf)
+ [請求とサービスクォータ](#bot-billing)

## StartBotConversation の構文
<a name="startbot-syntax"></a>

一般的な `StartBotConversation` 構文の例を次に示します。

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "{{string}}",
        "ParticipantTag": "{{string}}",
        "BotAliasArn": "{{string}}",
        "LocaleId": "{{string}}",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "string": "{{string}}" 
             },
             "DialogAction" : {
               "Type": "{{string}}"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "{{string}}",
              "ContentType": "{{string}}" 
            }
          ]
        }
      }
    }
  ]
}
```

**CallId**  
*説明* – AWS Lambda 関数呼び出し`CallID`の `CallDetails` の参加者の 。`StartBotConversation` アクションはこの ID をボットの `SessionId` として使用します。通話中に行われるすべてのボットの会話は、同じ会話セッションを共有します。[Amazon Lex PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html) API を使用して、ユーザーとボットの間のセッション状態を変更できます。詳細については、「*Amazon Lex Developer Guide*」の「[Managing sessions with the Amazon Lex v2 API](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html)」を参照してください。  
*使用できる値* – 有効な通話 ID。  
*必須* – `ParticipantTag` が存在する場合は、いいえ。  
*デフォルト値* – なし。

**ParticipantTag**  
説明 – `CallDetails` で接続されている参加者のうちの 1 人の `ParticipantTag`。  
使用できる値 - `LEG-A`。  
*必須* – `CallId` が存在する場合は、いいえ。  
*デフォルト値* – 呼び出した `callLeg` の `ParticipantTag`。`CallDetails` を指定すると無視されます。

**BotAliasArn**  
説明 - Lex ボットのボットエイリアス ARN。ボットは PSTN オーディオアプリケーションと同じ AWS リージョンに作成する必要があります。有効な Amazon Lex ボットエイリアスの形式は `arn:aws:lex:{{region}}:{{awsAccountId}}:bot-alias/{{botId}}/{{botAliasId}}` です。ここで {{`region`}} はボットが存在する AWS リージョンです。`{{awsAccountId}}` は Amazon Lex ボットが作成された AWS アカウント ID です。`botId` 値は、その作成時にボットに割り当てた識別子です。ボット ID は、Amazon Lex コンソールの **[ボットの詳細]** ページにあります。`botAliasId` は、その作成時にボットエイリアスに割り当てた識別子です。ボットエイリアス ID は、Amazon Lex コンソールの **[エイリアス]** ページにあります。  
使用できる値 - 有効なボット ARN。  
必須 – はい。  
*デフォルト値* – なし。

**LocaleId**  
説明 - ボットに使用したロケールの識別子。ロケールおよび言語コードのリストについては、「[Languages and locales supported by Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)」を参照してください。  
使用できる値 - [Amazon Lex でサポートされている言語とロケール。](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)  
必須 – いいえ。  
デフォルト値 – `en_US`。

**Configuration**  
説明 - セッション状態とウェルカムメッセージを含む会話設定。`Configuration` オブジェクトの JSON 文字列表現の合計サイズは 10 KB に制限されています。  
使用できる値 - `Configuration` オブジェクト。  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.SessionState**  
説明 - Amazon Lex v2 とのユーザーのセッションの状態。  
使用できる値 - `SessionState` オブジェクト。  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.SessionState.SessionAttributes**  
説明 - セッション固有のコンテキスト情報を表すキー/値のペアのマップ。このマップには、Amazon Lex v2 とクライアントアプリケーションの間で渡されるアプリケーション情報が含まれます。  
使用できる値 - 文字列間のマッピング。  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.SessionState.DialogAction.Type**  
説明 - ユーザーとのインタラクションにおいて、ボットが取る次のアクション。使用できる値:  
+ *Delegate* Amazon Lex v2 が次のアクションを決定します。
+ *ElicitIntent* 次のアクションはユーザーからインテントを引き出します。
使用できる値 - `Delegate` \| `ElicitIntent`。  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.WelcomeMessages**  
説明 - 会話の開始時にユーザーに送信するメッセージのリスト。`welcomeMessage` フィールドを設定する場合、`DialogAction.Type` 値を `ElicitIntent` に設定する必要があります。  
使用できる値 - メッセージオブジェクト  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.WelcomeMessages.Content**  
説明 - ウェルカムメッセージのテキスト。  
使用できる値 - 文字列。  
必須 – いいえ。  
*デフォルト値* – なし。

**Configuration.WelcomeMessages.ContentType**  
説明 - ウェルカムメッセージのタイプを示します。  
使用できる値 – ` PlainText` \| `SSML`  
+ *PlainText* - メッセージには UTF-8 形式テキストが含まれています。
+ *SSML* - メッセージには音声出力のテキスト形式が含まれています。
*必須* – はい。  
*デフォルト値* – なし。

## StartBotConversation アクションの使用
<a name="using-startbot"></a>

一般的な `StartBotConversation` アクションの例を次に示します。

```
{
  "SchemaVersion": "1.0",
  "Actions":[
    {
      "Type": "StartBotConversation",
      "Parameters": {
        "CallId": "{{call-id-1}}",
        "BotAliasArn": "{{arn}}:{{aws:lex}}:{{us-east-1}}:{{123456789012}}:{{bot-alias}}/{{ABCDEFGHIH}}/{{MNOPQRSTUV}}",
        "LocaleId": "{{en_US}}",
        "Configuration": {
          "SessionState": {
             "SessionAttributes": {
                "mykey1": "{{myvalue1}}" 
             },
             "DialogAction" : {
               "Type": "{{ElicitIntent}}"
             }
          },
          "WelcomeMessages": [
            {
              "Content": "{{Welcome. How can I help you?}}",
              "ContentType": "{{PlainText}}" 
            }
          ]
        }
      }
    }
  ]
}
```

## ACTION\_SUCCESSFUL イベントの処理
<a name="bot-action-success"></a>

`StartBotConversation` アクションの一般的な `ACTION_SUCCESSFUL` イベントの例を次に示します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData":
    {
        "CallId": "{{string}}",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action.
        },
        "CallDetails": {
            // Information about the call associated with the AWS Lambda invocation.
        },
        "IntentResult": {
            "SessionId": "{{string}}",
            "SessionState": {
                "SessionAttributes": {
                    "string": "{{string}}"
                },
                "Intent": {
                    "Name": "{{string}}",
                    "Slots":  {
                        "{{string}}": {
                            "Value": {
                                "OriginalValue": "{{string}}",
                                "InterpretedValue": "{{string}}",
                                "ResolvedValues": ["{{string}}"]
                            },
                            "Values": []
                        }
                    },
                    "State": "{{string}}",
                    "ConfirmationState": "{{string}}"
                }
            },
            "Interpretations": [
                {
                    "NluConfidence": {
                        "Score": {{number}}
                    },
                    "Intent": {
                        "Name": "{{string}}",
                        "Slots": {
                            "{{string}}": {
                                "Value": {
                                    "OriginalValue": "{{string}}",
                                    "InterpretedValue": "{{string}}",
                                    "ResolvedValues": ["{{string}}"]
                                },
                                "Values": []
                            }
                        },
                        "State": "{{string}}",
                        "ConfirmationState": "{{string}}"
                    }
                }
            ]
        }
    }
}
```

**IntentResult**  
ユーザーとボットの間の会話の結果。

**SessionId**  
ボット会話セッションの識別子。ユーザーがボットとの会話を開始すると、Amazon Lex によりセッションが作成されます。セッションは、ユーザーとボットの間で交換される情報をカプセル化します。`StartBotConversation` アクションは通話 ID をボットの `SessionId` として使用します。Lex [https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_PutSession.html) API を使用して、ユーザーとボットの間のセッション状態を変更できます。詳細については、「*Amazon Lex Developer Guide*」の「[Managing sessions with the Amazon Lex V2 API](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html)」を参照してください。

**SessionState**  
ユーザーの Amazon Lex v2 セッションの状態。

**SessionState.SessionAttributes**  
セッション固有のコンテキスト情報を表すキー/値のペアのマップ。マップには、ボットにアタッチされた Lambda 関数と PSTN オーディオ Lambda 関数の間で渡されるボット会話情報が含まれています。

**Interpretations**  
Amazon Lex によって導き出された、顧客の発話を満たす可能性のあるインテントのリスト。`NluConfidence` スコアの最も高いインテントが `SessionState` のインテントになります。

**Interpretations.NluConfidence.Score**  
インテントがユーザーのインテントを満たしているという Amazon Lex v2 の信頼度を示すスコア。0.00～1.00 までの範囲になります。スコアが高いほど、信頼度が高くなります。

**Intent**  
ユーザーが実行したいアクション。

**Intent.Name**  
インテントの名前。

**Intent.Slots**  
インテントのすべてのスロットのマップ。スロットの名前は、スロットの値にマップされます。スロットがいっぱいになっていない場合は、値は null です。

**Intent.Slots.Value**  
スロットの値。

**Intent.Slots.Values**  
スロットにユーザーが指定した 1 つ以上の値のリスト。

**Intent.Slots.Value.OriginalValue**  
スロットに対して入力された、ユーザーの返信のテキスト。

**Intent.Slots.Value.InterpretedValue**  
説明 - Amazon Lex v2 がスロットについて決定する値。実際の値は、ボットの値選択戦略の設定によって異なります。ユーザーが入力した値を使用できるか、Amazon Lex v2 に `resolvedValues` のリスト中の値を選ばせるかが行えます。

**Intent.Slots.Value.ResolvedValues**  
 Amazon Lex v2 がスロットで認識した追加の値のリスト。

**Intent.State**  
説明 - インテントの履行情報。使用できる値:  
+ `Failed` - Lambda 関数はインテントを履行できませんでした。
+ `Fulfilled` - Lambda 関数はインテントを履行しました。
+ `ReadyForFulfillment` - インテントの情報が存在し、Lambda 関数はインテントを履行できます。

**Intent.ConfirmationState**  
説明 - インテントの確認を示します。使用できる値:  
+ *Confirmed* - インテントが履行されます。
+ *Denied* - ユーザーは確認プロンプトで「いいえ」と答えました。
+ *None* - ユーザーは確認を求められなかったか、または確認を求められたが肯定も否定もしませんでした。

## ACTION\_FAILED イベントの処理
<a name="bot-action-fail"></a>

`StartBotConversation` アクションの一般的な `ACTION_FAILED` イベントの例を次に示します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": number,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData":{
        "CallId": "{{string}}",
        "Type": "StartBotConversation",
        "Parameters": {
            // parameters provided in the StartBotConversation action
        },
        "ErrorType": "{{string}}",
        "ErrorMessage": "{{string}}"
    },
    "CallDetails":{
    }
}
```

**ErrorType**  
エラー状態を個別に識別する文字列。

**ErrorMessage**  
エラー状態の一般的な説明。

### エラーコード
<a name="action-errors"></a>

次の表は、Lambda 関数が `ACTION_FAILED` イベントで返す可能性のあるエラーメッセージを示しています。


| エラー | 説明 | 
| --- | --- | 
| `InvalidActionParameter` | 1 つ以上のアクションパラメータが無効です。エラーメッセージには、無効なパラメータが示されます。 | 
| `SystemException` | アクションの実行中に、システムエラーが発生しました。 | 
| `ResourceNotFound` | 指定したボットは見つかりませんでした。 | 
| `ResourceAccessDenied` | ボットへのアクセスは拒否されます。 | 
| `ActionExecutionThrottled` | ボット会話サービスの制限を超えています。エラーメッセージには、特定のサービスの制限を超えていることが示されます。 | 

## ボットを使用するアクセス許可の付与
<a name="bot-permissions"></a>

次の例では、Amazon Chime SDK に Amazon Lex [https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html](https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_StartConversation.html) API を呼び出すアクセス許可を付与しています。ユーザーにボットを使用する Audio サービスのアクセス許可を明示的に付与する必要があります。条件ブロックはサービスプリンシパルに必要です。条件ブロックはグローバルコンテキストキー `AWS:SourceAccount` と `AWS:SourceArn` を使用する必要があります。`AWS:SourceAccount` は AWS アカウント ID です。`AWS:SourceArn` は、Lex ボットを呼び出す PSTN オーディオアプリケーションのリソース ARN です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowChimePstnAudioUseBot",
      "Effect": "Allow",
      "Principal": {
        "Service": "voiceconnector.chime.amazonaws.com"
      },
      "Action": "{{lex:StartConversation}}",
  "Resource": "arn:aws:lex:{{us-east-1}}:{{123456789012}}:bot-alias/{{botId}}/{{aliasId}}",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "{{123456789012}}"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:voiceconnector:{{us-east-1}}:{{123456789012}}:sma/{{smaId}}"
        }
      }
    }
  ]
}
```

------

## 音声と DTMF のタイムアウトの設定
<a name="bot-timeouts"></a>

ユーザー入力をキャプチャするときの音声と DTMF のタイムアウトを設定できます。ボットとの会話を開始するときにセッション属性を使用してタイムアウトを設定し、必要に応じて Lex ボットの Lambda 関数で上書きできます。Amazon Lex では、インテントまたはボットに複数のスロットを設定できます。セッション属性をインテントレベルとスロットレベルに適用するように指定できるため、特定のタイプの入力を収集するときにのみ属性を設定するように指定できます。例えば、アカウント番号を収集する場合は、日付を収集する場合よりも長いタイムアウトを指定できます。セッション属性キーにはワイルドカードを使用できます。

例えば、すべてのインテントのすべてのスロットの音声タイムアウトを 4000 ミリ秒に設定するには、セッション属性名として `x-amz-lex:start-timeout-ms:*:*`、セッション属性値として `4000` を使用して、セッション属性を指定できます。詳細については、「*Amazon Lex Developer Guide*」の「[Configuring timeouts for capturing user input](https://docs.aws.amazon.com/lexv2/latest/dg/session-attribs-speech.htm)」を参照してください。

## 会話中に DTMF 入力の使用
<a name="bot-dtmf"></a>

Amazon Lex ボットは、会話中の音声入力とキーパッド入力をサポートします。ボットはキーパッド入力を DTMF の数字として解釈します。入力をシャープ記号 (\#) で終了し、星の記号 (\*) を使用して会話をキャンセルするよう問い合わせに求めることができます。顧客にシャープ記号で入力を終了するように促さない場合、Lex は 5 秒後に追加のキー押下を待たなくなります。

## 請求とサービスクォータ
<a name="bot-billing"></a>

AWS は、次のコストを請求します。
+ 通話での Amazon Chime SDK の使用。詳細については、「[Amazon Chime SDK の料金](https://aws.amazon.com/chime/chime-sdk/pricing/)」を参照してください。
+ ユーザーの音声を解釈するための Amazon Lex の使用。詳細については、「[Amazon Lex 料金](https://aws.amazon.com/lex/pricing/)」を参照してください。
+ ボットからのテキスト応答を合成するための Amazon Polly の使用。詳細については、「[Amazon Polly 料金](https://aws.amazon.com/polly/pricing/)」を参照してください。

また、次のサービスクォータに注意する必要があります。
+ Amazon Chime SDK には、PSTN オーディオ [StartBotConversation](#start-bot-conversation) アクションで使用できる Amazon Lex ボットの最大数に対するサービスクォータがあります。詳細については、「*AWS 全般のリファレンス*」の「[SIP trunking and voice quotas](https://docs.aws.amazon.com/general/latest/gr/chime-sdk.html#chm-sdk-pstn-quotas)」を参照してください。
+ Amazon Lex には、Lex ボットあたりの同時音声会話の最大数に関するサービスクォータがあります。クォータの増量については、Amazon Lex サービスチームにお問い合わせください。詳細については、「*Amazon Lex Developer Guide*」の「[Guidelines and quotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html)」を参照してください。
+ Amazon Polly には、テキスト応答の合成に関するサービスクォータがあります。クォータの増量については、Amazon Polly サービスチームにお問い合わせください。Amazon Polly サービスのクォータの詳細については、「*Amazon Polly Developer Guide*」の「[Quotas in Amazon Polly](https://docs.aws.amazon.com/polly/latest/dg/limits.html)」を参照してください。