

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

# AppInstanceBots を Amazon Chime SDK メッセージングのインテリジェントチャネルエージェントとして使用する
<a name="appinstance-bots"></a>

`AppInstanceBots` はインテリジェントなチャネルエージェントとして使用できます。エージェントは、チャネルメンバーによって `ChannelMessages` から送信されたキーフレーズを認識します。ボットの自然言語理解モデルがメッセージを解決します。これにより、1 人以上のチャネルメンバーが、ボットのモデルによって定義された自然言語ダイアログに参加できるようになります。ボットを提供することで、対話の深さとエンタープライズシステムとの統合を制御できます。

**前提条件**
+ Amazon Chime SDK の基本機能 (`AppInstanceUsers` の作成、チャネルの管理、メッセージの送受信など) に関する知識。
+ Amazon Chime SDK メッセージング API を呼び出す機能。
+ Amazon Lex V2 ボットの作成、インテントとスロットのモデリング、ボットのバージョン、エイリアスの作成、セッション状態の使用、Lambda フックの統合など、Amazon Lex V2 の基本的な機能に関する知識。

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

**Topics**
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成](create-lex-bot.md)
+ [Amazon Chime SDK メッセージング用の AppInstance ボットのセットアップ](appinstance-bot-setup.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot のチャネルメンバーシップの作成](channel-membership.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot にメッセージを送信する](message-appinstancebot.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex からのメッセージの処理](process-from-lexv2.md)
+ [Amazon Chime SDK メッセージング用の AppInstanceBot からのレスポンスの処理](process-response.md)
+ [ルールを使用して Amazon Chime SDK メッセージング用の Amazon EventBridge にイベントを送信する](event-bridge-alerts.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットで設定された AppInstanceBots のトラブルシューティング](troubleshoot-lex-bots.md)

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成
<a name="create-lex-bot"></a>

