Как передать сигнал «Занято» при разговоре абонента в asterisk?
Настройки Asterisk
По умолчанию каждый пользователь имеет возможность пользоваться несколькими соединениями одновременно. Что не есть хорошо для sip-аппаратов с одной линией. В конфиге можно задать принудительно call-limit=1
При установке ограничение на одно соединения с одного аккаунта в конфиге, либо если аппарат поддерживает только одну линию - при звонке на такой аппарат, в момент, когда по нему разговаривают, идет ответ: "В данный момент никто не может принять Ваш вызов". Также данный ответ слышно, когда сип-клиент не зарегистрирован (аппарат выключен). И мы вводит в заблуждение звонящего.
Как сделать, чтобы при звонке абоненту, который разговаривает шел сигнал "Занято", либо голосом сообщалось "Абонент в данный момент разговаривает"?
Для правильного вопроса надо знать половину ответа
exten => _X!, 1, GotoIf($[${SIPPEER(${EXTEN},curcalls)}<${SIPPEER(${EXTEN},limit)}]?num_free)
same => n, Answer()
same => n, Playback(abonent_is_busy, noanswer)
same => n, Hangup
same => n(num_free), Dial(SIP/${EXTEN},,t)
Да, это упрощённый фрагмент с боевого сервера. Несуществующий/выключенный номер проверяется раньше через $["${SIPPEER(${EXTEN},callerid_num)}"=""] и $["${SIPPEER(${EXTEN},status)}"="UNREACHABLE"]