本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您想要與 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動作或 CreateSipMediaApplicationCall 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動作,因為 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動作。
{
"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 欄位
當您觸發 CreateSipMediaApplicationCall API 時,選用SipHeaders
欄位可讓您將自訂 SIP 標頭傳遞至外撥通話分支。有效的標頭索引鍵必須包含下列其中一項:
-
x-
字首 -
User-to-User
標頭 -
Diversion
標頭
X-AMZN
是預留標頭。如果您在 API 呼叫中使用此標頭,將會失敗。標頭的長度上限為 2048 個字元。
下列範例顯示命令列界面中具有選用SipHeaders
參數的典型 CreateSipMediaApplicationCall 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通話控制資訊的機制