AppInstance ボットをエージェントとして使用するには、まず Amazon Lex V2 ボットを作成して、インテリジェントエージェントシナリオでのダイアログインタラクションを管理する必要があります。Amazon Lex V2 ボットの構築を開始するには、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 の開始方法](https://docs.aws.amazon.com/lexv2/latest/dg/getting-started.html)」を参照してください。Amazon Lex V1 ボットから Amazon Lex V2 への移行については、「[Amazon Lex V1 から V2 への移行ガイド](https://docs.aws.amazon.com/lexv2/latest/dg/migration.html)」を参照してください。

**Topics**
+ [前提条件](#lex-prereqs)
+ [呼び出しアクセス許可の付与](#invocation-perms)
+ [Amazon Chime SDK メッセージングの挨拶のインテントの作成](welcome-intent.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットバージョンの作成](lex-versions.md)
+ [Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットエイリアスの作成](lex-aliases.md)

## 前提条件
<a name="lex-prereqs"></a>

Amazon Lex V2 ボットは以下の前提条件を満たしている必要があります。
+ Amazon Lex V2 ランタイムエンドポイントをサポートする AWS リージョンでボットを作成する必要があります。
+ ボットは、 および と同じ AWS アカウントとリージョンに作成する必要があります`AppInstance``AppInstanceBot`。
+ ボットは、リソースベースのポリシーを介して `messaging.chime.amazonaws.com` サービスプリンシパルに呼び出し許可を付与する必要があります。
+ ボットは挨拶のインテントをモデル化できます。これにより、`AppInstanceBot` はチャネルのメンバーシップの取得時に自身とその機能をアナウンスできます。
+ `AppInstanceBot` を設定するには、ボットの製品版とエイリアスが必要です。
+ ボットはサポートされている言語とロケールを使用する必要があります。言語とロケールの詳細については、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 でサポートされている言語とロケール](https://docs.aws.amazon.com/lexv2/latest/dg/how-languages.html)」を参照してください。

## 呼び出しアクセス許可の付与
<a name="invocation-perms"></a>

`AppInstanceBot` が Amazon Lex V2 ボットを呼び出すには、Amazon Chime SDK メッセージングサービスのプリンシパルに Amazon Lex ボットリソースを呼び出すアクセス許可が付与されている必要があります。Amazon Lex V2 のリソースベースのポリシーアクセス許可の詳細については、「Amazon Lex V2 開発者ガイド」の「[Amazon Lex V2 のリソースベースのポリシーの例](https://docs.aws.amazon.com/lexv2/latest/dg/security_iam_resource-based-policy-examples.html)」を参照してください。

以下に、リソースベースのポリシーの例を示します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "messaging.chime.amazonaws.com"
      },
      "Action": [
        "lex:PutSession",
        "lex:DeleteSession",
        "lex:RecognizeText"
      ],
      "Resource": "arn:aws:lex:us-east-1:111122223333:bot-alias/lex-bot-id/lex-bot-alias-id",
      "Condition": {
        "StringEquals": {
        "AWS:SourceAccount": "111122223333"
        },
        "ArnEquals": {
        "AWS:SourceArn": "arn:aws:chime:us-east-1:111122223333:app-instance/app-instance-id/bot/app-instance-bot-id"
        }
      }
    }
  ]
}
```

------

**注記**  
`AppInstanceBot` が Amazon Lex V2 ボットを呼び出せるようにするには、AppInstanceBot の ID を使用します。`AppInstance` 内のすべての `AppInstanceBots` が Amazon Lex V2 ボットを呼び出せるようにするには、ワイルドカードを使用します。例えば、次のようになります。  
`arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/*`

# Amazon Chime SDK メッセージングの挨拶のインテントの作成
<a name="welcome-intent"></a>

Amazon Lex V2 ボットモデルに任意の挨拶のインテントを追加すると、`AppInstanceBot` がチャネルに参加したときに自身とその機能をアナウンスできます。挨拶のインテントはメッセージを表示したり、チャネルメンバーとの対話を開始したりできます。挨拶のインテントの名前はさまざまで、AppInstanceBot の設定で定義します。

インテントの詳細については、「Amazon Lex V2 開発者ガイド」の「[インテントの追加](https://docs.aws.amazon.com/lexv2/latest/dg/build-intents.html)」を参照してください。

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットバージョンの作成
<a name="lex-versions"></a>

Amazon Lex V2 ボットを作成する場合、作成するのはドラフトバージョンのみです。ドラフトはボットの作業用コピーで、更新できます。デフォルトでは、ドラフトバージョンには `TestBotAlias` と呼ばれるエイリアスが関連付けられているため、ドラフトボットは手動テストにのみ使用してください。

ダイアログのモデリングとドラフトボットの構築が完了したら、ドラフト Lex ボットの 1 つ以上のバージョン、つまり番号付きのスナップショットを作成します。バージョンを使用すると、クライアントアプリケーションで使用される実装を制御できます。例えば、開発、ベータデプロイ、本稼働など、ワークフローの異なる段階で使用するためにバージョンを発行できます。

Lex ボットのバージョニングの詳細については、「Amazon Lex V2 開発者ガイド」の「[バージョンの作成](https://docs.aws.amazon.com/lexv2/latest/dg/versions.html)」を参照してください。

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットエイリアスの作成
<a name="lex-aliases"></a>

Amazon Lex V2 ボットのバージョンを 1 つ以上作成したら、エイリアスを作成します。エイリアスは Amazon Lex V2 ボットのバージョンへの名前付きポインタとして機能します。例えば、エイリアスには、一度に 1 つのバージョンのみを関連付けることができます。

Lex ボットのエイリアスの詳細については、「Lex V2 開発者ガイド」の「[エイリアスの作成](https://docs.aws.amazon.com/lexv2/latest/dg/aliases.html)」を参照してください。

# Amazon Chime SDK メッセージング用の AppInstance ボットのセットアップ
<a name="appinstance-bot-setup"></a>

モデル、バージョン、エイリアスを指定した Amazon Lex V2 ボットを作成したら、Amazon Chime SDK メッセージング API または CLI を使用して AppInstanceBot を作成します。API の使用方法の詳細については、[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_identity-chime_CreateAppInstanceBot.html) API のドキュメントを参照してください。

**注記**  
`InvokedBy` 属性を使用して、`AppInstanceBot` のダイアログインタラクション動作を設定します。標準メッセージやターゲットを絞ったメッセージなど、ボットをトリガーするメッセージの種類を設定できます。

次の例は、 CLI AWS を使用して、 を含むすべての標準メッセージ`MENTIONS`とターゲットメッセージが呼び出すことができる AppInstanceBot を作成する方法を示しています。

```
aws chime-sdk-identity create-app-instance-bot \
--app-instance-arn app-instance-arn \
--name app-instance-bot-name \
--configuration '{
   "Lex": {
      "LexBotAliasArn": "lex-bot-alias-arn",
      "LocaleId": "lex_bot_alias_locale_id",
      "InvokedBy": {
          "StandardMessages": "MENTIONS",
          "TargetedMessages": "ALL"
      }
      "WelcomeIntent": "welcome-intent-name"
   }
}
```

# Amazon Chime SDK メッセージング用の AppInstanceBot のチャネルメンバーシップの作成
<a name="channel-membership"></a>

AppInstanceBot を作成したら、新規または既存のチャネルにメンバーとして追加します。詳細については、「Amazon Chime SDK メッセージング API」ドキュメントの「[CreateChannel](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannel.html)」と「[CreateChannelMembership](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_CreateChannelMembership.html)」を参照してください。

次の例は、 CLI AWS を使用してチャネルを作成し、メンバー`AppInstanceBot`として を追加する方法を示しています。

```
aws chime-sdk-messaging create-channel \
--chime-bearer caller_app_instance_user_arn \
--app-instance-arn app_instance_arn \
--name channel_name \
--member-arns '[
   "app_instance_bot_arn"
]'
```

次の例は、 CLI AWS を使用して既存のチャネル`AppInstanceBot`に を追加する方法を示しています。

```
aws chime-sdk-messaging create-channel-membership \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--member-arn app_instance_bot_arn
```

# Amazon Chime SDK メッセージング用の AppInstanceBot にメッセージを送信する
<a name="message-appinstancebot"></a>

[https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_SendChannelMessage.html) API を使用して AppInstanceBot にメッセージを送信します。メッセージは AppInstanceBot がメンバーになっているチャネルに送信します。[自然言語理解モデル](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)がメッセージの内容を認識して Amazon Lex のインテントを引き出すと、AppInstanceBot はチャネルメッセージで応答し、ダイアログを開始します。

ターゲットメッセージをチャネルのメンバー (AppInstanceUser や AppInstanceBot など) に送信することもできます。ターゲットを絞ったメッセージを閲覧できるのは、ターゲットと送信者だけです。ターゲットを絞ったメッセージに対してアクションを実行できるのは、そのメッセージを表示できるユーザーのみです。ただし、管理者は表示できなくてもターゲットを絞ったメッセージを削除できます。

次の例は、 CLI AWS を使用してチャネルメッセージを送信する方法を示しています。

```
aws chime-sdk-messaging send-channel-message \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn \
--content content \
--type STANDARD \
--persistence PERSISTENT
```

# Amazon Chime SDK メッセージング用の Amazon Lex からのメッセージの処理
<a name="process-from-lexv2"></a>

Amazon Lex にメッセージを送信すると、Amazon Chime SDK メッセージングは、チャネルと送信者の ARN 情報をリクエスト属性として `CHIME.channel.arn` と `CHIME.sender.arn` に入力します。この属性を使用して、メッセージの送信者と、送信者が所属するチャネルを特定できます。詳細については、*Amazon Lexデベロッパーガイド*」の[AWS 「Lambda 関数を使用したカスタムロジックの有効化](https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html)」を参照してください。

# Amazon Chime SDK メッセージング用の AppInstanceBot からのレスポンスの処理
<a name="process-response"></a>

ユーザーがメッセージを送信すると、AppInstanceBot はチャネルメッセージで応答します。チャネルメッセージを一覧表示して、ボットのレスポンスを取得できます。

次の例は、CLI を使用してチャネルメッセージを一覧表示する方法を示しています。

```
aws chime-sdk-messaging list-channel-messages \
--chime-bearer caller_app_instance_user_arn \
--channel-arn channel_arn
```

AppInstanceBot からの成功レスポンスは以下の形式になります。

```
{
    "MessageId": "messageId",
    "Content": "*{\"Messages\":[{\"...\"}]}*",
    "ContentType": "application/amz-chime-lex-msgs",
    "MessageAttributes": {
        "CHIME.LEX.sessionState.intent.name": {
            "StringValues": [
                "lex_bot_intent_name"
            ]
        },
        "CHIME.LEX.sessionState.intent.state": {
            "StringValues": [
                "lex_bot_intent_fullfilment_status"
            ]
        },
        "CHIME.LEX.sessionState.originatingRequestId": {
            "StringValues": [
                "lex_bot_originating_request_id"
            ]
        },
        "CHIME.LEX.sessionState.sessionId": {
            "StringValues": [
                "lex_bot_session_id"
            ]
        }
    },
    "Sender": {
        "Arn": "app_instance_bot_arn",
        "Name": "app_instance_bot_name"
    },
    "Type": "STANDARD",
}
```

**Content**  
`Content` フィールドには Amazon Lex V2 ボットから送信されるメッセージのリストが含まれます。これらのメッセージの詳細については、Amazon Lex V2 `RecognizeText` API の「[メッセージ](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html#lexv2-runtime_RecognizeText-response-messages)」を参照してください。  
以下の例は、挨拶のメッセージで `Content` フィールドを使用する方法を示しています。  

```
{
    "Messages":
    [
        {
            "Content": "Hello!",
            "ContentType": "PlainText"
        },
        {
            "ContentType": "ImageResponseCard",
            "ImageResponseCard":
            {
                "Title": "Hello! I'm BB, the Bank Bot.",
                "Subtitle": "I can help you with the following transactions",
                "Buttons":
                [
                    {
                        "Text": "Check balance",
                        "Value": "Check balance"
                    },
                    {
                        "Text": "Escalate to agent",
                        "Value": "Escalate to agent"
                    }
                ]
            }
        }
    ]
}
```
失敗レスポンスの場合、[コンテンツ] フィールドには以下の形式のエラーメッセージとコードが含まれます。  

```
{
    "Code": error_code
}
```

**ContentType**  
`ContentType` は `Content` フィールドに含まれるペイロードのタイプを指し、`Content` フィールドを解析するにはこれをチェックする必要があります。  
Lex V2 ボットは別の `ContentType` を使用します。
`ContentType` は成功レスポンスの場合は `application/amz-chime-lex-msgs` に、失敗レスポンスの場合は `application/amz-chime-lex-error` に設定されます。

**MessageAttribute**  
*MessageAttribute* は、文字列キーから文字列値へのマッピングです。`AppInstanceBot` からのレスポンスには、Amazon Lex ボットからのレスポンスにマッピングされた以下のメッセージ属性が含まれます。  
+ **CHIME.LEX.sessionState.intent.name** — リクエストが処理しようとした Lex ボットのインテントの名前。
+ **CHIME.LEX.sessionState.intent.state** — インテントの現在の状態。指定できる値には、`Fulfilled`、`InProgress`、`Failed` などがあります。
+ **CHIME.LEX.sessionState.originatingRequestId** — Amazon Lex ボットへの特定のリクエストを表す一意の識別子。これは AppInstanceBot をトリガーした送信元のユーザーメッセージの `MessageId` に設定されます。
+ **CHIME.LEX.sessionState.sessionId** — ユーザーとボットの間の会話を識別する一意の識別子。ユーザーがボットとのチャットを開始すると、Amazon Lex によりセッションが作成されます。
Amazon Lex セッションとセッション状態の詳細については、「*Amazon Lex API リファレンス*」の「[https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html)」と、「*Amazon Lex V2 開発者ガイド*」の「[セッションの管理](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html)」を参照してください。  
Amazon Lex V2 が返す属性の詳細については、「[Amazon Lex ランタイム V2](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_Operations_Amazon_Lex_Runtime_V2.html)」API を参照してください。

# ルールを使用して Amazon Chime SDK メッセージング用の Amazon EventBridge にイベントを送信する
<a name="event-bridge-alerts"></a>

Amazon Chime SDK は、エラーが原因で Amazon Lex V2 ボットを呼び出せなくなった場合、EventBridge イベントを配信します。それらのイベントを認識し、ルールが一致したときに自動的にアクションを実行する EventBridge ルールを作成できます。詳細については、「Amazon EventBridge ユーザーガイド」の「[Amazon EventBridge ルール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)」を参照してください。

次の例は、一般的な失敗イベントを示しています。

```
{
  version: '0',
  id: '12345678-1234-1234-1234-111122223333',
  'detail-type': 'Chime Messaging AppInstanceBot Lex Failure',
  source: 'aws.chime',
  account: 'aws-account-id',
  time: 'yyyy-mm-ddThh:mm:ssZ',
  region: "region",
  resources: [],
  detail: {    
    resourceArn: 'arn:aws:chime:region:aws-account-id:app-instance/app-instance-id/bot/app-instance-bot-id',
    failureReason: "1 validation error detected: Value at 'text' failed to satisfy constraint: Member must have length less than or equal to 1024 (Service: LexRuntimeV2, Status Code: 400, Request ID: request-id)"
  }
}
```

# Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットで設定された AppInstanceBots のトラブルシューティング
<a name="troubleshoot-lex-bots"></a>

以下のトピックでは、AppInstanceBots の一般的な問題のトラブルシューティング方法を説明します。

## Amazon Lex V2 の障害の検出
<a name="find-lex-failures"></a>

Amazon Chime SDK メッセージングは、エラーが原因で Amazon Lex V2 ボットを呼び出せなくなった場合、[Amazon EventBridge イベント](https://docs.aws.amazon.com/chime-sdk/latest/dg/event-bridge-alerts.html)を配信します。ルールの設定と通知ターゲットの設定の詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Getting started with Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)」を参照してください。

 AWS CloudWatch Logs で EventBridge イベントを受信した場合、CloudWatch Logs Insights を使用して AWS 、Amazon Chime SDK メッセージングの詳細タイプに基づいて EventBridge イベントをクエリできます。`failureReason` には障害の原因が一覧表示されます。

以下に、一般的なクエリの例を示します。

```
fields @timestamp, @message
| filter `detail-type` = "Chime Messaging AppInstanceBot Lex Failure"
| sort @timestamp desc
```

Amazon Chime SDK メッセージングが Amazon Lex V2 ボットを呼び出すことができる場合、SDK はエラーメッセージと共に `CONTROL` メッセージを送信します。

## Amazon Lex V2 ボットのアクセス許可エラーのトラブルシューティング
<a name="lex-permission-errors"></a>

AppInstanceBot が Amazon Lex V2 ボットを呼び出すには、Amazon Chime SDK メッセージングサービスのプリンシパルに Amazon Lex V2 ボットリソースを呼び出すアクセス許可が付与されている必要があります。また、リソースポリシー条件の `AWS:SourceArn` が AppInstanceBot の ARN と一致していることを確認してください。

Amazon Lex V2 ボットを呼び出すように AppInstanceBot を設定する方法の詳細については、このセクションの前半にある「[Amazon Chime SDK メッセージング用の Amazon Lex V2 ボットの作成](create-lex-bot.md)」を参照してください。

## Amazon Lex V2 ボットスロットリングのトラブルシューティング
<a name="lex-throttling"></a>

Amazon Lex には、ボットエイリアスごとにテキストモードでの同時会話の最大数に関するサービスクォータがあります。クォータの増量については、Amazon Lex サービスチームにお問い合わせください。詳細については、「*Amazon Lex デベロッパーガイド*」の「[Amazon Lex guidelines and quotas](https://docs.aws.amazon.com/lexv2/latest/dg/quotas.html)」を参照してください。