

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# PlayAudioAndGetDigits
<a name="play-audio-get-digits"></a>

播放音訊並收集 DTMF 數字。如果發生故障，例如使用者未輸入正確的 DTMF 位數，動作會播放「失敗」音訊，然後重播主要音訊，直到 SIP 媒體應用程式耗盡 `Repeat` 參數中定義的嘗試次數。

您必須從 S3 儲存貯體播放音訊檔案。S3 儲存貯體必須屬於與 SIP 媒體應用程式相同的 AWS 帳戶。此外，您必須將 `s3:GetObject`許可授予 [ Amazon Chime SDK Voice Connector 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) `voiceconnector.chime.amazonaws.com`。您可以使用 S3 主控台或 CLI 來執行此操作。

下列程式碼範例顯示典型的 S3 儲存貯體政策。

------
#### [ 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 Media Application 讀取和寫入 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"
                }
            }
        }
    ]
}
```

------

下列範例顯示典型`PlayAudioAndGetDigits`的動作。

```
{
    "Type" : "PlayAudioAndGetDigits",
    "Parameters" : {
        "CallId": "call-id-1",
        "ParticipantTag": "LEG-A"      
        "InputDigitsRegex": "^\d{2}#$",
        "AudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-1.wav"
        },
        "FailureAudioSource": {
            "Type": "S3",
            "BucketName": "bucket-name",
            "Key": "audio-file-failure.wav"
        },
        "MinNumberOfDigits": 3,
        "MaxNumberOfDigits": 5,
        "TerminatorDigits": ["#"],        
        "InBetweenDigitsDurationInMilliseconds": 5000,
        "Repeat": 3,
        "RepeatDurationInMilliseconds": 10000
    }
}
```

**CallId**  
*描述* – `CallId` AWS Lambda 函數調用 `CallDetails` 中的參與者描述  
*允許的值* – 有效的呼叫 ID  
*必要* – 否  
*預設值* — 無

**ParticipantTag**  
*描述* – `ParticipantTag` 中其中一個已連線參與者的描述 `CallDetails`  
*允許的值* – `LEG-A`或 `LEG-B`  
*必要* – 否  
*預設值* – 如果您指定 `ParticipantTag` ，則叫用`callLeg`忽略的預設值 `CallId`

**InputDigitsRegex**  
*描述* – 規則表達式模式  
*允許的值* – 有效的規則表達式模式  
*必要* – 否  
*預設值* — 無

**AudioSource.Type**  
*描述* – 音訊檔案類型的來源類型  
*允許的值* – S3 儲存貯體  
*必要* – 是  
*預設值* – `"S3"`

**AudioSource.BucketName**  
*描述* – 對於 S3 `AudioSource.Type`值，S3 儲存貯體必須屬於與 SIP 媒體應用程式相同的 AWS 帳戶。儲存貯體 S3 必須能夠存取 [Amazon Chime SDK Voice Connector 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) `voiceconnector.chime.amazonaws.com`。  
*允許的值* – Amazon Chime SDK 具有`s3:GetObject`動作存取權的有效 S3 儲存貯體。  
*必要* – 是  
*預設值* — 無

**AudioSource.Key**  
*描述* – `AudioSource.BucketName` S3 儲存貯體中音訊物件的金鑰名稱。  
*允許的值* – 有效的音訊檔案  
*必要* – 是  
*預設值* — 無

**FailureAudioSource.Type**  
*描述* – `FailureAudioSource.BucketName` S3 儲存貯體中音訊物件的金鑰名稱。  
*允許的值* – S3  
*必要* – 是  
*預設值* — 無

**FailureAudioSource.BucketName**  
*描述* – 對於 S3 來源類型，S3 儲存貯體必須屬於與 SIP 媒體應用程式相同的 AWS 帳戶。[Amazon Chime SDK Voice Connector 服務主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) `voiceconnector.chime.amazonaws.com`必須有 S3 儲存貯體的存取權。  
*允許的值* – Amazon Chime SDK 具有`s3:GetObject`動作存取權的有效 S3 儲存貯體。  
*必要* – 是  
*預設值* — 無

**FailureAudioSource.Key**  
*描述* – `FailureAudioSource.BucketName` S3 儲存貯體中音訊物件的金鑰名稱。  
*允許的值* – 有效的音訊檔案  
*必要* – 是  
*預設值* — 無

**MinNumberOfDigits**  
*描述* – 在逾時或播放「通話失敗」音訊之前要擷取的位數下限。  
*允許的值* – >=0  
*必要* – 否  
*預設值* – 0

**MaxNumberOfDigits**  
*描述* – 在停止之前擷取的位數上限，而不終止數字。  
*允許的值* – >`MinNumberOfDigits`  
*必要* – 否  
*預設值* – 128

**TerminatorDigits**  
*描述* – 使用者輸入小於 時用來結束輸入的數字 `MaxNumberOfDigits`  
*允許的值* – 任何一個數字：0123456789\$1\$1  
*必要* – 否  
*預設值* – \$1

**InBetweenDigitsDurationInMilliseconds**  
*描述* – 播放 之前，數字輸入之間的等待時間，以毫秒為單位`FailureAudio`。  
*允許的值* – >0  
*必要* – 否  
*預設值* – 如果未指定，則預設為 `RepeatDurationInMilliseconds`值。

**Repeat**  
*描述* – 嘗試取得數字的總數  
*允許的值* – >0  
*必要* – 否  
*預設值* – 1

**RepeatDurationInMilliseconds**  
*描述* – 在`Repeat`嘗試之間等待的時間，以毫秒為單位  
*允許的值* – >0  
*必要* – 是  
*預設值* — 無

SIP 媒體應用程式一律會在執行 `PlayAudioAndGetDigits`動作後，以 `ACTION_SUCCESSFUL`或 叫用事件類型`ACTION_FAILED`叫用其 AWS Lambda 函數。當應用程式成功收集數字時，它會在 `ActionData` 物件中設定 `ReceivedDigits`值。下列範例顯示該 AWS Lambda 函數的調用事件結構。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    },
        "ReceivedDigits": "1234"
    },
    "CallDetails": {
        ...
    }
}
```

