SIGN UP

Developer community

Community Support / Событие CallEvents.Disconnected не срабатывает
Max
2017-05-25 14:16:19
Reply
Событие CallEvents.Disconnected не срабатывает
Настраивал call tracking по статье на хабре. https://habrahabr.ru/company/Voximplant/blog/250899/ Проблема в том, что событие CallEvents.Disconnected иногда не срабатывает и время вызова из handleCallDisconnected не приходит. Что именно влияет на выполнение этого события не понятно. Вероятность примерно 50\50. Кусок сценария: ... // Обработка входящего вызова VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { ... // Делаем HTTP-запрос к веб-сервису, чтобы получить номер куда будем переадресовывать звонок Net.httpRequest(URL, function (res) { if (res.code == 200) { // Получили номер для переадресации forward_number = res.text; // Делаем исходящий звонок outbound_call = VoxEngine.callPSTN(forward_number, dialed_number); // Вешаем обработчики событий и соединяем входящий и исходящий звонки VoxEngine.easyProcess(e.call, outbound_call, handleCallsConnected); outbound_call.removeEventListener(CallEvents.Disconnected); outbound_call.addEventListener(CallEvents.Disconnected, handleCallDisconnected); outbound_call.removeEventListener(CallEvents.Failed); outbound_call.addEventListener(CallEvents.Failed, handleCallFailed); } else { // Если веб-сервис недоступен - отбиваем звонок, опционально можно что-нибудь сказать в предответном состоянии e.call.reject(); } }); }); ... // Обработка завершения сессии VoxEngine.addEventListener(AppEvents.Terminating, function (e) { // Данные для отправки по API URL = reportCallUrl + "session_id=" + encodeURIComponent(session_id); URL += "&length=" + encodeURIComponent(call_length); // В случае если звонок успешный if (connected) { URL += "&record_url=" + encodeURIComponent(record_url); } else { // Соединение не удалось URL += "&error_code=" + encodeURIComponent(failure_code); } Net.httpRequest(URL); }); ... // Исходящий звонок не удался function handleCallFailed(e) { failure_code = e.code; failure_reason = e.reason; VoxEngine.terminate(); } ... // Обработка завершения удачного звонка function handleCallDisconnected(e) { call_length = e.duration; VoxEngine.terminate(); } ... // Обработчик удачного соединения function handleCallsConnected(call1, call2) { connected = true; time_start = Date.now(); outbound_call.addEventListener(CallEvents.RecordStarted, function (e) { record_url = e.url; }); outbound_call.record(); // start call recording }

Answers(2)

Max
2017-05-25 10:23:09
Reply
Переадресация идет с мобильного телефона на мобильный. Возможно совпадение, но замечено, что при первых тестах все звонки перенаправлялись на кнопочную звонилку и этих проблем вообще не было. Как только переадресация началась на смартфоны, начали появляться ошибки.
Grigory
2017-05-25 11:43:11
Reply
Пришлите, пожалуйста, лог звонка, для которого Disconnected не сработало, на support@voximplant.com - мы посмотрим и поможем!

Add your comment

Please complete this field.

Get your free developer account or talk with our sales team to learn more about Voximplant solutions
SIGN UP