Developer community

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

  •  
    Max asked this on May 25, 2017 at 10:16 am

    Настраивал 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
    }

    Comments

  •  
    • Max

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

      May 25, 2017 at 10:23 am
  •  
    • Grigory

      Пришлите, пожалуйста, лог звонка, для которого Disconnected не сработало, на support@voximplant.com – мы посмотрим и поможем!

      May 25, 2017 at 11:43 am
 
Reply To: Событие CallEvents.Disconnected не срабатывает
Your information: