Моя цель
Передайте входящий вызов непосредственно в Stasis и позвольте приложению решить, воспроизводить ли звонящий сигнал или сигнал занятости для вызывающего абонента.
Проблема
С моим приложением ARI, если я опускаю строку same => n,Ringing
в моем плане набора номеров, приложение Stasis возвращает ошибку, если вызывающий абонент зависает.Я могу прервать вызов без какого-либо раннего носителя, пока не передам команду channel.play()
через ARI.
У этого решения есть 2 проблемы:
- Приложение Stasis получаетвторой StasisStart, когда вызывающий абонент вешает трубку, возвращая ошибку
Channel not found
. - Нет команды для
channel.busy
У кого-нибудь есть предложения?
Единственный вариант, который я сейчас вижу, - убедиться, что у всех пользователей есть голосовая почта, а сигнал занятости никогда не воспроизводится.Не всем нужна / нравится голосовая почта, и отвечать на вызовы и воспроизводить сигнал «занято» неэтично, если вызывающий абонент не знает, что их вызов подключен.
Обновление
Используя следующую схему набора номеров, яможет заставить это работать желаемым способом (играет занят для пользователя, если они не доступны), но с ошибкой:
extensions.conf
[public]
exten => _.,1,NoOp()
same => n,Stasis(myStasisApp, ${SIP_HEADER(to)})
same => n,Busy(10)
same => n,Hangup()
myApp.js
// The user is available
channel.ring();
// The user is busy
channel.continueInDialplan();
Ошибка
Другой StasisStart отправляется, когда вызывающий абонент кладет трубку, после чего:
Unhandled rejection Error: {
"message": "Channel not found"
}