Переменная PRI_CAUSE


Переменная PRI_CAUSE используется для передачи информации по линиям связи ISDN PRI о причине разрыва связи до ее фактического разрыва.


Переменная появилась, начиная с версии 1.0 сервера Asterisk.

Для каналов: Zap PRI, chan_capi и chan_misdn BRI есть возможность установки значения переменной PRI_CAUSE до выполнения команды Hangup(). Это приведет к тому, что в отправляемом сообщении PRI DISCONNECT будет установлен параметр CAUSE, который может быть использован телефонным коммутатором.

Определения кодов причин завершения соединения в сообщениях Q931:

  • 1 = Номер не задействован (не обслуживается).
Прекращение связи по этой причине указывает, что адресат, которого запрашивает вызывающий пользователь, не может быть вызван, потому что, хотя номер и набран в правильном формате, он в настоящее время не назначен ни кому из абонентов (не распределен).

  • 2 = нет маршрута в заданную транзитную сеть.
Эта причина указывает на то, что оборудование, которое ответило сообщением с этом кодом, получило запрос о направлении вызова через определенную транзитную сеть, которую оно не знает. Оборудование отвечает сообщением с этим кодом, как в случае, если запрашиваемой транзитной сети не существует, так и в том случае если эта сеть существует, но она не поддерживает оборудование, которое послало сообщение с этим кодом.
Этот код используется во внутрисетевом уровне обмена.

  • 3 = нет маршрута к пункту назначения.
Эта причина указывает на то, что вызов не может достигнуть вызываемого пользователя, потому что сеть, через которую был направлен вызов, не обслуживает запрашиваемого адресата.
Этот код используется во внутрисетевом уровне обмена.

  • 6 = недопустимый канал
Эта причина указывает на то, что последний использованный канал не может использоваться для отправки объектов для данного вызова.

  • 16 = Нормальное завершение вызова.
Данная причина указывает на то, что соединение прекращается, потому что один из абонентов установленного соединения запросил прекращение соединения.
В нормальных ситуациях, источником сообщения с данным кодом не может быть сеть.

  • 17 = Пользователь занят.

  • 18 = Пользователь не отвечает (не подключен телефонный аппарат).

  • 21 = Вызов отвергнут.

  • 22 = Номер изменился.

  • 27 = Неисправность на пункте назначения.

  • 29 = Запрос услуги отклонен.
Эта причина указывает на то, что услуга, которая запрашивается пользователем, не может быть предоставлена сетью.

  • 38 = Неисправность сети.
Эта причина указывает на то, что сеть не функционирует должным образом и это состояние, по все вероятности, продлиться относительно длинный промежуток времени. И, следовательно, немедленная повторная попытка совершить вызов вряд ли будет успешна.

  • 41 = Временные неполадки.
Данная причина указывает, что сеть не функционирует должным образом, но это состояние вряд ли продлиться длительный период времени. Например, пользователь может пробовать совершить еще одну попытку вызова почти немедленно.


Довольно полный списка кодов причин разъединения можно найти по адресу: http://www.cyber-cottage.co.uk/bathford/techinfo/Q931_Cause_definitions.pdf, а простенький калькулятор кодов на flash можно найти тут.


Если вызов проходит через Канадского оператора Group Telecom (он может проходить также и через других операторов). При разрыве связи со следующими значениями PRI_CAUSE, будут генерироваться следующие сообщения:

  • 1 - The number you have reached is not in service, this is a recording.
  • 2 - Быстрый сигнал "занято".
  • 17 - Медленный сигнал "занято" (Обычный сигнал "занято")
  • 28 - We're sorry your call cannot be completed as dialed.



В Великобритании, при использовании линий BT ISDN 2e/30e, установка кода завершения соединения - PRI_CAUSE будет приводить к генерации нижеприведенных сообщений. Обратите внимание, что вызывающий абонент услышит эти сообщения или гудки приблизительно через 8 секунд после того, как сервер Asterisk завершит соединение. Если абонент использует аналоговую линию от Бритиш Телеком, то на его стороне в этом случае будет произведена "переполюсовка" линии в момент отсоединения и сообщением/тональным сигналом, который появиться через эти 8 секунд. Если у Вас используется ZapHFC, то Вам может потребоваться использование команды 'Progress()' перед 'Hangup', для того, чтобы абонент услышал эти сообщения.

  • 1 - "The number you have dialled has not been recognised. Please check and try again."
  • 2 - Гудки, указывающие на недоступность номера.
  • 17 - Короткие гудки.
  • 18 - Гудки, указывающие на недоступность номера.
  • 21 - Гудки, указывающие на недоступность номера.
  • 22 - "The number you have dialled has not been recognised. Please check and try again."
  • 27 - "This number is temporarily out of order. We are sorry for any inconvenience."
  • 28 - Гудки, указывающие на недоступность номера.
  • 38 - "This number is temporarily out of order. We are sorry for any inconvenience."
  • 41 - "This number is temporarily out of order. We are sorry for any inconvenience."


Примеры:


exten => i,1,SetVar(PRI_CAUSE=1)
; поступил вызов на неправильный екстеншен - PRI_CAUSE=1 (Номер не обслуживается)
exten => i,2,Hangup
; отправка сообщения DISCONNECT.
; Это, во многих случаях, приведет к тому, что сеть сгенерирует для
; вызывающего абонента сообщения примерно такого вида:
"Набранный Вами номер не обслуживается..."



Ссылки по теме:

  • Команда Hangup
  • Команда Progress: Запрос включения индикатора прогресса соединения (подготовка к проигрыванию звукового файла до перевода линии в отвеченное состояние).
  • Переменные в Asterisk
  • Asterisk канал ZAP: Zaptel используется для организации ISDN PRI линий связи в Asterisk.
  • ISDN, PRI
  • Asterisk