

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 了解 Amazon Chime SDK PSTN 音频服务编程模型
<a name="pstn-model"></a>

PSTN 音频服务使用编程模型，而 request/response 编程模型又使用 AWS Lambda 函数。您的 AWS Lambda 函数会自动为来电和去电调用。*例如，当新的来电到达时，PSTN 音频服务会使用`NEW_INCOMING_CALL`事件调用您的 AWS Lambda 函数，然后等待名为 Actions 的命令。*例如，您的应用程序可以选择诸如播放音频提示、收集数字、录制音频或转接呼叫等的操作。这些 JSON 格式的操作将使用函数的回调发送回 PSTN 音频服务。 AWS Lambda 

此示例显示 `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 的 API。接听来电后，您可以返回操作，例如播放语音提示和收集用户输入的数字。您还可以使用 [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 函数，以实现计时器、参与者静音和等候室。