【问题标题】:Twilio Recording returning negative duration value "-1"Twilio Recording 返回负持续时间值“-1”
【发布时间】:2015-08-11 15:05:45
【问题描述】:

通话结束后,我遇到了关于录音持续时间的问题。 调用完成后,我们将找到录音并获取持续时间,但我们在下面的 sn-p 中以负值接收 r.duration,即“-1”,而不是以秒格式返回持续时间。

client = Twilio::REST::Client.new(TWILIO["ACCOUNT_SID"],TWILIO["ACCOUNT_TOKEN"])
call = client.account.calls.get(call_sid)
if call.present?
  call.recordings.list.each do |r|
  consultation_duration = (r.duration.to_i/60).to_f
  #downloading the recording logic
  r.delete
  end
end

谁能告诉我导致 Twilio 返回负持续时间的原因是什么。

【问题讨论】:

  • 我建议您与 Twilio 帮助联系,以便更详细地了解这一点。只需发送电子邮件至 help@twilio.com,他们就会回复您。
  • 我们能看到r.inspect吗?
  • 我对此表示怀疑,因为r 是一个完整的记录对象。

标签: ruby-on-rails ruby twilio


【解决方案1】:

这里是 Twilio 开发者宣传员。

我认为这是因为您将这个数字除以 60,而它已经以秒为单位。您可以将代码更改为以下内容,无论如何它都会在几秒钟内为您提供duration。

client = Twilio::REST::Client.new(TWILIO["ACCOUNT_SID"],TWILIO["ACCOUNT_TOKEN"])
call = client.account.calls.get(call_sid)
if call.present?
  call.recordings.list.each do |r|
  consultation_duration = r.duration
  #downloading the recording logic
  r.delete
  end
end

解释一下,如果调用持续了 30 秒,您将其除以 60,这可能就是您在施放它后看到的行为。

例如,如果您想转换为 HH:MM:SS 之类的内容,您可以更改代码以执行以下操作:

t = 33 # seconds
Time.at(t).utc.strftime("%H:%M:%S")

这会给你一个格式很好的时间,像这样:

00:00:33

希望对你有帮助

【讨论】:

  • 如果原始数字是正数,为什么除以 60 会产生负数?即使是整数除法,30/60 == 0.
  • 我也认为它应该给你 0,但在这里测试它产生了正确的结果。
【解决方案2】:

Twilio 为尚未完成的录制返回负持续时间。这意味着通话仍在进行中,并且尚未指定最终持续时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2020-08-13
    • 1970-01-01
    • 2018-11-12
    • 2021-12-14
    • 2014-11-21
    相关资源
    最近更新 更多