Руководство по пользовательским шаблонам телефонов
- Что делает пользовательский шаблон
- Предварительные требования
- Процедура
- Структура шаблона
- Тег Header
- Теги BlfType и Data
- Переменные 3CX: Краткий справочник
- Идентификация и автонастройка
- Добавочный номер / SIP-аккаунт
- Сеть
- Параметры, определяемые в заголовке (Header)
- Кодеки
- BLF / Функциональные клавиши
- Условная логика
- Сетевой режим
- Слоты BLF
- Системные параметры
- Тестирование и проверка
- Автоматическая настройка часового пояса в соответствии с отделом
- Пример шаблона
- Устранение неполадок
- Дальнейшие действия
- Дополнительная информация
3CX поставляется со встроенными шаблонами для поддерживаемых производителей телефонов. Если вашего бренда или модели нет в этом списке, вы можете добавить поддержку, создав пользовательский шаблон (Custom Template). В этом руководстве описывается данный процесс на примере рабочего шаблона, который можно адаптировать под свои нужды.
Что делает пользовательский шаблон
Шаблон — это XML-файл, который указывает 3CX, как сгенерировать конфигурацию автонастройки (provisioning) для конкретной модели телефона. При автонастройке телефона 3CX выполняет следующие действия:
- Загружает шаблон, назначенный устройству.
- Заменяет переменные 3CX (например, %%extension_number%%) на реальные значения.
- Обрабатывает условные блоки (например, {IF network=SBC}).
- Записывает итоговый конфигурационный файл по URL-адресу автонастройки (provisioning URL), к которому обращается телефон.
Ваша задача при адаптации примера — сопоставить синтаксис конфигурации вашего производителя с переменными 3CX, которые предоставляют данные.
Предварительные требования
- Доступ администратора к 3CX (Admin > Advanced > Templates).
- Документация по автонастройке от вашего производителя, в частности — названия параметров для учетных данных SIP, кодеков, BLF-клавиш, NTP, часового пояса, VLAN и любых других функций, поддерживаемых вашим телефоном. Некоторые производители предоставляют техническую документацию только по запросу. В качестве примеров онлайн-ресурсов можно привести следующие:
- Строка User-Agent телефона (отображается в SIP REGISTER устройства или в журналах телефонов 3CX, когда устройство связывается с АТС).
- Формат URL-адреса автонастройки, который ожидает ваш телефон.
Процедура
- Перейдите в Admin > Advanced > Templates > Phone Templates.
- Выберите шаблон, наиболее близкий к синтаксису вашего производителя, и нажмите Create Copy. Назовите копию именем вашего бренда (например,phonetel-custom.ph).
- Откройте новый шаблон и замените его содержимое на пример шаблона, приведенный ниже.
- Отредактируйте раздел <header>: укажите имя шаблона, ua (User-Agent) модели, логотип, кодеки и возможности в соответствии с вашим устройством.
- Отредактируйте раздел CDATA в блоке <deviceconfig>. Замените каждый плейсхолдер your_*_variable на реальное имя параметра вашего производителя. Оставьте переменные 3CX вида %%...%% с правой стороны — они будут заменены во время автонастройки.
- Сохраните шаблон.
- Добавьте телефон в 3CX и выберите ваш пользовательский шаблон при запросе модели.
- Введите URL-адрес автонастройки, предоставленный 3CX, в телефон (вручную или через DHCP опцию 66 / PNP) и запустите процесс автонастройки.
Структура шаблона
XML-файл состоит из двух секций верхнего уровня.
Тег Header
Тег <header> объявляет метаданные шаблона и элементы управления пользовательского интерфейса, которые 3CX отображает для этого телефона:
Элемент | Назначение |
<type>, <version>, <time>, <name>, <url>,<description> | Тип, идентификатор и версия шаблона. |
<templatetype> | Одно из значений: preferred, supported, vendor, custom. |
<models> | Один тег <model> для каждого варианта устройства. ua соответствует SIP User-Agent телефона. canbesbc включает удаленную настройку SBC для телефонов со встроенным 3CX SBC. defaultlogo задает имя файла изображения бренда. logowidth, logoheight, logobitdepth описывают атрибуты файла логотипа, а текст элемента определяет название модели так, как оно будет отображаться в 3CX. |
<parsers> | Парсеры функций (Feature parsers) — например, BLF включает генерацию клавиш BLF (busy-lamp-field). |
<rebootParams>, <resyncParams>, <firmwareParams> | Имена событий SIP NOTIFY, используемые для удаленной перезагрузки, повторной синхронизации конфигурации (resync) или запуска обновления прошивки. |
<rps> | Установите значение 1, если производитель поддерживает службу перенаправления и автонастройки (Redirection and Provisioning Service / RPS). |
<hotdesking> | Установите значение 1, если телефон поддерживает функцию hot-desking. |
<AllowedNetworkConfig> | Допустимые сетевые режимы: LOCALLAN, REMOTESTUN, SBC. |
<interfaceLink> | URL-адрес для входа в веб-консоль телефона (отображается в 3CX, когда телефон зарегистрирован). |
<xfertype> | Значения для слепого (Blind) и сопровождаемого (Attended) перевода вызова для DSS-клавиш. |
<languages>, <ringtones>, <queueringtones>, <dateformat>, <timeformat>, <powerled>, <backlight>, <screensaver>, <vlan>, <lldp>, <timezoneParams> | Выпадающие списки пользовательского интерфейса (UI dropdowns). Каждый из них может содержать тег <option>, который определяет, что видит администратор, какие переменные становятся доступны при его выборе и, в конечном итоге, отправляются на телефон во время автонастройки. |
<Codecspriorities> | Порядок кодеков. Первый вариант в каждом блоке <Codecspriority> является приоритетным по умолчанию для этого слота. |
Теги BlfType и Data
- <blftype> — определяет форматы клавиш для каждой функции BLF (отслеживание статуса добавочного номера, линия, быстрый набор, вход в очередь, парковка вызова, статус профиля). 3CX перебирает их, когда администратор назначает BLF-клавиши в настройках добавочного номера.
- <data><device> — оборачивает блок CDATA <deviceconfig>. Раздел CDATA содержит точный синтаксис конфигурации вашего производителя со встроенными переменными 3CX. В нем могут использоваться условные операторы IF, которые 3CX обрабатывает для подстановки разных переменных в зависимости от модели и условий.
Переменные 3CX: Краткий справочник
Это наиболее часто используемые переменные внутри раздела CDATA. Переменные записываются в формате %%name%% и подставляются во время автонастройки.
Идентификация и автонастройка
Переменная | Значение |
%%mac_address%% | MAC-адрес телефона. Часто используется в имени конфигурационного файла. |
%%PROVLINK%% | Полный URL-адрес автонастройки (provisioning URL), который должен использовать телефон. |
%%firmware%% | Имя файла прошивки, объявленное в шаблоне. |
%%PHONE_IP%% | Обнаруженный IP-адрес телефона. |
%%PHONE_WEB_PASSWORD%% | Сгенерированный пароль веб-администратора. Для тега <interfaceLink> |
%%DESKPHONE_PASSWORD%% | Пароль на стороне телефона. Для раздела CDATA <device>. |
%%PROVLINK.HOST%%, %%PROVLINK.PATH%%, %%PROVLINK.PORT%% | Компоненты (FQDN, путь и HTTP-порт), используемые для ручного формирования полного URL-адреса автонастройки, если вашему телефону требуется определенный формат. |
%%param::time_ntp_server%% | Адрес сервера сетевого времени (NTP), который будет использоваться телефонами. |
Добавочный номер / SIP-аккаунт
Переменная | Значение |
%%extension_number%% | Добавочный номер. |
%%extension_first_name%%, %%extension_last_name%% | Имя пользователя. |
%%extension_auth_id%%, %%extension_auth_pw%% | Учетные данные для аутентификации SIP. |
%%vm_number%% | Номер доступа к голосовой почте. |
Сеть
Переменная | Значение |
%%pbx_ip%% | Внутренний IP-адрес АТС (режим LAN). |
%%param::pbxpublicip%% | Публичный IP-адрес АТС (режим SBC). |
%%param::sipport%% | SIP-порт АТС. |
%%local_sbc_ip%%, %%local_sbc_port%% | Адрес SBC для удаленных телефонов. |
%%phonesipport%% | Локальный SIP-порт телефона (Устарело — используется для STUN-телефонов). |
Параметры, определяемые в заголовке (Header)
Они берутся из значений тега <option>, которые вы задали в разделе <header>:
Переменная | Из |
%%language%% | <languages> |
%%datestyle%%, %%timestyle%% | <dateformat>, <timeformat> |
%%defringtone%% | <ringtones> |
%%queueringtone%%, %%queueringtonevalue%%, %%queueid%% | <queueringtones> |
%%mwiled%%, %%missedled%% | <powerled> |
%%blktime%% | <backlight> |
%%scrsavertime%% | <screensaver> |
%%vlanwanenabled%%, %%vlanwanportid%%, %%vlanwanportpriority%% | <vlan> (порт WAN) |
%%vlanpcenabled%%, %%vlanpcportid%%, %%vlanpcportpriority%% | <vlan> (порт PC) |
%%lldpenabled%% | <lldp> |
%%param::time_timezone_yealink%%, %%TimeZoneName%% | <timezoneParams> |
%%XFERmethod_Value%% | <xfertype> |
%%logo%% | Атрибут defaultlogo в теге <model>
и screensaver.type= 1
|
%%logo_filename%% | Для Yealink также необходимо задать |
Кодеки
Переменная | Значение |
%%codec1%% … %%codec5%% | Значение кодека для каждого приоритетного слота. |
%%payload1%% … %%payload5%% | Тип полезной нагрузки (Payload type) для каждого слота. |
%%[id].codecselected%% | 1, если кодек включен (pcmuid, g729id, opusid и т. д.). |
%%[id].priority%% | Приоритетный слот, который занимает кодек. |
BLF / Функциональные клавиши
Внутри блоков {IF blfN} (где N — индекс клавиши):
Переменная | Значение |
%%Line%% | Номер линии из определения <blftype>. |
%%type%% | Отслеживаемый добавочный номер или код функции. |
%%PickupValue%% | Цель для перехвата вызова. |
%%DKtype%% | Код типа функциональной клавиши (зависит от производителя, задается в <DKtype>). |
%%label%% | Отображаемая метка. |
%%blfno%% | Добавочный номер для BLF или быстрого набора. |
%%param::pickup%% | Код перехвата вызова, взятый из настроек системы 3CX. |
%%blffirstname%%, %%blflastname%% | Имя/Фамилия пользователя добавочного номера, используемые для отображаемой метки BLF. |
Условная логика
Раздел CDATA поддерживает простые условные выражения. 3CX обрабатывает их перед отправкой конфигурации на телефон.
Сетевой режим
Различные блоки генерируются в зависимости от того, как телефон подключается к АТС:
{IF network=LOCALLAN}
...настройки для телефонов, подключенных по локальной сети (LAN)...
{ENDIF}
{IF network=SBC}
...настройки для удаленных телефонов, использующих SBC...
{ENDIF}
{IF network=REMOTESTUN}
...настройки для удаленных телефонов, использующих STUN...
{ENDIF}
Слоты BLF
Каждая BLF / функциональная клавиша имеет собственное условие. Внутри этого блока контекстные переменные BLF (%%Line%%, %%type%%, %%label%% и т. д.) относятся к данной клавише:
{IF blf1}
linekey.1.type = %%DKtype%%
linekey.1.value = %%type%%
linekey.1.label = %%label%%
{ELSE}
linekey.1.type = 0
{ENDIF}
Повторите эту конструкцию для blf2, blf3, … вплоть до того количества программируемых клавиш, которое поддерживает ваш телефон.
Системные параметры
Вы можете обращаться к любому системному параметру 3CX через sysparam.NAME:
{IF sysparam.CUSTOMIZE_QUEUE_RINGTONES=1}
...назначение индивидуальных рингтонов для каждой очереди...
{ELSE}
...один рингтон для очередей по умолчанию...
{ENDIF}
Тестирование и проверка
- После сохранения шаблона добавьте тестовый добавочный номер и выберите ваш пользовательский шаблон в качестве модели телефона.
- Сбросьте телефон до заводских настроек (рекомендуется для чистоты тестирования).
- Выполните автонастройку телефона одним из следующих способов:
- Вручную — введите %%PROVLINK%% (отображается на вкладке «IP-телефон» добавочного номера) в поле URL-адреса автонастройки телефона.
- DHCP-опция 66 — укажите в этой опции URL автонастройки (provisioning URL) вашей АТС.
- PNP / RPS — если производитель поддерживает этот функционал, и в вашем шаблоне задано <rps>1</rps>.
- Проверьте Журнал событий 3CX (Activity Log) и локальные журналы телефона. Убедитесь, что устройство успешно получает конфигурацию и регистрируется.
- Проверьте работу всех настроенных функций: порядок кодеков, BLF-клавиши, рингтоны, поведение при переводе вызова и настройки VLAN.
Если какое-либо значение применяется неверно, проверьте сгенерированный конфигурационный файл напрямую — 3CX предоставляет его по адресу %%PROVLINK%%/<mac_address>.cfg (или по шаблону имени файла, который вы задали в <deviceconfig filename="...">).
Автоматическая настройка часового пояса в соответствии с отделом
Глобальный часовой пояс 3CX или индивидуальный часовой пояс вашего отдела имеет соответствующий ID для каждого названия региона, как показано в таблице примеров ниже:
Id | Описание | Часовой пояс |
121 | -12:00 Линия перемены дат (Запад) | -12:00 |
120 | -11:00 Остров Мидуэй, Самоа | -11:00 |
1 | -10:00 США — Гавайско-Алеутское время | -10:00 |
2 | -10:00 США — Аляскинско-Алеутское время | -10:00 |
Если ваш шаблон содержит эти ID в теге <timezoneParams>, телефоны смогут использовать опцию по умолчанию «Использовать глобальный часовой пояс» (Use Global Time Zone). В этом случае 3CX автоматически сопоставит часовой пояс и передаст нужные настройки на устройства, чтобы вам не приходилось вручную выбирать часовой пояс для каждого телефона в отдельности.
Если вам необходимо задать ID вручную, полный список идентификаторов можно найти в справочном руководстве по часовым поясам здесь.
Пример шаблона
Скопируйте этот шаблон в ваш пользовательский шаблон в качестве основы, а затем замените плейсхолдеры переменных (представленные в фрагменте шаблона ниже в формате your_*_variable и [Example_*]) на реальные параметры и названия от вашего производителя.
Рекомендации по редактированию шаблонов:
- Формат: Используйте редакторы простого текста или специализированные редакторы кода для работы с файлами .ph.xml. Избегайте текстовых процессоров (таких как Word или Google Docs), чтобы предотвратить повреждение форматирования.
- Структура: За пределами блока CDATA <deviceconfig> отступы игнорируются.
- CDATA: Внутри раздела CDATA строго сохраняйте синтаксис, требуемый производителем (включая пробелы и переносы строк).
- Проверка: Сохраняйте файл в кодировке UTF-8, проверяйте XML на валидность и всегда тестируйте сгенерированные конфигурации на реальном устройстве.
<?xml version="1.0" encoding="utf-8"?>
<doc xmlns:tcx="http://www.3cx.com">
<header>
<type>phone-template</type>
<version>150000</version>
<time>2026-01-01 12:30:00</time>
<!-- Имя шаблона -->
<name>[Example_GreatPhone]</name>
<url>https://www.3cx.com/sip-phones/</url>
<templatetype>supported</templatetype>
<!-- Укажите user agent модели, поддержку SBC, имя файла/размеры/глубину цвета логотипа и название модели -->
<models>
<model ua="[Example_GP100]" canbesbc="true" defaultlogo="[Example_GreatPhone.png]" logowidth="320" logoheight="240" logobitdepth="24">[Example_GreatPhone GP100]</model>
<model ua="[Example_GreatPhone GP200]" canbesbc="true" defaultlogo="[Example_GreatPhone.png]" logowidth="320" logoheight="240" logobitdepth="24">GreatPhone GP200</model>
<!-- Имя файла "[Example_GreatPhone.png]" также определяет имя папки с прошивкой -->
</models>
<description>[Example_GreatPhone SIP Phones]</description>
...
<languages>
<!-- Опции: Элементы выпадающего списка языков -->
<option value="English">
<item name="your_language_variable">English</item>
</option>
</languages>
<ringtones>
<!-- Элементы выпадающего списка рингтонов по умолчанию -->
<option value="Ring 1">
<item name="defringtone">your_ring1_variable</item>
</option>
</ringtones>
....
<data>
<device>
<type>phone</type>
<!-- Понятное имя (Friendly Name) -->
<field name="Name">[Example_GreatPhone GP100 Identity]</field>
<deviceconfig filename="%%mac_address%%.cfg"><![CDATA[
<!-- Приведенный ниже раздел примера будет содержать синтаксис вашего производителя, где переменные 3CX заменяются на параметры, определенные выше -->
your_provisioning_url_variable = %%PROVLINK%%
your_firmware_url_variable = %%PROVLINK%%/firmware/[Example_GreatPhone]/%%firmware%%
your_ntp_server_variable = %%param::time_ntp_server%%
...
<!-- Синтаксис вашего производителя заканчивается здесь -->
]]></deviceconfig>
</device>
</data>
</doc>
Устранение неполадок
Симптом | Возможная причина |
Телефон не скачивает конфигурацию. | Неверный URL-адрес автонастройки или несоответствие HTTP/HTTPS. Проверьте параметр <AllowSSLProvisioning>. |
Конфигурация получена, но телефон не регистрируется. | Отсутствует блок network=LOCALLAN или указана неверная переменная SIP-порта. |
Удаленный телефон регистрируется, но нет звука. | В блоке network=SBC отсутствуют строки your_proxy_*, либо закрыты порты SBC. |
Клавиши BLF пустые после автонастройки. | Индексация клавиш у производителя начинается с 0, а не с 1; либо коды DKtype не соответствуют карте функциональных клавиш производителя. |
Неверный порядок кодеков на телефоне. | Переменные %%[id].codecselected%% / %%[id].priority%% не сопоставлены, используется только %%codecN%%. |
Ссылка на веб-консоль в 3CX открывает не ту страницу. | Исправьте элемент <interfaceLink> в разделе header. |
Дальнейшие действия
После того как ваш шаблон начнет успешно выполнять автонастройку, рассмотрите следующие шаги:
- Опубликовать его через функцию Create Copy и поделиться с другими администраторами вашей организации.
- Отправить его в 3CX для добавления в качестве шаблона, поддерживаемого сообществом (community-supported).
- Добавить дополнительные записи <model> в этот же шаблон, если другие модели вашего производителя используют одинаковую схему конфигурации.
Дополнительная информация
- Подключение IP-телефонов
- IP Phone Provisioning Options
- Поддерживаемые IP-телефоны
- Создание пользовательских шаблонов телефонов с помощью ИИ
Контент применим к Версия: V20 U8 и выше - Редакция: AI, Pro, Basic - Развертывание: хостинг 3CX, локально, собственный хостинг
Версия документа
Последнее обновление документа 10 сентября 2026
https://www.3cx.ru/docs/custom-phone-template-configuration/
