【问题标题】:Twilio: Ruby: Callback status URL for calls running in parallel: Which call completed?Twilio:Ruby:并行运行的调用的回调状态 URL:哪个调用完成了?
【发布时间】:2012-03-09 07:25:24
【问题描述】:

我有一个电话列表,我的 Twilio 应用程序必须经常拨打这些电话。我有一个每分钟运行的 cron 作业,它列出了计划在下一分钟调用的所有电话。该列表包括计划在下一分钟运行的呼叫以及在过去一小时内未正确完成的呼叫。

对于列表中的每部电话,我都有如下代码(在 Ruby 中),用于启动将并行运行的电话列表(“电话”列表),并且此 sn-p 每分钟运行一次。

phones.each do |phone|
    callbackurl="http://myapp.com/twiliocallback?phone=#{phone.id}"
    data={:from=>'16135551234', 
      :to=>phone.number, 
          :url=>callbackurl
         }

    client=Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN, :ssl_verify_peer => false)
    client.account.calls.create data
end

但是,如果通话时间超过一分钟,我不希望 cron 作业在已与 Twilio 通话时触发对同一号码的呼叫。此外,如果有人在我可以更新状态之前在通话中挂断电话,我希望该号码被后续的 cron 再次触发。

我知道我需要一个电话状态属性(例如 phone.status),其值为 NOT_STARTED、IN_PROGRESS 和 SUCCESSFULLY_COMPLETED,以及一个 twilio_status 属性(例如 phone.twilio_status),其值为 TWILIO_NOT_STARTED、TWILIO_IN_PROGRESS 和TWILIO_COMPLETED。

调用以

开始
phone.status="NOT_STARTED" 
phone.twilio_status="TWILIO_NOT_STARTED"

而且,一旦我创建了电话,我就可以更新通话状态:

phone.status="IN_PROGRESS" 
phone.twilio_status="TWILIO_IN_PROGRESS"

如果调用在成功路径内正确完成,我可以设置状态

phone.status="SUCCESSFULLY_COMPLETED"

如果我能确定通话何时从 Twilio 断开,那么我可以通过执行此操作判断通话是否中止

is_aborted? = twilio.status=="IN_PROGRESS" && twilio.twilio_status=="TWILIO_COMPLETED"

但是,我不知道如何运行代码

phone.twilio_status="TWLIO_COMPLETED"

当电话在 Twilio 呼叫工作流程中间或什至在工作流程结束时挂断时,针对特定电话。

Twilio 似乎有一个可以在电话完成时调用的回调 URL,但尚不清楚回调处理程序如何确定哪些并行调用已完成。有没有办法做到这一点,以便我可以用正确的状态标记正确的呼叫?

【问题讨论】:

    标签: ruby twilio


    【解决方案1】:

    在整个呼叫过程中对您的服务器的每个请求以及在状态回调 URL 请求中,Twilio 都会将唯一的 CallSid 值传递给您的服务器以识别呼叫。这也会在您首次发起呼叫时返回的呼叫 XML 或 JSON 数据中返回给您。

    https://www.twilio.com/docs/api/twiml/twilio_request
    https://www.twilio.com/docs/api/rest/making-calls

    您可以存储此 CallSid 值以跟踪整个呼叫生命周期的状态。

    【讨论】:

    • 这行得通。我使用 :StatusCallback=>callbackurl 作为传递给 client.account.calls.create(data) 的数据哈希中的另一个哈希条目。我需要比调用本身更深入地了解上下文数据。 callbackURL 让我可以传递参数以获取更深入的上下文数据。
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多