使用 SIP 標頭 - Amazon Chime 聲 SDK

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

使用 SIP 標頭

現在,當您想要與 SIP 基礎結構交換呼叫內容資訊時,您可以在 AWS Lambda 函數中傳送和接收使用者對使用者標頭、轉移標頭和自訂 SIP 標頭。

  • 使用者對使用者 (UUI) 標頭可用來傳送呼叫控制資料。此資料會由啟動工作階段的應用程式插入,並由接受工作階段的應用程式使用。它不用於任何基本的 SIP 功能。例如,您可以使用呼叫中心中的 UUI 標頭,在代理程式之間傳遞有關呼叫的資訊。

  • 轉移頭用於顯示從調用被轉移的地方以及為什麼。您可以使用此標頭來查看其他 SIP 代理的分流信息,或將其傳遞。

  • 自定義 SIP 頭允許您沿著你想要的任何其他信息傳遞。例如,如果您想要傳遞帳戶 ID,您可以建立名為「X-Account-ID」的 X 標頭,然後新增此資訊。

您必須為自訂 SIP 標頭加上前綴x-。標頭會暴露在 AWS Lambda 函數中,並在輸入呼叫期間作為NEW_INBOUND_CALL事件的一部分接收。您也可以在觸發CallAndBridge動作或 CreateSipMediaApplicationCallAPI 時,將這些標頭包含在輸出呼叫腿中。

Lambda 函數的Participants區段包含SipHeaders欄位。當您收到自訂標頭或填入或標頭時,即可使用User-to-User此欄位。Diversion

此範例顯示 L AWS ambda 叫用包含 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動作。

{ "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動作。

{ "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欄位

當您觸發 CreateSipMediaApplicationCallAPI 時,選用SipHeaders欄位可讓您將自訂 SIP 標頭傳遞至輸出呼叫分段。有效的標頭鍵必須包含下列其中一項:

  • x-

  • User-to-User

  • Diversion

X-AMZN是一個保留的標頭。如果您在 API 呼叫中使用此標頭,則會失敗。標頭的長度上限為 2048 個字元。

下列範例會在命令列介面中顯示具有選用SipHeaders參數的典型 CreateSipMediaApplicationCallAPI。

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 中傳輸使用者對使用者呼叫控制資訊的機制和 SIP 中的接指示