Plivo hangup_call не заканчивается звонком

Вступление

Мы используем Plivo PHP на стороне сервера SDK (устаревшая версия) для управления входящими вызовами. Недавно мне пришлось реализовать блокировку вызовов. Идея проста — если входящий звонок в нашей системе не соответствует определенным правилам, мы вешаем трубку. Для этого hangup_call функция из RestAPI используется.

Часть кода

Когда наша система получает запрос с событием: StartApp из Пливо, звонит диспетчер звонков StartCall функция класса handle, Эта функция содержит всю логику для начала вызова (проверка правил, сохранение вызова в базе данных, начало записи и т. Д.):

public function handle($data) {
// Finding caller from DB by callerNumber ...
// Finding campaign from DB by targetNumber ...
// Checking if caller already called in certain time interval (isDuplicate) ...

// Starting call - call MUST be saved in DB !
$call = Call::start($data["CallUUID"], $campaign, $caller, $isDuplicate);
$call->save();

try {
// Checking call rules, throwing exceptions and changing call status accordingly
$call->guardCall();
} catch (CountryNotAllowedException $e) {
// Hanging up if caller country not allowed
return $this->callsApi->hangUp($call);
}
// If everything went good waiting(Plivo addWait) for our systems waiting call service to find call consumer and execute transfer...
}

Замечания: hangUp это функция, которая содержит hangup_call наряду с некоторыми лесозаготовками.

тестирование

На данный момент для тестирования звонков мы используем Skype с купленными номерами в США, так как мы находимся в Европе.

В целях тестирования каждый вызов в этом тесте не проходит правила — блокируется.

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

С помощью addSpeak или же addWait вместо hangup_call работает — говори или жди выполняется и после этого звонок заканчивается.

Я также пытался использовать addHangup с параметром причина: «отклонено», но не было никакой разницы.

Вопрос

Почему после hangup_call выполняется скайп продолжает соединение? (Вызов не заканчивается на стороне вызывающего абонента)

Может ли это быть особенностью скайпа?

Может быть, это потому, что мы используем устаревшую версию SDK? Есть ли большая разница между последним и устаревшим SDK на стороне сервера?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]