2016-11-29 3 views
2

Verwenden von Twilio.js zum Aufzeichnen eines Anrufs mit webRTC. Funktioniert gut, außer bei der 10-Minuten-Marke (genau!) Der Anruf auflegt. Die maximale Aufnahmezeit auf TwiML ist auf 7200 Sekunden eingestellt.Twilio webRTC-Anruf wird nach genau 10 Minuten abgebrochen

Die Konsole des Browsers zeigt:
[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"

[Nach 10 Minuten ...]

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

Chrome: // WebRTC-Interna Dump ist nutzlos: { "time": "11/28/2016, 4:35:48 PM", "type": "iceConnectionStateChange", "value": "ICEConnectionStateCompleted" }, { "time": "11/28/2016, 4:45:51 PM", "type": "stop", "value": "" },

Breaking in der Bibliothek twillio.js Ich sehe das etwas sendet eine Websocket-Nachricht mit Payload: {"payload":{"callsid":"CA18974349269fb9f24977185c5deaa62c"},"type":"hangup","version":""}, was eindeutig dazu führt, dass der Client den Anruf auflegt.

Irgendwelche Ideen, warum das passieren kann? Dies geschieht sowohl von Desktop- als auch von mobilen Browsern.

+0

Twilio Entwickler Evangelist hier. Ich würde dir empfehlen, einen Bericht darüber an [email protected] zu senden, damit sie dies mit den richtigen Teams in Twilio eskalieren können. Wir möchten sicherstellen, dass dies für Sie behoben ist, da es keine 10-Minuten-Grenze für WebRTC-Anrufe gibt. – philnash

Antwort

1

Es wird angezeigt, dass Twilio webRTC-Anrufe nach 600 Sekunden abbricht. Nicht genau sicher, warum, aber ich vermute, es hat etwas zu tun --Stale-Nonce Param für Turn Server, die zufällig eine 600 sec Timeout haben. Könnte sein?

EDIT mit Fix.

Schließlich reagierte Twilio auf unser Ticket und bot einen Workaround, um WEBRTC 10+ min Aufzeichnung zu ermöglichen. IMHO ist es ziemlich hacky, aber es funktioniert.

Wenn der Anrufer beitritt, pumpen Sie einen ausgehenden API-Anruf in die Konferenz mit einem, der ein leises mp3 abspielt, entweder ein sehr langes oder ein kurzes, kurzes. Dieser ausgehende Abschnitt ist erforderlich, um die Konferenz zu starten, und das stille MP3 sendet RTP bidirektional. Ein weiterer eher ähnlich ist das Client einwählen wie diese haben:

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

Sie eine niedrige Lautstärke WAV-Datei für eine Schleife in waitURL, falls eine völlig geräuschlos WAV-Datei erzeugen herstellen müssen Pakete RTP nicht .

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

0

Ich weiß, dass ich das Offensichtliche bin besagt, aber die Antwort ist hier:

[After 10 minutes...] 

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

Dies kann sein, weil etwas in Twilio ist das Timing aus. Müssen Sie einen Herzschlag senden, um ihn am Leben zu erhalten?

+0

Das ist es nicht. http://stackoverflow.com/a/40879821/1904983 das hat für uns funktioniert – gantoci

Verwandte Themen