[[PageOutline(2-5,Содержание:)]] [[span(style=color: #FF0000, Внимание! Статья находится в стадии создания. Информация может быть неполной и/или неточной. )]] = Канальное окончание 1ВСК индуктивный код (1IND) = Канальное окончание 1IND предназначено для подключения к АТС и/или абонентским концентраторам через соединительную линию, использующую сигнализацию по одному выделенному сигнальному каналу индуктивным кодом. Передача линейной сигнализации и номера вызываемого абонента производится по выделенному сигнальному каналу (СУВ A), передача номера вызывающего абонента выполняется частотным способом (безинтервальный пакет АОН). == Линейные сигналы канального окончания 1IND == || '''Сигнал''' || '''Параметры передачи''' || '''Параметры приема (детектирования)''' || || Короткий сигнал (КС) || импульс длительностью 20 мс || импульс длительностью 10-35 мс || || Длинный сигнал (ДС) || импульс длительностью 88 мс || импульс длительностью 65-115 мс || || Набор номера || импульсы длительностью 48 мс || импульсы длительностью 35-65 мс || || Межсерийный интервал набора || пауза 500 мс || пауза более 200 мс || || Сигнал отбоя (ОС) || импульс длительностью 400 мс || импульс длительностью более 115 мс || == Описание работы канального окончания == === Вызов со стороны TDM === ==== Базовый сценарий вызова ==== При получении сигнала "Занятие" из соединительной линии канальное окончание 1IND переходит в состояние `NumRecv` и ожидает номер вызываемого абонента. Номер вызываемого абонента передается декадными сериями импульсов в сигнальном канале. Окончание набора номера определяется по таймауту, устанавливаемому конфигурационным параметром "Таймаут набора". Кроме этого, если конфигурационный параметр "Рег. выражение набора" не пуст, после приема каждой цифры номера выполняется проверка набранного номера на совпадение с регулярным выражением. При совпадении номера с регулярным выражением принимается решение об окончании набора номера. После окончания набора номера канальное окончание 1IND отправляет в сторону сети IP сообщение INVITE и переходит в состояние `Outgoing`. В состоянии `Outgoing` канальное окончание 1IND находится до ответа вызываемого абонента или отмены вызова (отклонения вызова вызываемой стороной или снятия вызова вызывающей стороной). При получении от вызываемой стороны ответа "180 Ringing" окончание 1IND передает в соединительную линию акустический сигнал "Контроль посылки вызова" (КПВ). При ответе вызываемого абонента канальное окончание 1IND подключает медиапоток к каналу TDM (если это не было сделано ранее), передает вызывающему абоненту сигнал "Ответ" и переходит в состояние `Connected`. {{{#!plantuml @startuml title Местный входящий вызов skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание 1IND" as 1IND participant "Вызываемый абонент" as A АТС -> 1IND: Занятие (ДС) АТС -> 1IND: набор номера note over 1IND: прием номера завершен 1IND --> A: INVITE A --> 1IND: 100 Trying A --> 1IND: 180 Ringing note right: Вызываемый абонент слышит звонок 1IND o-[#blue]> АТС: КПВ ... note over A: абонент ответил на вызов A --> 1IND: 200 OK A <-[#blue]-> 1IND: //медиапоток// АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: ACK 1IND -> АТС: Ответ (ДС) note over АТС, A: абоненты ведут разговор @enduml }}} В случае междугородного вызова (входящее занятие коротким сигналом КС) сценарий установки соединения дополняется передачей в канал сигнала "Абонент свободен" при получении ответа "180 Ringing" со стороны IP: {{{#!plantuml @startuml title Междугородный входящий вызов skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание 1IND" as 1IND participant "Вызываемый абонент" as A АТС -> 1IND: Занятие (КС) АТС -> 1IND: набор номера note over 1IND: прием номера завершен 1IND --> A: INVITE A --> 1IND: 100 Trying A --> 1IND: 180 Ringing note right: Вызываемый абонент слышит звонок 1IND -> АТС: Абонент Б свободен (ДС) 1IND o-[#blue]> АТС: КПВ АТС -[#gray]> 1IND: Послать вызов (ДС) ... note over A: абонент ответил на вызов A --> 1IND: 200 OK A <-[#blue]-> 1IND: //медиапоток// АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: ACK 1IND -> АТС: Ответ (ДС) note over АТС, A: абоненты ведут разговор @enduml }}} Определение занятости или свободности вызываемого абонента происходит по результату посылки вызова (INVITE), поэтому сигнал "Послать вызов" канальным окончанием 1IND игнорируется. При получении от вызываемой стороны медиапотока до ответа вызываемого абонента (ответ "183 Session Progress") медиапоток подключается к каналу TDM, и дальнейшая передача акустических сигналов вызывающему абоненту возлагается на оборудование вызываемого абонента. Пример сценария местного вызова с получением медиапотока до ответа вызываемого абонента: {{{#!plantuml @startuml title Местный входящий вызов (с early media) skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание 1IND" as 1IND participant "Вызываемый абонент" as A АТС -> 1IND: Занятие (ДС) АТС -> 1IND: набор номера note over 1IND: прием номера завершен 1IND --> A: INVITE A --> 1IND: 100 Trying A --> 1IND: 183 Session Progress A <-[#blue]-> 1IND: //медиапоток// АТС <-[#blue]> 1IND: //разговорное состояние// A o-[#gray]> АТС: //КПВ// ... note over A: абонент ответил на вызов A --> 1IND: 200 OK 1IND --> A: ACK 1IND -> АТС: Ответ (ДС) note over АТС, A: абоненты ведут разговор @enduml }}} ==== Определение номера вызывающего абонента ==== Если конфигурационный параметр "Макс. число запросов АОН" не равен нулю, описанный выше процесс входящего вызова дополняется функцией определения номера вызывающего абонента. Определение номера состоит в посылке запроса и получении ответа. Запрос АОН выполняется передачей в канал TDM линейного сигнала "Ответ" (ДС) с одновременной передачей тонального сигнала 500 Гц. В течение 500 мс канальное окончание ожидает получения безинтервального пакета АОН, содержащего категорию и 7 цифр номера вызывающего абонента. Если безинтервальный пакет принят и успешно декодирован, канальное окончание переходит к передаче вызова в направление сети IP. Если пакет АОН не принят или не может быть декодирован, в зависимости от значений конфигурационного параметра "Макс. число запросов АОН" процесс запроса и приема ответа может быть повторен заданное число раз. В случае успешного определения категории и номера вызывающего абонента в поле `From:` передаваемого в направлении сети IP сообщения INVITE имя пользователя (username) формируется из номера вызывающего абонента. Категория вызывающего абонента передается в виде значения параметра `cpc` (calling-party-category) URI поля `From:`. {{{#!plantuml @startuml title Местный входящий вызов с запросом номера вызывающего абонента skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание 1IND" as 1IND participant "Вызываемый абонент" as A АТС -> 1IND: Занятие (ДС) АТС -> 1IND: набор номера note over 1IND: прием номера завершен 1IND -> АТС: "Ответ" (ДС) 1IND o-[#blue]> АТС: Запрос АОН (500 Гц) АТС -[#blue]> 1IND: безинтервальный пакет АОН note over 1IND: Ошибка декодирования посылки АОН\nПовтор запроса... 1IND -> АТС: "Ответ" (ДС) 1IND o-[#blue]> АТС: Запрос АОН (500 Гц) АТС -[#blue]> 1IND: безинтервальный пакет АОН note over 1IND: ответ принят успешно,\nномер 1234567 кат. 1\nвыполняется вызов... 1IND --> A: INVITE From: A --> 1IND: 100 Trying A --> 1IND: 180 Ringing note right: Вызываемый абонент слышит звонок 1IND o-[#blue]> АТС: КПВ ... note over A: абонент ответил на вызов A --> 1IND: 200 OK A <-[#blue]-> 1IND: //медиапоток// АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: ACK 1IND -> АТС: Ответ (ДС) note over АТС, A: абоненты ведут разговор @enduml }}} Так как в ответе АОН передается только 7 цифр номера вызывающего абонента, канальное окончание 1IND позволяет выполнять модификацию номера вызывающего абонента с помощью регулярного выражения, задаваемого конфигурационным параметром "Преобразование АОН". Например, при установке параметра "Преобразование АОН" в значение `/^(.*)$/7342\1` и получении в безинтервальном пакете АОН номера 1234567 полученный номер будет дополнен слева комбинацией "7342", в результате чего будет сформирован номер вызывающего абонента "73421234567". === Вызов со стороны IP === При получении вызова со стороны сети IP канальное окончание 1IND переходит в состояние `Seizure` и передает в соединительную линию линейный сигнал "Занятие". При этом канальное окончание проверяет, не начинается ли вызываемый номер с префикса, установленного конфигурационным параметром "Префикс межгорода". Если начало номера вызываемого абонента совпадает с префиксом межгорода, канальное окончание выполняет междугородное занятие (КС), иначе выполняется местное занятие (ДС). После передачи сигнала "Занятие" канальное окончание 1IND переходит в состояние `Dialing` и начинает передавать в соединительную линию номер вызываемого абонента. После передачи всех цифр номера канальное окончание 1IND переходит в состояние `Dialed`, передает вызывающему ответ "183 Session progress", активирует медиапоток и ожидает ответ вызываемого абонента. {{{#!plantuml @startuml title Местный исходящий вызов - базовый сценарий skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Вызывающий абонент" as A participant "Окончание 1IND" as 1IND participant АТС A --> 1IND: INVITE 1IND --> A: 100 Trying 1IND -> АТС: Занятие (ДС) 1IND -> АТС: набор номера 1IND --> A: 183 Session progress A <-[#blue]-> 1IND: //медиапоток// note over АТС: Вызываемый абонент слышит звонок АТС o-[#blue]> A: КПВ ... note over АТС: абонент ответил на вызов АТС -> 1IND: Ответ (ДС) АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: 200 OK A --> 1IND: ACK note over АТС, A: абоненты ведут разговор @enduml }}} При получении линейного сигнала "Ответ" канальное окончание 1IND переходит в состояние `Answered` и в течение 600 мс ожидает тональный сигнал запроса АОН 500 Гц. Если в течение 600 мс запрос АОН получен, канальное окончание 1IND передает в канал безинтервальный пакет АОН, при этом передаваемый номер формируется по следующему алгоритму: 1. Из имени пользователя (username) вызывающего абонента удаляются все нецифровые символы. 1. Если результат длиннее 7 символов, оставляются только последние 7 символов. 1. Если результат короче 7 символов, он дополняется слева до 7 цифр соответствующими символами значения конфигурационного параметра "Шаблон посылки АОН". Символы при этом сохраняют свою позицию, например если username вызывающего абонента "6789" и шаблон посылки АОН "1230000", будет сформирован номер "1236789". После передачи кодограммы АОН канальное окончание 1IND возвращается в предответное состояние (`Dialed`) и ожидает ответа абонента: {{{#!plantuml @startuml title Местный исходящий вызов с запросом номера вызывающего абонента skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Вызывающий абонент" as A participant "Окончание 1IND" as 1IND participant АТС A --> 1IND: INVITE 1IND --> A: 100 Trying 1IND -> АТС: Занятие (ДС) 1IND -> АТС: набор номера 1IND --> A: 183 Session progress A <-[#blue]-> 1IND: //медиапоток// АТС -> 1IND: "Ответ" (ДС) АТС o-[#blue]> 1IND: Запрос АОН (500 Гц) 1IND -[#blue]> АТС: безинтервальный пакет АОН note over АТС: Вызываемый абонент слышит звонок АТС o-[#blue]> A: КПВ ... note over АТС: абонент ответил на вызов АТС -> 1IND: Ответ (ДС) АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: 200 OK A --> 1IND: ACK note over АТС, A: абоненты ведут разговор @enduml }}} Запрос АОН может поступить в процессе набора номера, например при междугородном исходящем вызове АМТС, как правило, запрашивает номер вызывающего после набора префикса межгорода (например "8"). В этом случае после передачи безинтервального пакета АОН канальное окончание 1IND возвращается в состояние `Dialing` и продолжает передачу оставшихся цифр номера вызываемого абонента. {{{#!plantuml @startuml title Междугородный исходящий вызов с запросом номера вызывающего абонента skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Вызывающий абонент" as A participant "Окончание 1IND" as 1IND participant АТС A --> 1IND: INVITE 83421234567@domain.org 1IND --> A: 100 Trying 1IND -> АТС: Занятие (КС) 1IND -> АТС: набор "8" АТС -> 1IND: "Ответ" (ДС) АТС o-[#blue]> 1IND: Запрос АОН (500 Гц) 1IND -[#blue]> АТС: безинтервальный пакет АОН 1IND -> АТС: набор "3421234567" 1IND --> A: 183 Session progress A <-[#blue]-> 1IND: //медиапоток// note over АТС: Вызываемый абонент слышит звонок АТС o-[#blue]> A: КПВ ... note over АТС: абонент ответил на вызов АТС -> 1IND: Ответ (ДС) АТС <-[#blue]> 1IND: //разговорное состояние// 1IND --> A: 200 OK A --> 1IND: ACK note over АТС, A: абоненты ведут разговор @enduml }}} Канальное окончание 1IND предполагает, что со стороны вызываемого абонента поступит, как минимум, один запрос АОН. Поэтому первый линейный сигнал "Ответ" (ДС), полученный в процессе исходящего вызова, тректуется как запрос АОН даже если он не сопровождался тональным сигналом 500 Гц. Это позволяет передать номер вызывающего абонента даже станциям, имеющим "плохой" тональный сигнал запроса АОН (например искаженный, имеющий слишком высокий или слишком низкий уровень, или имеющий слишком большое отклонение частоты от номинального значения 500 ГЦ, и не может быть обнаружен детектором платы VE-01). Последующие запросы АОН (кроме первого) требуют наличия тонального сигнала 500 Гц. Если в течение 600 мс с момента приема линейного сигнала "Ответ" канальное окончание 1IND не детектирует тональный сигнал 500 Гц, полученный линейный сигнал трактуется как реальный ответ вызываемого абонента: вызывающему абоненту передается ответ "200 OK", и канальное окончание переходит в состояние `Connected`. === Встречное занятие === Встречное занятие - ситуация, при которой оборудование на обоих сторонах соединительной линии одновременно пытается выполнить занятие. Для системы сигнализации с индуктивным кодом встречное занятие разрешается в соответствии с правилом приоритета вышестоящей АТС. Канальное окончание 1IND платы VE-01 предполагает, что удаленная сторона всегда является вышестоящей по отношению к нему АТС, поэтому при обнаружении встречного занятия (прием сигнала занятия во время передачи собственного занятия) канальное окончание 1IND сразу переходит в состояние `NumRecv` и приступает к приему номера как при нормальном входящем занятии. При этом существующий вызов SIP, для обслуживания которого выполнялась попытка занятия канала, возвращается для повторного поиска свободного канального окончания. При наличии другого свободного канального окончания вызов будет принят и обслужен им. При отсутствии других свободных канальных окончаний вызывающий получит ответ "486 Busy here". === Отбой === == Параметры конфигурации канального окончания == == Состояния канального окончания == Далее описаны состояния, в которых может находиться канальное окончание 1IND, и их описание. Idle:: Исходное состояние канального окончания. Канальное окончание свободно: способно принимать вызовы со стороны сети IP и ожидает сигнал "Занятие" со стороны канала TDM. Seizure:: Выполняется исходящее занятие соединительной линии. Dialing:: Передается номер вызываемого абонента. Dialed:: Номер вызываемого абонента передан. Ожидается ответ. Blocked:: передается линейный сигнал "Отбой" (ОС). !NumRecv:: Принимается номер вызываемого абонента. Outgoing:: Отправлен INVITE, ожидается ответ. Answered:: Получен ответ, ожидается запрос АОН. Connected:: Соединение установлено, ведется разговор. !DiscWait:: AONrequest:: передается запрос АОН (линейный сигнал "Ответ" + тональный сигнал 500 Гц). AONrequested:: прием кодограммы АОН RBlocked:: блокировка удаленной стороной {{{#!plantuml @startuml title Упрощенная диаграмма состояний канального окончания 1IND Idle: исходное состояние Seizure: исходящее занятие Dialing: передается номер\nвызываемого абонента Dialed: ожидание ответа Blocked: передается "Отбой" NumRecv: прием номера\nвызываемого абонента Outgoing: отправлен INVITE,\nожидается ответ Answered: Получен ответ,\nожидается запрос АОН Connected: соединение установлено,\nведется разговор DiscWait: ожидается отбой от\nудаленной стороны AONrequest: запрос АОН,\nожидание ответа AONrequested: прием кодограммы АОН Idle --> NumRecv: принято "Занятие"\n(ДС или КС) NumRecv --> AONrequest: набор номера\nзакончен NumRecv --> Outgoing: набор номера\nзакончен NumRecv --> Blocked: принят "Отбой" AONrequest --> AONrequested: 500 мс AONrequested --> Outgoing: прием успешен или\nисчерпано число попыток AONrequested --> AONrequest: ошибка AONrequest --> Idle: принят "Отбой" AONrequested --> Idle: принят "Отбой" Outgoing --> Connected: принято "200 OK" Outgoing --> Blocked: принят "Отбой" Connected --> Blocked: принято BYE Connected --> Blocked: принят "Отбой" Connected --> DiscWait: принято BYE,\nпередан ДС DiscWait --> Idle: принят "Отбой" Blocked --> Idle: 400 мс Idle --> Seizure: получено INVITE Seizure --> NumRecv: встречное занятие Seizure --> Dialing: занятие передано Dialing --> Dialed: номер передан Dialing --> Blocked: принято "Б занят"\nили "Отбой" Dialed --> Blocked: принято "Б занят"\nили "Отбой" Dialed --> Answered: принят "Ответ" Answered --> Connected: таймаут 600 мс Answered --> Dialing: принят запрос АОН,\nпередается\nкодограмма АОН Answered --> Idle: принят "Отбой" @enduml }}}