Взаимодействие агентов и шлюзов
Процесс взаимодействия телефонного агента со шлюзами для обеспечения телефонного вызова можно описать следующей последовательностью действий (Рис. 11):
Рис. 11. Взаимодействие шлюзов с агентом
- Агент направляет сообщение RQNT (Request Notification) каждому шлюзу. Этот запрос дает инструкцию шлюзам ждать события off-hook (когда снимается телефонная трубка) и дать гудок, когда такое событие произойдет. Агент также сообщает о необходимости мониторинга других событий. Предоставляя цифровую карту в запросе, агент позволяет шлюзам собрать цифры перед тем как информировать о событии агента (иначе шлюз не будет "знать", когда набор номера завершается, будет вынужден посылать агенту все цифры набора по одной).
- Шлюз отвечает на запрос. С этого момента агент и шлюзы ждут событий.
- Пользователь на шлюзе А поднял трубку. Следуя инструкции, шлюз дает телефонный гудок. Так как у шлюза есть карта номеров, он начинает собирать набираемые цифры, пока не будет получено соответствие (или пока набранные цифры не покажут, что соответствие невозможно).
- Шлюз А посылает оповещение (NTFY) агенту, сообщая ему, что требуемое событие произошло. Оповещение включает в себя конечную точку, событие и набранные цифры.
- После подтверждения возможности звонка агент инструктирует шлюз А создать соединение (CRCX) с его конечной точкой.
- Шлюз отвечает дескриптором сессии. Дескриптор определяет, как минимум, IP-адрес и UDP-порт для последующей RTP-сессии. Шлюз не имеет дескриптора сессии удаленной стороны, и соединение переходит в режим ожидания.
- Агент отправляет запрос на соединение шлюзу В. В запросе агент предоставляет дескриптор сессии, который он получил от шлюза А. Агент также посылает инструкции о том, какие в данный момент события важны и какие сигналы шлюзу генерировать. В данном случае таким событием является off-hook, сигналом — звонок.
- Шлюз В отвечает на запрос и сообщает свой дескриптор сессии.
- Агент передает дескриптор сессии шлюзу А в запросе MDCX (Modify Connection). Теперь шлюзы могут установить RTP-сессии для передачи голоса.
- В конце вызова одна из конечных точек распознает переход в состояние on-hook (трубка повешена). Допустим, это случилось на шлюзе А. Так как агент проинструктировал сообщить о таком событии, шлюз А посылает агенту уведомление.
- Агент рассылает сообщение DLCX (Delete Connection) каждому шлюзу.
- Шлюзы удаляют соединения и отвечают.