使用 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-UserDiversion 标头时可用。

此示例显示了 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 个字符。

以下示例显示了命令行界面中带有可选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 中的转移指示