Twilio webRTC电话在10分钟后中断

时间:2016-11-29 02:04:37

标签: javascript webrtc twilio

使用Twilio.js使用webRTC录制通话。工作正常,除了在10分钟标记(确切!)呼叫挂断。 TwiML上的最长记录时间设置为7200秒。

浏览器的控制台显示:
[Twilio.PeerConnection] signalingState is "stable" twilio.js:1843 [Twilio.PeerConnection] iceConnection State is "checking" twilio.js:1843 [Twilio.PeerConnection] iceConnection State is "connected" twilio.js:1843 [Twilio.PeerConnection] iceConnection State is "completed"

[10分钟后......]

twilio.js:1843 [Connection] Received HANGUP from gateway twilio.js:1843 [Connection] Disconnecting...

Chrome:// webrtc-internals 转储无用: { "time": "11/28/2016, 4:35:48 PM", "type": "iceConnectionStateChange", "value": "ICEConnectionStateCompleted" }, { "time": "11/28/2016, 4:45:51 PM", "type": "stop", "value": "" },

在twilio.js库中断,我看到有些东西会发送带有效负载的websocket消息:{"payload":{"callsid":"CA18974349269fb9f24977185c5deaa62c"},"type":"hangup","version":""},这显然会导致客户端挂断电话。

为什么会出现这种情况的任何想法?它来自桌面和移动浏览器。

2 个答案:

答案 0 :(得分:1)

原来Twilio在600秒后切断了webRTC通话。不完全确定为什么,但我猜它有事情要做 - stale-nonce param for Turn Servers,巧合的是600秒超时。可能?

使用修补程序进行编辑。

最终,Twilio回应了我们的机票,并提供了一种解决方法,使WEBRTC 10+分钟录音。恕我直言,它非常hacky,但它确实有效。

当呼叫者加入时,将一个出站API呼叫泵入会议,其中播放一个无声mp3,无论是非常长的还是循环短的。这个出站段是启动会议所必需的,而无声mp3将双向发送RTP。 另一个相似的方法是让客户端像这样拨号:

<Response>
   <Dial record="true" action="record_action">
    <Conference waitUrl="url_to_nearly_silent_audio_file">record</Conference>
  </Dial>
</Response>

如果完全静默的WAV文件不生成RTP数据包,则需要在waitURL中为循环制作一个低容量WAV文件。

https://www.twilio.com/docs/api/twiml/conference

答案 1 :(得分:0)

我知道我说的很明显,但你的答案就在这里:

Date_Sent

这可能是因为Twilio中的某些东西超时了。你需要发送一个心跳来保持活着吗?