本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon Chime SDK PTSN 音频服务中使用 SIP 标头
现在,当您想要与 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操作时将这些标头包含在出站呼叫段中,或者 CreateSipMediaApplicationCallAPI。
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 操作。
{ "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 个字符。
以下示例显示了一个典型的示例 CreateSipMediaApplicationCall命令行界面中带有可选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 中传输转移指示的