

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

# 在 Amazon Chime SDK PTSN 音频服务中使用 SIP 标头
<a name="sip-headers"></a>

现在，当您想要与 SIP 基础设施交换呼叫上下文信息时，可以在 AWS Lambda 函数中发送和接收标头、Diversion 标头和自定义 SIP 标头。 User-To-User
+  User-to-User(UUI) 标头可用于发送呼叫控制数据。该数据由发起会话的应用程序插入，并由接收会话的应用程序使用。它不用于任何基本的 SIP 功能。例如，您可以使用调用中心中的 UUI 标头在座席之间传递有关调用的信息。
+ 转移标头用于显示调用从何处转移以及转移原因。您可以使用此标头查看来自其他 SIP 座席的转移信息或者将其传递出去。
+ 自定义 SIP 标头可用于传递所需的任何其他信息。例如，如果想要传递账户 ID，您可以创建一个名为“X-Account-Id”的 X 标头并添加此信息。

您必须在自定义 SIP 标头前面加上 `x-`。标头在 AWS Lambda 函数中公开，并在入站呼叫期间作为`NEW_INBOUND_CALL`事件的一部分接收。您还可以在触发[CallAndBridge](call-and-bridge.md)操作时将这些标头包含在出站呼叫段中，或者 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)API。

Lambda 函数的 `Participants` 部分包含 `SipHeaders` 字段。该字段在您收到自定义标头或填充 `User-to-User` 或 `Diversion` 标头时可用。

此示例显示了 AWS Lambda 调用包含 SIP 标头时的预期响应。

```
{
    "SchemaVersion": "1.0",
    "Sequence": 3,
    "InvocationEventType": "ACTION_SUCCESSFUL",
    "ActionData": {
        "Type":"actionType",
        "Parameters":{
            // Parameters vary by actionType
        }
    },
    "CallDetails":{
        .....
        .....
        "Participants":[
            {
                "CallId": "call-id-1",
                "ParticipantTag": "LEG-A",
                ..... 
                "Status": "Connected"
                "SipHeaders": {
                    "X-Test-Value": "String",
                    "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                    "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
                }
            },
            {
            "CallId": "call-id-2",
            "ParticipantTag": "LEG-B",
            .....
            "Status": "Connected"
            }
        ]
    }
}
```

以下示例显示了由于 `SipHeaders` 参数的输入无效而导致的成功 [CallAndBridge](call-and-bridge.md) 操作。

```
{
    "SchemaVersion": "1.0",
    "Actions":[
        {
            "Type": "CallAndBridge",
            "Parameters":{
            "CallTimeoutSeconds": 30,
            "CallerIdNumber": "e164PhoneNumber", // required
            "RingbackTone": { // optional
                "Type": "S3",
                "BucketName": "s3_bucket_name",
                "Key": "audio_file_name"
            },
            "Endpoints":[
               {
                    "Uri":"e164PhoneNumber", // required
                    "BridgeEndpointType":"PSTN" // required
               }
            ],
            "SipHeaders": {
                "X-Test-Value": "String",
                "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
            }
         }
      }
   ]
}
```

以下示例显示了由无效 `SipHeaders` 参数导致的 [CallAndBridge](call-and-bridge.md) 操作失败。

```
{
    "SchemaVersion":"1.0",
    "Sequence":3,
    "InvocationEventType":"ACTION_FAILED",
    "ActionData":{
        "Type":"actionType",
        "Parameters":{
            // Parameters vary by Action Type
            "SipHeaders": {
                "X-AMZN": "String",
                "User-to-User": "616d617a6f6e5f6368696d655f636f6e6e6563745f696e746567726174696f6e;encoding=hex",
                "Diversion": "sip:+11234567891@public.test.com;reason=unconditional"
             },
        },
        "ErrorType": "InvalidActionParameter",
        "ErrorMessage": "Invalid SIP header(s) provided: X-AMZN"
   },
   "CallDetails":{
      .....
      "Participants":[
         {
            "CallId":"call-id-1",
            "ParticipantTag":"LEG-A",
            .....   
            "Status":"Connected"
         },
         {
            "CallId":"call-id-2",
            "ParticipantTag":"LEG-B",
            .....
            "Status":"Connected"
         }
      ]
   }
}
```

## 使用 SipHeaders 字段
<a name="custom-headers"></a>

当你触发 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)API，可选`SipHeaders`字段允许您将自定义 SIP 标头传递给出呼叫段。有效标头密钥必须包括以下内容之一：
+ `x-` 前缀
+ `User-to-User` 标头
+ `Diversion` 标头

`X-AMZN` 为保留的标头。如果您在 API 调用中使用此标头，它将失败。标头的最大长度为 2048 个字符。

以下示例显示了一个典型的示例 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_voice-chime_CreateSipMediaApplicationCall.html)命令行界面中带有可选`SipHeaders`参数的 API。

```
create-sip-media-application-call
    --from-phone-number value // (string)
    --to-phone-number value // (string)
    --sip-media-application-id value // (string)
    --sip-headers // (map)
```

有关更多信息，请参阅在 SIP 中[传输 User-to-User呼叫控制信息和在 SIP 中传输[转移指示的](https://datatracker.ietf.org/doc/html/rfc5806)机制](https://datatracker.ietf.org/doc/html/rfc7433)。