= Канальное окончание FXO = Канальное окончание FXO предназначено для работы с аналоговыми телефонными линиями, приходящими от портов FXS АТС или другого аналогичного оборудования. Основные возможности канального окончания FXO: * прием сигнала вызова, определение номера вызывающего, передача INVITE на заранее заданный URI; * исходящее занятие линии, определение сигнала "Готовность", передача номера; * отбой по сигналу "Занято". == Описание работы канального окончания == Канальное окончание FXO использует для линейной сигнализации СУВ A. Принимаемый из канала TDM СУВ A интерпретируется как состояние сигнала вызова: 0 - есть сигнал вызова, 1 - нет сигнала вызова. Передаваемый окончанием в канал TDM СУВ A управляет состоянием абонентского шлейфа: 0 - шлейф замкнут, 1 - шлейф разомкнут. === Входящий вызов === При появлении сигнала вызова в телефонной линии канальное окончание переходит из исходного состояния (`Idle`) в состояние `Ringing`. В состоянии `Ringing` окончание FXO производит подсчет посылок вызова. Как только число полученных посылок вызова достигает значения, установленного конфигурационным параметром "Число звонков", выполняется вызов URI, заданного конфигурационным параметром "Вызывать URI", и канальное окончание переходит в состояние `Calling`. Окончание FXO принимает сообщения Caller ID, которые могут приходить из канала TDM как перед первой посылкой вызова, так и между посылками вызова. Поддерживается модуляция V.23. Поддерживается формат сообщений SDMF и MDMF. Если посылка Caller ID была принята, то при отправке INVITE в поле `From:` Display Name и username будут установлены в значения имени и номера вызывающего абонента соответственно. Если имя и/или номер вызывающего абонента определены не были, будут использованы имя из конфигурационного параметра "Реальное имя" и username из конфигурационного параметра "SIP URI". В канальном окончании FXO имеется возможность замены номера, полученного в посылке Caller ID, с помощью регулярного выражения. Данная функция позволяет исправить ситуацию, когда от удаленной стороны приходит номер вызывающего абонента не в том формате, в каком номер требуется передать в сеть IP. Например, номер вызывающего в посылке Caller ID не содержит кода страны. Значение параметра задается в виде строки формата //, где - регулярное выражение, на совпадение с которым проверяется полученный номер, - строка, которой заменяется номер в случае совпадения с регулярным выражением. В замене могут использоваться группы из регулярного выражения, которые подставляются с помощью комбинаций \1, \2 и т.д. Для приведенного выше случая приема посылки АОН можно установить параметру "Преобразование АОН" значение /^(.*)$/7342\1, в результате канальное окончание будет добавлять к принятому семизначному номеру префикс "7342". В состояниях `Ringing` и `Calling` окончание FXO контролирует паузы между посылками вызова: в момент окончания каждой посылки вызова канальное окончание запускает таймер. Если в течение времени, заданного конфигурационным параметром "Таймаут звонка", не начинается новая посылка вызова, канальное окончание переходит в исходное состояние. Если к этому времени уже был послан вызов (INVITE) в сторону сети IP (канальное окончание в состоянии `Calling`), вызов снимается (передается сообщение CANCEL). ''Примечение: если значением конфигурационного параметра "Вызывать URI" является пустая строка, вызов в направлении сети IP не передается, и конфигурационный параметр "Число звонков" игнорируется. В этом случае канальное окончание будет оставаться в состоянии `Ringing` до тех пор, пока не прекратятся посылки вызова (пока не будет обнаружен "Таймаут звонка").'' При получении успешного ответа на вызов ("200 OK") со стороны сети IP канальное окончание FXO замыкает абонентский шлейф и переходит в состояние `Connected`. Если отправленный в направлении сети IP вызов отклонен (на INVITE получен ответ с кодом 4xx, 5xx или 6xx), канальное окончание FXO выполняет сброс вызова путем кратковременного (500 мс) замыкания абонентского шлейфа, после чего окончание FXO переходит в исходное состояние (`Idle`). === Исходящий вызов === Возможны два сценария исходящего занятия абонентской линии канальным окончанием FXO - занятие без набора номера и занятие с набором номера. Если канальное окончание FXO, находящееся в исходном состоянии (`Idle`), принимает вызов (INVITE), и вызываемый URI совпадает с URI канального окончания, выполняется занятие линии без набора номера: канальное окончание замыкает абонентский шлейф, передает ответ "200 OK" и переходит в состояние `Connected`. Если вызываемый URI не совпадает с URI канального окончания (вызов принят на втором проходе поиска совпадением имени с регулярным выражением, установленным конфигурационным параметром "Рег. выражение вызова"), канальное окончание замыкает абонентский шлейф, запускает таймер ожидания сигнала "Готовность" и переходит в состояние `Connected`. Если в течение времени, установленного конфигурационным параметром "Таймаут гудка", в канале TDM обнаружен сигнал "Готовность" (непрерывный гудок), в канал TDM передается номер вызываемого абонента. Передаваемый номер формируется из имени пользователя (username) вызываемого URI по следующим правилам: * передача номера выполняется в порядке следования символов слева направо; * символы '0'-'9', '*', '#', 'a'-'d', 'A'-'D' передаются в канал TDM соответствующими посылками DTMF; * если конфигурационный параметр "Префикс межгорода" не пуст, и начало вызываемого username совпадает с его значением, после передачи фрагмента номера, совпадающего с префиксом межгорода, формируется пауза, длительность которой устанавливается конфигурационным параметром "Пауза межгорода"; * символ 'p' формирует дополнительную паузу, длительность которой устанавливается конфигурационным параметром "Пауза межгорода"; * остальные символы username игнорируются. После окончания набора номера вызывающему передается ответ "200 OK". Если в течение времени, установленного конфигурационным параметром "Таймаут гудка", сигнал "Готовность" не обнаружен, канальное окончание размыкает абонентский шлейф, передает вызывающему ответ "603 Decline" и переходит в исходное состояние (`Idle`). ''Примечание: при установке конфигурационного параметра "Игнорировать наличие гудка" канальное окончание FXO независимо от наличия или отсутствия в канале сигнала "Готовность" после замыкания шлейфа выдерживает паузу, установленную параметром "Таймаут гудка", после чего начинает набор номера.'' === Отбой === Установленное соединение может быть разорвано как со стороны сети IP, так и со стороны канала TDM. В случае отбоя со стороны сети IP (BYE) канальное окончание FXO размыкает абонентской шлейф и переходит в исходное состояние (`Idle`). В процессе разговора канальное окончание FXO анализирует канал TDM на наличие в нем сигнала "Занято". Если значение конфигурационного параметра "Отбой после X циклов "Занято" больше нуля, то при обнаружении в канале сигнала "Занято" выполняется подсчет числа циклов (гудков) сигнала. При достижении числа циклов, установленного конфигурационным параметром, и если интервалы между циклами не превышают 1200 мс, выполняется отбой (в сторону сети IP посылается BYE, размыкается абонентский шлейф), и канальное окончание переходит в исходное состояние (`Idle`). == Параметры конфигурации канального окончания == Пример конфигурации канального окончания FXO: [[Image(ss1.jpg)]] Далее описаны параметры, специфичные для канального окончания FXO. Не указанные здесь конфигурационные параметры работают так же, как и во всех прочих существующих канальных окончаниях. См. EndpointParameters. Таймаут звонка:: Параметр определяет максимальную длительность пауз между посылками вызова в абонентской линии в миллисекундах. Если при нахождении канального окончания в состояниях `Ringing` или `Calling` сигнал вызова отсутствует дольше заданного параметром времени, канальное окончание принимает решение о прекращении вызова (переходит в исходное состояние). Допустимые значения - от 1000 до 60000 мс. Значение по умолчанию - 5000 мс. Таймаут гудка:: Если параметр "Игнорировать наличие гудка" не включен, "Таймаут гудка" определяет время, в течение которого ожидается сигнал "Готовность" после исходящего занятия линии. Если параметр "Игнорировать наличие гудка" включен, "Таймаут гудка" устанавливает время между замыканием абонентского шлейфа и началом набора номера. Допустимые значения - от 1 до 60000 мс. Значение по умолчанию - 8000 мс. Игнорировать наличие гудка:: Параметр определяет, будет ли ожидаться сигнал "Готовность" при исходящем занятии абонентской линии. Если параметр не включен, после занятия линии ожидается сигнал "Готовность", и при его отсутствии в течение времени, установленного параметром "Таймаут гудка", вызывающему возвращается ответ "603 Decline". Если параметр включен, после замыкания абонентского шлейфа независимо от наличия или отсутствия сигнала "Готовность" выдерживается пауза, определяемая параметром "Таймаут гудка", после которой начинается набор номера. Значение по умолчанию - параметр не включен. Префикс межгорода:: Параметр определяет префикс, на совпадение с которым проверяется начало вызываемого номера при вызове в сторону канала TDM. Если вызываемый номер совпадает с комбинацией, установленной данным параметром, то в процессе передачи номера в канал после набора префикса будет сделана дополнительная пауза, длительность которой устанавливается параметром "Пауза межгорода". Если значением параметра является пустая строка, дополнительная пауза не делается. Значение по умолчанию - "8". Пауза межгорода:: Параметр устанавливает длительность дополнительной паузы в мс, добавляемой при наборе номера после префикса межгорода (см. параметр "Префикс межгорода"). Допустимые значения - от 1 до 9999 мс. Значение по умолчанию - 2000 мс. Число звонков:: Параметр определяет, сколько посылок вызова должно получить из абонентской лин6ии канальное окончание FXO прежде чем будет отправлен вызов в сеть IP. Допустимые значения - от 1 до 100. Обратите внимание, что посылка Caller-ID, как правило, передается между первой и второй посылками вызова, поэтому установка данному параметру значения 1 может привести к тому, что номер вызывающего абонента не будет определяться. Значение по умолчанию - 2. Преобразование Caller-ID:: Параметр определяет замену номера вызывающего абонента, полученного в посылке Callet-ID. Значение параметра задается в виде строки формата `//`, где - регулярное выражение, на совпадение с которым проверяется полученный номер, - строка, которой заменяется номер в случае совпадения с регулярным выражением. В замене могут использоваться группы из регулярного выражения, которые подставляются с помощью комбинаций \1, \2 и т.д. Например при установке значения параметра `/^(2.*)$/7342\1` к номерам вызывающих абонентов, начинающимся с цифры 2, будет добавляться префикс "7342". Если значением параметра является пустая строка, функция преобразования Celler-ID отключена. Значение по умолчанию - пустая строка. Отбой после "X" циклов "Занято":: Параметр устанавливает длительность сигнала "занято", выраженная в циклах "гудок-пауза", после принятия которого канальное окончание разрывает текущее соединение. Допустимые значения - от 0 до 9. Значение 0 отключает отбой соединения по приему сигнала "Занято". Обратите внимание, что при уменьшении значения параметра увеличивается вероятность ложных положительных решений, когда сигнал разговора ошибочно принимается за сигнал "Занято", что приводит к обрыву соединения. С другой стороны, слишком большие значения могут приводить к ложным отрицательным результатам, когда сигнал "Занято" не детектируется (или детектируется очень долго) из-за спорадических помех и/или искажений сигнала в канале, что приводит к непроизводительному занятию линии. Значение по умолчанию - 3. Вызывать URI:: Параметр определяет URI, которому направляется INVITE при получении входящего вызова из канала TDM. Значение параметра может быть задано с указанием либо имени пользователя и домена (например `john@192.168.5.24`), либо только имени пользователя (например `john`). В последнем случае в качестве домена при формировании вызываемого URI будет использован домен из конфигурационного параметра "SIP URI" канального окончания. Если значением параметра является пустая строка, при входящем вызове со стороны канала TDM вызов в направлении сети IP не передается, канальное окончание остается в состоянии `Ringing` до прекращения посылок вызова в абонентской линии. Значение по умолчанию - пустая строка. == Состояния канального окончания == Далее описаны состояния, в которых может находиться канальное окончание FXO, и их описание. Idle:: Исходное состояние канального окончания. Канальное окончание свободно: способно принимать вызовы со стороны сети IP и ожидает сигнал вызова со стороны канала TDM. Ringing:: Принят сигнал вызова со стороны канала TDM, но вызов в направлении сети IP еще не отправлен. Calling:: Отправлен вызов (INVITE) в сторону сети IP, ожидается ответ. Connected:: Соединение установлено. Drop Line:: Производится сброс входящего со стороны канала TDM вызова кратковременным замыканием абонентского шлейфа. Pause:: Выполняется пауза в процессе передачи номера в канал TDM (в результате обнаружения префикса межгорода или символа 'p' в набираемом номере). == См. также == [EndpointParameters сводная таблица параметров], [wiki:EndpointFXS окончание FXS], [wiki:EndpointАДАСЭ окончание АДАСЭ].