【问题标题】:Twilio call forwarding one after another - how to disconnect if person picks up the call一个接一个的Twilio呼叫转移-如果有人接听电话,如何断开连接
【发布时间】:2021-11-16 21:12:52
【问题描述】:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say> Connecting call to Pinto </Say>
        <Dial record ="record-from-answer" timeout="10" hangupOnStar ="true">
            <Number>XXXXXXXX</Number>
        </Dial>
  <Say> Pinto is not picking up the call, now connecting call to Management </Say>
        <Dial record ="record-from-answer" timeout="10" hangupOnStar ="true">
            <Number>XXXXXXXX</Number>
          </Dial>
  <Say> No one is picking up right now. Please text us at +12022171828 </Say>
</Response>

以上是一个接一个的呼叫转移流程。

我在这里看到的是, 如果第一个用户参加了通话,那么它不应该向第二个号码发起呼叫,也不应该说最后一行的短信 如果第一个用户断开连接,则将呼叫重定向到第二个号码 - 如果第二个号码没有接听电话,那么它应该说最后一行的短信 如果第一个用户断开连接,则将呼叫重定向到第二个号码 - 如果第二个号码接听电话,那么它不应该说最后一行的短信

我还想使用 TwiML 实现 Transcribe & Transcribe 回调。 那么,请帮我看看我们需要怎么做?

【问题讨论】:

    标签: twilio twilio-api twilio-twiml twilio-click-to-call twimlet


    【解决方案1】:

    要执行此流程,您不能在一个 TwiML 响应中执行整个操作。相反,您需要提供&lt;Dial&gt; element with URL in the action attribute,以便在第一次调用完成后,Twilio 会创建一个 webhook 以了解下一步该做什么。

    因此,您的第一个 TwiML 响应应如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
      <Say> Connecting call to Pinto </Say>
      <Dial record="record-from-answer" timeout="10" hangupOnStar="true" action="/complete">
        <Number>XXXXXXXX</Number>
      </Dial>
    </Response>
    

    在上面,我已将action="/complete" 添加到&lt;Dial&gt;,这意味着我们需要一个能够响应对/complete 的HTTP 请求的应用程序。我们还需要这是一个应用程序而不是静态响应,因为我们需要确定呼叫是否被应答,并决定下一步做什么以及用什么 TwiML 响应。

    我们可以这样做,因为 Twilio 发送到操作 URL 的参数之一是 DialCallStatus。此参数可以是“已完成”、“忙碌”、“无应答”、“失败”或“已取消”,它会告诉您第一次通话中发生了什么。

    因此,在您的情况下,您需要检查DialCallStatus,如果它“已完成”,则无需返回下一个&lt;Say&gt;&lt;Dial&gt;。但是,如果DialCallStatus 是其他状态之一,您确实希望返回下一个&lt;Say&gt;&lt;Dial&gt;&lt;Dial&gt; 应该包含另一个 action URL,该 URL 在第二个 &lt;Dial&gt; 的末尾做出相同的选择。

    我不确定您正在使用哪种语言构建,但它的伪代码概念如下所示:

    post '/complete' do
      if params["DialCallStatus"] != "completed"
        return "<Response><Hangup/></Response>"
      else 
        return "<Response><Say>Pinto is not picking up the call, now connecting call to Management</Say><Dial ....></Response>"
      end
    end
    

    【讨论】:

    • 您好@philnash,感谢您的澄清。我是这个 twilio 的新手,我想知道如何获取/设置操作 URL。还有另一个疑问,例如我们可以直接使用 TwiML Bin 进行呼叫转移、语音邮件、转录吗?
    • 操作 URL 是在 XML 中设置的,请参阅我的答案中的示例。您可以将 TwiML Bins 用于静态 TwiML 响应,但要创建动态响应,例如当您需要根据呼叫状态做出不同响应时,您将需要某种应用程序。如果您没有,那么您可以查看 Twilio Functions。
    • 我不确定您正在使用哪种语言构建 - 目前我只是在尝试使用 TwiML。在这里之后只需要检查喜欢哪种语言是合适的
    • 您可以使用任何您想要的语言进行构建,您只需要能够响应 HTTP 请求并返回 XML。
    • 我还想知道的是,我主要使用 Front 应用程序来查看来自 Twilio 的整个状态。主要寻找 - 1) 我想将录制的通话、语音邮件、转录数据转发到 Front Application (front.com) - Twilio 是否支持这种集成?因为在前面,我收到了 Twilio 一对一的聊天回复——所以对所有人来说都是如此。如果这允许在前面显示记录,我们该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多