

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

# 在 Amazon Chime SDK PTSN 音訊服務中使用 SIP 標頭
<a name="sip-headers"></a>

當您想要與 SIP 基礎設施交換通話內容資訊時，您現在可以在 AWS Lambda 函數中傳送和接收User-To-User標頭、轉換標頭和自訂 SIP 標頭。
+ User-to-User(UUI) 標頭可用來傳送呼叫控制資料。此資料由啟動工作階段的應用程式插入，並由接受工作階段的應用程式使用。它不會用於任何基本的 SIP 功能。例如，您可以使用呼叫中心中的 UUI 標頭，在客服人員之間傳遞有關呼叫的資訊。
+ Diversion 標頭用於顯示呼叫的來源和原因。您可以使用此標頭來查看來自其他 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"
            }
        ]
    }
}
```

下列範例顯示成功的[CallAndBridge](call-and-bridge.md)動作，因為 `SipHeaders` 參數的項目無效。

```
{
    "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 個字元。

下列範例顯示命令列界面中具有選用`SipHeaders`參數的典型 [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。

```
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通話控制資訊的機制](https://datatracker.ietf.org/doc/html/rfc7433)和[在 SIP 中轉移指示](https://datatracker.ietf.org/doc/html/rfc5806)。