

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

# 了解 Amazon Chime SDK PSTN 音訊服務程式設計模型
<a name="pstn-model"></a>

PSTN 音訊服務使用請求/回應程式設計模型，進而使用 AWS Lambda 函數。系統會自動調用您的 AWS Lambda 函數以進行傳入和傳出呼叫。例如，當新的來電送達時，PSTN 音訊服務會使用`NEW_INCOMING_CALL`事件叫用您的 AWS Lambda 函數，並等待稱為*動作*的命令。例如，您的應用程式可以選擇播放音訊提示、收集數字、錄製音訊或轉接通話等動作。這些 JSON 格式動作會使用來自 AWS Lambda 函數的回呼傳回 PSTN 音訊服務。

此範例顯示`PlayAudio`動作。

```
{
    "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}}"
        }
    }
}
```

此範例顯示`RecordAudio`動作。

```
{
    "Type": "RecordAudio",
    "Parameters": {
        "CallId": "{{call-id-1}}",
        "DurationInSeconds": "{{10}}",
        "SilenceDurationInSeconds": {{3}},
        "SilenceThreshold": {{100}},
        "RecordingTerminators": [
            "{{#}}"
        ],
        "RecordingDestination": {
            "Type": "S3",
            "BucketName": "{{valid-bucket-name}}",
            "Prefix": "{{valid-prefix-name}}"
        }
    }
}
```

一旦 PSTN 音訊服務執行動作，它會再次調用您的 AWS Lambda 函數，並指出成功或失敗。

您的應用程式也可以撥打外撥電話，並使用您的 AWS Lambda 函數來控制通話流程、來電者體驗和通話內容。在這種情況下，您可以呼叫 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_CreateSipMediaApplicationCall.html) API，並使用`NEW_OUTBOUND_CALL`事件 AWS Lambda 叫用您的 。接聽通話後，您可以傳回動作，例如播放語音提示和收集使用者輸入的數字。您也可以使用 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_UpdateSipMediaApplicationCall.html) API 來觸發 AWS Lambda 函數，以實作計時器、參與者靜音和等候室。