[[PageOutline(2-5,Содержание:)]] [[span(style=color: #FF0000, Внимание! Статья находится в стадии создания. Содержащаяся в статье информация может быть неполной и/или неточной. )]] = Канальное окончание R2DTMF = Канальное окончание R2DTMF предназначено для подключения к соединительным линиям АТС с использованием варианта системы сигнализации R2, известного как "R2-DTMF". == Линейные сигналы канального окончания MFC R2 == Для передачи линейных сигналов "Занятие", "Подтверждение занятия", "Ответ", "Разъединение", "Блокировка", "Контроль исходного" канальное окончание R2DTMF использует два выделенных сигнальных канала (СУВ a и b). || '''Комбинация СУВ ab''' || '''Значение сигнала''' || || 00 || Занятие || || 01 || Ответ || || 10 || Разъединение / контроль исходного || || 11 || Подтверждение занятия / Clear Back / блокировка || == Сигналы межрегистровой сигнализации == Для передачи адресной информации между регистрами канальное окончание R2DTMF использует двухчастотные тональные сигналы DTMF. В прямом направлении передаются цифры номера вызываемого абонента в виде последовательности тональных сигналов длительностью 80 мс и паузами 80 мс. В обратном направлении никакие сигналы не передаются. == Описание работы канального окончания == === Входящий вызов === Входящий (со стороны канала TDM) вызов начинается с приема из канала линейного сигнала "Занятие". В ответ на получении сигнала "Занятие" канальное окончание R2DTMF передает в канал линейный сигнал "Подтверждение занятия", переходит в состояние `NumRecv` и ожидает номер вызываемого абонента. В состоянии `NumRecv` при получении каждой новой цифры номера вызываемого абонента эта цифра добавляется к ранее принятым цифрам, формируя номер вызываемого абонента. После получения каждой новой цифры производится проверка принятого номера на совпадение с регулярным выражением, установленным конфигурационным параметром "Рег. выражение набора", а также на достижение максимальной длины номера, установленной конфигурационным параметром "Макс. длина номера". Система сигнализации R2-DTMF предполагает, что принимающая вызов сторона заранее "знает", какое количество цифр должно быть в номере вызываемого абонента. Если обнаружено совпадение номера с регулярным выражением или достижение максимальной длины номера, канальное окончание R2DTMF формирует и передает сообщение INVITE в сеть IP и переходит в состояние `Outgoing`. При получении от вызываемого абонента ответа "180 Ringing" и отсутствии медиапотока канальное окончание R2 формирует и передает в канал TDM акустический сигнал "Контроль посылки вызова" (КПВ). При получении от вызываемого абонента неуспешного ответа (4xx/5xx/6xx) канальное окончание R2DTMF передает линейный сигнал "Контроль исходного" и переходит в состояние `Blocked`, ожидая линейного сигнала "Контроль исходного" от вызывающей стороны. После получения линейного сигнала "Контроль исходного" канальное окончание R2DTMF переходит в исходное состояние (`Idle`). При получении от вызываемого абонента ответа "200 OK" канальное окончание R2DTMF передает линейный сигнал "Ответ" и переходит в состояние `Connected`. Пример приема входящего вызова: {{{#!plantuml @startuml skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание R2DTMF" as R2 participant "Вызываемый абонент" as A АТС <-[#red]> R2: исходное состояние (10) ... АТС -[#red]> R2: Занятие (00) R2 -[#red]> АТС: Подтверждение занятия (11) АТС -> R2: DTMF "1" АТС -> R2: DTMF "2" АТС -> R2: DTMF "3" АТС -> R2: DTMF "4" АТС -> R2: DTMF "5" R2 --> A: INVITE\nTo: A --> R2: 100 Trying A --> R2: 180 Ringing note right: Вызываемый абонент слышит звонок R2 o-[#blue]> АТС: КПВ ... note over A: абонент ответил на вызов A --> R2: 200 OK R2 --> A: ACK A <-[#blue]-> R2: //медиапоток// R2 -[#red]> АТС: Ответ (01) АТС <-[#blue]> R2: //разговорное состояние// note over АТС, A: абоненты ведут разговор @enduml }}} Если в ответ на запрос INVITE канальное окончание R2DTMF получает ответ "180 Ringing" или "183 Session progress", содержащий ответ SDP (early media), канальное окончание активирует медиапоток, давая возможность вызывающему абоненту прослушивать анонсы и другие акустические сигналы, формируемые оборудованием вызываемого абонента. За передачу сигнала КПВ в таком сценарии отвечает оборудование вызываемой стороны. Пример входящего вызова с early media: {{{#!plantuml @startuml skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant АТС participant "Окончание R2DTMF" as R2 participant "Вызываемый абонент" as A АТС <-[#red]> R2: исходное состояние (10) ... АТС -[#red]> R2: Занятие (00) R2 -[#red]> АТС: Подтверждение занятия (11) АТС -> R2: DTMF "1" АТС -> R2: DTMF "2" АТС -> R2: DTMF "3" АТС -> R2: DTMF "4" АТС -> R2: DTMF "5" R2 --> A: INVITE\nTo: A --> R2: 100 Trying A --> R2: 183 Session Progress + SDP A <-[#blue]-> R2: //медиапоток// АТС <-[#blue]> R2: //разговорное состояние// A o-[#gray]> АТС: КПВ note right: Вызываемый абонент слышит звонок ... note over A: абонент ответил на вызов A --> R2: 200 OK R2 --> A: ACK R2 -[#red]> АТС: Ответ (01) note over АТС, A: абоненты ведут разговор @enduml }}} === Исходящий вызов === При получении сообщения INVITE канальное окончание R2DTMF занимает канал, передавая линейный сигнал "Занятие", переходит в состояние `Seizure` и ожидает линейный сигнал "Подтверждение занятия" от удаленной стороны. При получении сигнала "Подтверждение занятия" канальное окончание R2DTMF переходит в состояние `Dialing` и начинает передавать цифры номера вызываемого абонента. Передаваемый номер формируется из имени пользователя (username) вызываемого URI по следующим правилам: * передача номера выполняется в порядке следования символов слева направо; * символы '0'-'9', '*', '#', 'a'-'d', 'A'-'D' передаются в канал TDM соответствующими посылками DTMF; * остальные символы username игнорируются. После того как канальное окончание R2DTMF передало все цифры номера вызываемого абонента, оно передает вызывающей стороне ответ "183 Session Progress", содержащий ответ SDP, активирует медиапоток и переходит в состояние `Dialed`, ожидая линейный сигнал "Ответ" либо "Clear Back". При получении линейного сигнала "Ответ" в состояниях `Dialing` или `Dialed` канальное окончание R2DTMF передает вызывающей стороне ответ "200 OK" и переходит в состояние `Connected`. Пример исходящего вызова: {{{#!plantuml @startuml skinparam ParticipantPadding 80 skinparam sequenceMessageAlign center participant "Вызывающий абонент" as A participant "Окончание R2DTMF" as R2 participant АТС АТС <-[#red]> R2: исходное состояние (10) ... A --> R2: INVITE sip:12345@domain.org R2 --> A: 100 Trying R2 -[#red]> АТС: Занятие (00) АТС -[#red]> R2: Подтверждение занятия (11) R2 -> АТС: DTMF "1" R2 -> АТС: DTMF "2" R2 -> АТС: DTMF "3" R2 -> АТС: DTMF "4" R2 -> АТС: DTMF "5" R2 --> A: 183 Session Progress A <-[#blue]-> R2: //медиапоток// note right of АТС: Вызываемый абонент слышит звонок АТС o-[#gray]> A: КПВ ... note right of АТС: абонент ответил на вызов АТС -[#red]> R2: Ответ (01) R2 --> A: 200 OK A --> R2: ACK note over АТС, A: абоненты ведут разговор @enduml }}} === Отбой соединения === ==== Отбой со стороны IP ==== == Параметры конфигурации канального окончания == == Состояния канального окончания == == См. также ==