【问题标题】:How to add additional information to the Twilio connect object如何向 Twilio 连接对象添加附加信息
【发布时间】:2023-03-15 20:17:01
【问题描述】:

我使用 Twilio REST API 创建了一个调用,并且我有一个 Twilio JS 客户端,它在其他方创建的其他调用中接收此调用。 我需要一种方法来区分我的调用与 Twilio JS 客户端中的其他调用。

当调用(由 Twilio REST API 创建)连接时,Twilio 向我的应用发出请求,我向 Twilio 提供 TwiML 指令以将调用路由到 Twilio JS 客户端。

我需要添加自定义信息以能够在 Twilio JS 客户端中检测调用是否由 Twilio REST API 创建。我看到了两点,我应该能够在通话中添加自定义信息:

  1. 当我使用 Twilio REST API 创建调用时
  2. 当我向 Twilio 提供进一步的 TwiML 指令时

这适用于 JS SDK。

params = {
        "MyCustomField": "my data",
        ... 
    };
 Twilio.Device.connect(params);

“连接”对象(Twilio JS SDK)中有一个“消息”对象:

{
"_maxListeners": 0,
"_events": {...},
"device": {...},
"message": {
    MyCustomField: "my data",
      ...
},
"options": {...},
"parameters": {
    "ApiVersion": "2010-04-01",
    "CallSid": "...",
    "From": "...",
    "To": "client:client59",
    "AccountSid": "..."
},
"_status": "closed",
"_direction": "INCOMING",
"sendHangup": false,
"_publisher": {...},
"_monitor": {...},
"mediaStream": {...},
"outboundConnectionId": "...",
"pstream": {...}
}

问题是如何通过 Twilio REST API 或 TwiML 向这个对象添加数据?

【问题讨论】:

    标签: twilio twilio-api twilio-php twilio-twiml


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    message 属性是一个未记录的属性,所以我不一定会依赖它。在这种情况下,它用于通过 webhook 将这些参数传递给您的 TwiML 应用程序。

    没有办法像这样从 API 请求或 TwiML 将数据传递给客户端实例。您也许可以使用statusCallback events 在这里实现一些目标,但我不完全确定您在这里的总体目标是什么。

    【讨论】:

    • 感谢您的回答。总体目标是将生成的调用与客户端上的有机调用区分开来,而无需向服务器发出额外的 ajax 请求。我的应用程序创建的呼叫应立即连接到 JS 客户端,而所有其他自然呼叫不应立即连接(用户应该有机会决定是否要接听或忽略呼叫)。你能提出一个解决方案吗?
    • 我可以将我的 Twilio.Device 设置为使用超过 1 个客户端名称吗?我的意思是一个 Twilio.Device 将连接到路由到“client:firstclient”或“client:secondclient”的呼叫?我不能在同一页面上有多个 Twilio.Device 实例,可以吗?
    • 如果应用程序创建的呼叫应该立即连接,为什么不从 Twilio 客户端本身进行这些呼叫呢?那么所有呼入电话都将是自然来电。
    • 这不是一个选项,因为呼叫可以通过机器应答,在这种情况下,不需要将呼叫路由给用户,而是播放预先录制的音频。考虑到我们的电话几乎有一半是由机器接听的,我们为每个可用用户拨打多个号码。例如,对于 2 个代理,我创建了 4 个呼叫。如果我在后端执行此操作,那么这些电话中的哪一个将由人工接听并不重要,而只有 2 个电话被接听。如果我在前端调用,则第一个代理可能会收到 2 个已连接的呼叫,而第二个则没有。
    • 现在我在路由到 JS 客户端之前标记调用。在 Twilio.Device.incoming 处理程序的客户端上,我发出 ajax 请求并通过 connection.parameters.CallSid 检测它是否是生成的调用。由于这个额外的请求,在生成的呼叫被接受之前,我还有一秒钟的延迟。我希望现在更清楚了。您能否建议任何解决方案来避免这种延迟?
    猜你喜欢
    • 2016-10-21
    • 2021-10-03
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多