**錯誤處理**  
發生驗證錯誤時，SIP 媒體應用程式會使用 AWS Lambda 對應的錯誤訊息呼叫 函數。下表列出可能的錯誤訊息。


|  錯誤  |  訊息  |  Reason  | 
| --- | --- | --- | 
|  `InvalidAudioSource`  |  音訊來源參數值無效。  |  此錯誤可能因多種原因而發生。例如，由於許可問題或 S3 儲存貯體的問題，SIP 媒體應用程式無法存取 檔案。或者，音訊檔案可能會因持續時間、大小或不支援的格式而驗證失敗。  | 
|  `InvalidActionParameter`  |  `CallId` 動作的 或 `ParticipantTag` 參數無效。  |  `CallId`、 `ParticipantTag`或其他 參數無效。  | 
|  `SystemException`  |  執行 動作時發生系統錯誤。  |  執行 動作時發生系統錯誤。  | 

當動作因為逾時或重試次數過多而無法收集指定的位數時，SIP 媒體應用程式會使用`ACTION_FAILED`叫用事件類型叫用 AWS Lambda 函數。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 4,
    "InvocationEventType": "ACTION_FAILED",
    "ActionData": {
        "Type": "PlayAudioAndGetDigits",
        "Parameters" : {
            "CallId": "call-id-1",
            "ParticipantTag": "LEG-A",
            "InputDigitsRegex": "^\d{2}#$",
            "AudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-1.wav"
            },
            "FailureAudioSource": {
                "Type": "S3",
                "BucketName": "bucket-name",
                "Key": "audio-file-failure.wav"
            },
            "MinNumberOfDigits": 3,
            "MaxNumberOfDigits": 5,
            "TerminatorDigits": ["#"],
            "InBetweenDigitsDurationInMilliseconds": 5000,
            "Repeat": 3,
            "RepeatDurationInMilliseconds": 10000
        },
        "ErrorType": "InvalidAudioSource",
        "ErrorMessage": "Audio Source parameter value is invalid."
    }
    "CallDetails": {
        ...
    }
}
```

請參閱 GitHub 上的工作範例：
+ https：//[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-update-call](https://github.com/aws-samples/amazon-chime-sma-update-call)