Кратко
- RFC 3149 позволял удалённому MGCP Call Agent толковать номера функциональных клавиш, задавать подписи и индикаторы, принудительно менять состояние линии и вести XML-дисплей, но событие клавиши не становилось доказательством назначенной функции или результата вызова.
- Состояние дисплея могло расходиться во времени с телефонной сигнализацией, поэтому дисплей получил отдельную конечную точку с префиксом
disp/, а общие нажатия сначала рассматривал слой XML. - Громкость звонка, трубки и громкой связи, непосредственный выбор аудиотракта, отключение микрофона и его индикатор оставались локальными. Внешний интеллект не отменял физическую границу устройства.
Телефон сообщал номер, а не деловой смысл
Media Gateway Control Protocol начинался с жёсткого архитектурного разделения. Логика вызова находилась в Media Gateway Controller, обычно называемом Call Agent, а шлюз воспроизводил сигналы и сообщал события на границе. Простому аналоговому окончанию хватало небольшого набора. Деловой телефон добавлял удержание, перевод, повторный набор, конференцию, сообщения, программируемые кнопки, экран, программные клавиши, громкую связь и mute.
RFC 3149 ввёл три семейства пакетов для этой поверхности. Feature Key, или KY, описывал клавиши, не относящиеся к DTMF, их лампы и подписи. Business Phone, или BP, добавлял принудительное снятие трубки, её укладку и звуковой сигнал. Display XML создавал небольшой интерфейс между Call Agent и экраном.
Событие функциональной клавиши намеренно оставалось низкоуровневым. Аппарат мог сказать, что нажата клавиша номер 1. Именно действующая программа Call Agent превращала единицу в удержание, перевод, выбор линии или иную функцию. На другой модели удержание могло находиться под номером 23, а нужная кнопка могла вообще отсутствовать. У физического жеста не было универсального делового значения в проводном сообщении.
Это разделение определяет качество доказательства. Корректная Notification подтверждает, что конечная точка сообщила номер в рамках заказанного набора событий. Фраза «пользователь нажал удержание» требует карты, действовавшей на этой модели в тот момент. Фраза «вызов был поставлен на удержание» требует ещё решения агента, запрошенных сигналов, перехода состояния сигнализации и наблюдаемого результата в медиатракте.
Поле button=hold незаметно склеивает все эти ступени. Проверяемая квитанция хранит модель, прошивку, версию карты, номер, запрос и уведомление, ветвь решения, результат сигнализации и результат для медиа раздельно, а связывает их явными идентификаторами.
Подпись и лампа были выходами, а не доказательствами
Call Agent мог включить или выключить индикатор клавиши и поместить рядом свободный текст, если экран это позволял. Универсальное устройство приобретало вид делового телефона, чьи функции могли изменяться вместе с приложением, без замены пластика.
Одновременно возник шов между представлением и работой. Надпись «Удержание» могла пережить новую карту. Лампа могла загореться после принятого сигнала, хотя сама функция вызова не состоялась. Клавиша могла верно сообщить номер, пока человек прочитал другую подпись или попал в соседнюю физическую кнопку. Успешный рендеринг был самостоятельным действием, но не квитанцией о результате услуги.
Документ стремился к минимальному низкоуровневому набору и избегал лишнего трафика. Если агенту был важен только факт нажатия, ему не требовались и press, и release. Узкий интерфейс был экономным, но журнал протокола поэтому не давал полной записи движения руки, дребезга контакта, физического расположения и того, что видел человек.
Правильная цепочка сохраняет по отдельности положение и номер клавиши, активную карту, видимые текст и свет, RQNT и NTFY, решение агента, состояние сигнализации, медиатракт и пользовательский результат. Близость элементов на панели не превращает их в одну сущность.
Дисплей получил отдельную конечную точку
RFC 3149 не считал экран простым украшением автомата сигнализации. Его состояние могло быть асинхронным по отношению к телефонному состоянию. Поэтому связанный дисплей должен был иметь самостоятельное имя MGCP endpoint, образованное добавлением disp/ перед именем телефонной конечной точки.
Показателен пример документа. Поступает вызов и идёт звонок, а на экране появляется предложение немедленно перенаправить его в голосовую почту. Выбор создаёт XML post и может отменить таймеры звонка. Но появление варианта, прикосновение, доставка события, отмена таймера, переход сигнализации и переживание удалённой стороны — не одна транзакция. У каждого этапа свои часы.
Пакет позволял агенту указывать deck и card, подставлять значения и принимать ввод или выбор. Карты могли содержать текст, списки, поля, таймеры и навигацию. Если одна клавиша служила и экранному сценарию, и телефону, нажатие сначала видел слой XML. Он либо поглощал его, либо передавал телефонному слою.
Приоритет диспетчеризации не давал власти над реальностью. Поглощённая цифра доказывала локальное решение о маршруте события. Она не доказывала правильные пиксели, доставку нужному контроллеру или последующее изменение вызова. Отдельное имя сделало асинхронное состояние адресуемым, а не автоматически согласованным.
Марка и модель были сокращением, не аттестацией
Call Agent должен был знать, какие клавиши и возможности экрана есть у телефона. Полное обнаружение было возможно, но RFC выбрал более простой экспериментальный параметр X-UA. Он запрашивал строку, однозначно называющую изготовителя и модель, чтобы контроллер выбрал известный профиль возможностей.
Строка служила дешёвым индексом, но не свидетельством состояния оборудования. Неподдерживаемый параметр мог быть проигнорирован; значение могло отстать от прошивки, попасть в неполный профиль или не учитывать заменённую клавиатуру. Оно не доказывало геометрию панели, размеры экрана, проводку индикаторов и исправность аудио.
Префикс X обозначал ещё и границу совместимости. Шлюз, который не понимал экспериментальный параметр, должен был пропустить его, а не отвергнуть весь обмен. Поэтому отсутствие ответа означало неопределённость, а не стандартную раскладку. Контроллеру требовался ограниченный режим деградации, а не воображаемый набор кнопок.
Доказательная инвентаризация сохраняет ответ вместе с учётной идентичностью устройства, прошивкой, версией профиля и наблюдением реальной поверхности. Классификация может выбрать поведение, но работающий аппарат имеет право её опровергнуть.
Рука пользователя сохранила немедленную власть
Раздел 4 проводит самую резкую границу. Громкость звонка, трубки и громкой связи следовало реализовывать локально. При активной громкой связи пользователь должен был иметь возможность поднять трубку, перейти на неё и вернуться к динамику без какого-либо взаимодействия с Call Agent. Кнопка отключения микрофона и необязательная лампа также должны были быть локальными.
Это не противоречило внешнему интеллекту, а ограничивало его область. Call Agent истолковывал функции, чьё значение принадлежало приложению вызова и могло меняться. Конечная точка сохраняла действия, где человеку нужно немедленно воздействовать на физический аудиотракт. Централизация семантики не превращалась в централизацию всякого исполнения.
Можно предположить преимущества по задержке, отказоустойчивости, приватности или безопасности. Они правдоподобны, но RFC не приводит измерений и не строит полной теории отказа. Обоснованное утверждение уже: эти функции назначены локальными, а переход между трубкой и громкой связью прямо не должен был обращаться к контроллеру.
Локальное исполнение тоже не означало правильность. Нажатие mute не равно состоянию mute; лампа не равна подавлению аудио; внутреннее переключение пути не доказывает, что именно услышала другая сторона. Физический ввод, состояние устройства, индикатор и медиарезультат требуют самостоятельных наблюдений.
Удалённая команда встречала локальное возражение
Пакет BP позволял принудительно перевести громкую связь в off-hook или on-hook и подать beep. Это поддерживало интеграцию, при которой пользователь выбирал номер на компьютере, а телефон начинал вызов. Но спецификация отдельно говорила: человек мог отменить forced off-hook, положив трубку.
Эта деталь разрушает слишком простую картину центрального правителя. Удалённый запрос не был конечным состоянием. Шлюз истолковывал его, оборудование менялось, подготовка вызова могла начаться, а локальное действие оставляло за собой право отмены. Команда в сети, принятие шлюзом, hook, установление соединения и жест человека жили на разных часах.
Столь же аккуратно следует читать раздел безопасности. Фраза о том, что расширение не добавляет соображений сверх базового MGCP, не называла безопасными удалённый XML, карты клавиш или команды hook. Аутентификация, авторизация, целостность и конфиденциальность зависели от базового протокола и развёртывания. Password mode маскировал символы на экране, но не доказывал шифрование транспорта или безопасную обработку после отправки.
Примечание IESG задаёт ещё одну границу. RFC 3149 описывал не-IETF протокол, уже использовавшийся в продуктах, и указывал на Standards Track Megaco/H.248 в той же предметной области. Это характеристика статуса документа, а не доказательство отсутствия практики, всеобщей миграции или ретроактивной власти более позднего стандарта над старой системой.
Интеллект разделили по последствиям
Долгосрочный вывод не состоит в том, что локальное всегда лучше или центральный контроль провалился. RFC 3149 дал разным местам разные полномочия. Центральное ПО хранило изменчивый деловой смысл: какую услугу обозначал номер, какую подпись и карточку показывать и как выбор влиял на логику вызова. Телефон сохранял непосредственное воздействие на аудиооборудование и mute.
Так не требовалось зашивать каждую новую услугу в каждое устройство, а небольшая физическая поверхность не ждала сетевого пути до контроллера и обратно. Вместе с тем появились независимые режимы отказа. Телефон мог продолжать локально глушить микрофон, когда централизованные функции не работали. Обновление Call Agent меняло смысл кнопки, не меняя корпуса. Карточка дисплея могла отстать от сигнализации.
Противоречия разрешает работающий код. Если агент называет клавишу 1 удержанием, а медиа продолжается, заявленный результат не наступил. Если лампа mute горит, но микрофонный звук уходит, расходятся представление и медиареальность. Если disp/ показывает перевод, а звонок продолжается, проявляется та самая асинхронность, которую архитектура допускала.
Маленькая физическая кнопка стала конституционной границей. Центр мог именовать и координировать. Получение событий само по себе не передавало ему власть над каждым действием человека.
Источники
- Текст RFC 3149
- Карточка RFC 3149
- RFC 3149 в HTML
- История документа RFC 3149
- RFC 2705 — MGCP 1.0
- RFC 2805 — требования к Media Gateway Control
- RFC 3015 — Megaco/H.248
- RFC 3435 — пересмотренный MGCP 1.0
- RFC 3525 — Gateway Control Protocol
- RFC 3660 — базовые пакеты MGCP
- RFC 2897 — расширенные аудиопакеты MGCP
- XML 1.0, рекомендация 1998 года
- Первенство работающего кода
- О слоях реальности
- Минимальная исходная спецификация
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
