SIGN UP

Developer community

Community Support / General questions

Событие CallEvents.Disconnected не срабатывает

Max
Настраивал 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 (4)

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

Add your comment

Please, enter valid email

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

Please complete this field.

Please complete this field.

Please complete this field.

Choose the solution

Please complete this field.

Please complete this field.