| 116 | При получении сообщения SETUP канальное окончание PRI выполняет ряд проверок для определения возможности обслужить поступивший вызов, основные из которых перечислены ниже: |
| 117 | 1. Проверяется, установлен ли конфигурационный параметр "Блокировать исходящие при отсутствии регистрации". Если флаг установлен, и канальное окончание не зарегистрировано на внешнем SIP-сервере, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Destination out of order" (27). |
| 118 | 1. Проверяется значение поля Transfer Capability. Если его значение отлично от `speech` (и `3.1k audio` при условии установки конфигурационного параметра "Принимать Bearer Capability "3.1k audio" дополнительно к "Speech""), канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Bearer capability not implemented" (65). |
| 119 | 1. Если запрошен конкретный номер речевого канала, проверяется, находится ли указанный канал в исходном состоянии (`Idle`). Если нет, и установлен флаг эксклюзивности канала, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Channel unacceptable" (6). |
| 120 | 1. Если номер канала не указан, или указанный канал занят, производщится поиск свободного речевого канала. Если свободный канал отсутствует, канальное окончание дает отбой (DISCONNECT), при этом поле `cause` устанавливается в значение "Circuit/channel congestion" (34). |
| 121 | |
| 122 | Если все проверки прошли успешно, выбранный речевой канал переводится в состояние `Dialing`. |
| 123 | |
| 124 | Если конфигурационный параметр "Преобразование ANI" имеет непустое значение, выполняется замена номера вызывающего абонента по совпадению с заданным регулярным выражением. |
| 125 | |
| 126 | Наконец, если в полученном сообщении присутствует IE "Sending Complete", канальное окончание формирует сообщение INVITE и отправляет его в сеть IP, а выбранный речевой канал переводится в состояние `Calling`. |
| 127 | |
| 128 | При получении из сети ответа "180 Ringing" канальное окончание PRI передает в сторону TDM сообщение ALERTING, содержащее прогресс-индикатор, сигнализирующий наличие данных в речевом канале и начинает передавать в канал акустический сигнал "Контроль посылки вызова" (КПВ). |
| 129 | |
| 130 | При получении из сети ответа "200 OK", сигнализирующего ответ вызываемого абонента, канальное окончание PRI прекращает передачу в канал сигнала "КПВ", активирует медиапоток и передает в сторону TDM сообщение CONNECT. |
| 131 | |
| 132 | Пример сценария вызова приведен ниже: |
| 133 | |
| 134 | {{{#!PlantUml |
| 135 | @startuml |
| 136 | title Базовый сценарий вызова со стороны сети TDM |
| 137 | skinparam ParticipantPadding 80 |
| 138 | skinparam sequenceMessageAlign center |
| 139 | participant "Абонент А (TDM)" as A |
| 140 | participant "окончание PRI" as B |
| 141 | participant "Абонент Б (IP)" as C |
| 142 | |
| 143 | A -> B: SETUP |
| 144 | B -> A: CALL PROCEEDING |
| 145 | B -> C: INVITE |
| 146 | C -> B: 100 Trying |
| 147 | C -> B: 180 Ringing |
| 148 | note right: вызываемый абонент слышит звонок |
| 149 | B -> A: ALERTING |
| 150 | B o-[#blue]> A: <font color=blue>КПВ |
| 151 | |
| 152 | ... |
| 153 | note over C: абонент ответил на вызов |
| 154 | C -> B: 200 OK |
| 155 | B <-[#0000ff]-> C: <font color=blue>//медиапоток// |
| 156 | B -> C: ACK |
| 157 | B -> A: CONNECT |
| 158 | A -> B: CONNECT ACKNOWLEDGE |
| 159 | note over A, C: абоненты А и Б ведут разговор |
| 160 | @enduml |
| 161 | }}} |
| 162 | |
| 165 | Рассмотренный выше сценарий предполагал, что сообщение SETUP содержит в себе полный номер вызываемого абонента (En Bloc Dialing) и, таким образом, имеющейся в нем информации достаточно для трансляции вызова в SIP сообщение INVITE. Бывают сценарии, в которых сообщение SETUP содержит только часть (одну или несколько первых цифр) номера вызываемого абонента, а иногда не содержит цифр номера вообще. В таком случае оставшиеся недостающие цифры номера передаются в последующих сообщениях INFO. |
| 166 | |
| 167 | При получении сообщения SETUP с неполным номером (отсутствующим IE "Sending Complete") канальное окончсание проверяет, есть ли в номере хотя бы один символ. Если номер пуст, в речевой канал передается акустический сигнал готовности к набору номера (dialtone). После этого вызывающему передается сообщение SETUP ACK и ожидаются оставшиеся цифры номера. |
| 168 | |
| 169 | При получении от вызывающего абонента сообщений INFO содержащиеся в них символы номера вызываемого абонента добавляются к ранее принятым. Сигнал готовности, если был включен, отключается. Ожидание цифр номера заканчивается либо при получении очередного сообщения INFO с признаком окончания набора номера (IE "Sending Complete"), либо если в течение времени, установленного конфигурационным параметром "Таймаут набора", не поступило ни одного нового символа. По окончании приема номера канальное окончание формирует и передает в сеть сообщение INVITE, и далее процесс установки соединения ничем не отличается от приведенного выше базового сценария. |
| 170 | |
| 171 | Пример сценария с overlap dialing: |
| 172 | |
| 173 | {{{#!PlantUml |
| 174 | @startuml |
| 175 | title Cценарий вызова со стороны сети TDM с overlap dialing |
| 176 | skinparam ParticipantPadding 80 |
| 177 | skinparam sequenceMessageAlign center |
| 178 | participant "Абонент А (TDM)" as A |
| 179 | participant "окончание PRI" as B |
| 180 | participant "Абонент Б (IP)" as C |
| 181 | |
| 182 | A -> B: SETUP (Called Party Number="") |
| 183 | B -> A: SETUP ACK |
| 184 | B o-[#blue]> A: <font color=blue>dialtone |
| 185 | A -> B: INFO (Called Party Number="1") |
| 186 | A <-[#blue]x B: <font color=blue>dialtone off |
| 187 | A -> B: INFO (Called Party Number="2") |
| 188 | A -> B: INFO (Called Party Number="3") |
| 189 | A -> B: INFO (Called Party Number="4") |
| 190 | A -> B: INFO (Called Party Number="5") |
| 191 | B -> A: CALL PROCEEDING |
| 192 | B -> C: INVITE "12345" |
| 193 | C -> B: 100 Trying |
| 194 | C -> B: 180 Ringing |
| 195 | note right: вызываемый абонент слышит звонок |
| 196 | B -> A: ALERTING |
| 197 | B o-[#blue]> A: <font color=blue>КПВ |
| 198 | ... |
| 199 | note over C: абонент ответил на вызов |
| 200 | C -> B: 200 OK |
| 201 | B <-[#0000ff]-> C: <font color=blue>//медиапоток// |
| 202 | B -> C: ACK |
| 203 | B -> A: CONNECT |
| 204 | A -> B: CONNECT ACKNOWLEDGE |
| 205 | note over A, C: абоненты А и Б ведут разговор |
| 206 | @enduml |
| 207 | }}} |
| 208 | |