

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

# PlayAudio
<a name="play-audio"></a>

通話の任意のレッグでオーディオファイルを再生します。オーディオは何回でも繰り返すことができます。進行中のオーディオは、`PlaybackTerminators` で設定された DTMF ディジットを使用して終了できます。

現在、Amazon Chime SDK は Amazon Simple Storage Service (Amazon S3) バケットからのオーディオファイルの再生のみをサポートしています。S3 バケットは、SIP メディアアプリケーションと同じ AWS アカウントに属している必要があります。さらに、Amazon Chime SDK Voice Connector サービスプリンシパルに `s3:GetObject` 許可を付与する必要があります。この操作は、S3 コンソールまたはコマンドラインインターフェイス (CLI) を使用して実行できます。

次のコード例は、一般的なバケットポリシーを示しています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Audio Service は、Sip メディアアプリケーションの代わりに S3 バケットに対して読み書きします。[「混乱した代理」の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)を回避するには、S3 バケットアクセスを単一の SIP メディアアプリケーションに制限できます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SMARead",
            "Effect": "Allow",
            "Principal": {
                "Service": "voiceconnector.chime.amazonaws.com"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::bucket-name/*",
                "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:chime:us-east-1:111122223333:sma/sip-media-application-id"
                }
            }
        }
    ]
}
```

------

次のコード例は、一般的なアクションを示しています。

```
{
    "Type": "PlayAudio",
    "Parameters": {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A",
        "PlaybackTerminators": ["1", "8", "#"],
        "Repeat": "5",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "valid-S3-bucket-name",
            "Key": "wave-file.wav"
        }
    }
}
```

**CallID**  
*説明* – `CallDetails` の参加者の `CallId`。  
*使用できる値* – 有効な通話 ID。  
*必須* – `ParticipantTag` が存在する場合は、いいえ。  
*デフォルト値* – なし。

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

**PlaybackTerminator**  
*説明* – ユーザーからの DTMF 入力を使用して、進行中のオーディオを終了します。  
*使用できる値* –「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「9」、「\$1」、「\$1」の値の配列  
*必須* – いいえ  
*デフォルト値* – なし

**Repeat**  
*説明* – 指定した回数だけオーディオを繰り返します。  
*使用できる値* – 0 より大きい整数  
*必須* – いいえ  
*デフォルト値* – 1

**AudioSource.Type**  
*説明* – オーディオファイルのソースタイプ。  
*使用できる値* – S3。  
*必須* – はい。  
*デフォルト値* – なし。

**AudioSource.BucketName**  
*説明* – S3 ソースタイプの場合、S3 バケットは SIP アプリケーションと同じ AWS アカウントに属している必要があります。バケットは、Amazon Chime SDK Voice Connector サービスプリンシパル (voiceconnector.chime.amazonaws.com) にアクセスできる必要があります。  
*使用できる値* – Amazon Chime SDK が `s3:GetObject` アクションにアクセスできる有効な S3 バケット。  
*必須* – はい。  
*デフォルト値* – なし。

**AudioSource.key**  
*説明* – S3 ソースタイプの場合は、`AudioSource.BucketName` 属性で指定された S3 バケットのファイル名。  
*使用できる値* – 有効なオーディオファイル。  
*必須* – はい。  
*デフォルト値* – なし。

SIP メディアアプリケーションは、ソース URL からオーディオの再生を試みます。50 MB 以下の未圧縮の PCM .wav ファイルを使用できます。Amazon Chime SDK では、モノラル 8 kHz が推奨されます。

ダイヤルプランの最後の指示が `PlayAudio`で、ファイルが再生を終了するか、ユーザーがキーを押して再生を停止すると、アプリケーションは次の例に示すイベントで AWS Lambda 関数を呼び出します。

```
{
    "SchemaVersion": "1.0",
    "Sequence": INTEGER,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "valid-S3-bucket-name",
                "Key": "wave-file.wav",
         }           
     }
}
```

有限小数によってオーディオが停止した後は、繰り返されません。

**エラー処理**  
検証ファイルにエラーが含まれている場合、またはアクションの実行中にエラーが発生した場合、SIP メディアアプリケーションは適切なエラーコードを使用して AWS Lambda 関数を呼び出します。


|  エラー  |  メッセージ  |  Reason  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  オーディオソースパラメータが無効です。  |  このエラーは、さまざまな理由で発生します。例えば、許可や URL の問題により、SIP メディアアプリケーションがファイルにアクセスできなくなります。または、形式、継続時間、サイズなどにより、オーディオファイルの検証に失敗することがあります。  | 
|  `SystemException`  |  アクションの実行中にシステムエラーが発生しました。  |  アクションの実行中に、別のシステムエラーが発生しました。  | 
|  `InvalidActionParameter`  |  アクションの CallId または ParticipantTag パラメータが無効です。  |  アクションに無効なパラメータが含まれています。  | 

次のコード例は、一般的な呼び出し失敗を示しています。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 2,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudio",
        "Parameters" : {
            "CallId": "call-id-1",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file.wav"
            },
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

GitHub での実際の例を参照してください。
+ [https://github.com/aws-samples/amazon-chime-sma-bridging](https://github.com/aws-samples/amazon-chime-sma-bridging)
+ [https://github.com/aws-samples/amazon-chime-sma-call-forwarding](https://github.com/aws-samples/amazon-chime-sma-call-forwarding)
+ [https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications](https://github.com/aws-samples/amazon-chime-sma-outbound-call-notifications)
+ [https://github.com/aws-samples/amazon-chime-sma-on-demand-recording](https://github.com/aws-samples/amazon-chime-sma-on-demand-recording)
+ [https://github.com/aws-samples/amazon-chime-sma-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)