Add Your Own Phone Brand: Custom Template Guide

3CX, desteklenen telefon üreticileri için yerleşik şablonlarla birlikte gelir. Markanız veya modeliniz bu listede yer almıyorsa, Özel Şablon oluşturarak destek ekleyebilirsiniz. Bu kılavuz, uyarlayabileceğiniz çalışır durumda bir örnek şablon kullanarak süreci adım adım açıklamaktadır.

Özel Bir Şablon Ne Yapar

Şablon, 3CX’e belirli bir telefon modeli için bir provizyon yapılandırmasını nasıl oluşturacağını belirten bir XML dosyasıdır. Bir telefon provizyona girdiğinde, 3CX:

  1. Cihaza atanan şablonu yükler.
  2. 3CX değişkenlerini (örn. %%extension_number%%) gerçek değerlerle değiştirir.
  3. Koşullu blokları değerlendirir (örn. {IF network=SBC}).
  4. Ortaya çıkan yapılandırma dosyasını, telefonun aldığı provizyon URL'sine yazar.

Örneği uyarlarken yapmanız gereken, üreticinizin yapılandırma sözdizimini, verileri sağlayan 3CX değişkenleriyle eşleştirmektir.

Ön Koşullar

  • 3CX’e yönetici erişimi (Yönetici > Gelişmiş > Şablonlar).
  • Üreticinizin provizyon belgeleri; özellikle SIP kimlik bilgileri, kodekler, BLF tuşları, NTP, saat dilimi, VLAN ve telefonunuzun sunduğu diğer tüm özelliklere ilişkin parametre adları; bazı üreticiler teknik belgelerini yalnızca talep üzerine sağlar; çevrimiçi kaynaklar için işte bazı pratik örnekler:
  • Telefonun User-Agent dizesi (cihazın SIP REGISTER komutunda veya cihaz PBX ile bağlantı kurduktan sonra 3CX telefon günlüklerinde görülebilir).
  • Telefonunuzun beklediği provizyon URL biçimi.

Prosedür

  • Yönetici > Gelişmiş > Şablonlar > Telefon Şablonları’na gidin.
  • Satıcınızın sözdizimine yakın bir şablon seçin ve Kopya Oluştur düğmesine tıklayın. Kopyaya markanızın adını verin (örn. phonetel-custom.ph).
  • Yeni şablonu açın ve içeriğini aşağıdaki Örnek Şablon ile değiştirin.
  • <header> bölümünü düzenleyin: şablon adını, model ua (User-Agent), logoyu, kodekleri ve özellikleri cihazınıza uyacak şekilde ayarlayın.
  • <deviceconfig> CDATA bölümünü düzenleyin. Her your_*_variable yer tutucusunu, üreticinizin gerçek parametre adıyla değiştirin. Sağ tarafta bulunan %%...%% 3CX değişkenlerini olduğu gibi bırakın — bunlar, provizyon sırasında değiştirilecektir.
  • Şablonu kaydedin.
  • 3CX'te bir telefon ekleyin ve model sorulduğunda özel şablonunuzu seçin.
  • 3CX tarafından sağlanan provizyon URL'sini telefona girin (manuel olarak veya DHCP seçeneği 66 / PNP yoluyla) ve provizyonu başlatın.

Şablon Yapısı

XML'de iki üst düzey bölüm bulunmaktadır.

Başlık Etiketi

<header> etiketi, şablonun meta verilerini ve 3CX’in bu telefon için gösterdiği kullanıcı arayüzü denetimlerini tanımlar:

Öğe

Amaç

<type>, <version>, <time>, <name>, <url>,<description>

Şablon türü, kimlik ve sürüm.

<templatetype>

Tercih edilen, desteklenen, üretici, özel’den biri.

<models>

Her cihaz değişkeni için bir <model>. ua, telefonun SIP User-Agent değeriyle eşleşir. canbesbc, dahili 3CX SBC’ye sahip telefonlar için uzaktan SBC yapılandırmasını etkinleştirir. defaultlogo, bir marka görseli dosya adını belirler. logowidth, logoheight, logobitdepth, logo dosyasının özelliklerini tanımlar; text öğesi ise modelin 3CX’te görünecek adını belirler.

<parsers>

Feature parsers — e.g. BLF enables busy-lamp-field key generation.

<rebootParams>, <resyncParams>, <firmwareParams>

SIP NOTIFY event names used to remotely reboot, resync config, or trigger firmware update.

<rps>

Set to 1 if the vendor supports a Redirection and Provisioning Service.

<hotdesking>

Set to 1 if the phone supports hot-desking.

<AllowedNetworkConfig>

Which network modes are valid: LOCALLAN, REMOTESTUN, SBC.

<interfaceLink>

The phone's web console login URL (shown in 3CX when the phone is registered).

<xfertype>

Blind vs. attended transfer values for DSS keys.

<languages>, <ringtones>, <queueringtones>, <dateformat>, <timeformat>, <powerled>, <backlight>, <screensaver>, <vlan>, <lldp>, <timezoneParams>

UI dropdowns. Each one can contain  <option> which defines what the admin sees and what variables are exposed when selected, and ultimately sent to the phone during provisioning.

<Codecspriorities>

Codec ordering. The first option in each <Codecspriority> is the default for that slot.

Template Example

Blf Türü ve Veri Etiketleri

  • <blftype> — her bir BLF işlevi (dahili hat izleme, hat tuşu, hızlı arama, kuyruk girişi, park etme, profil durumu) için tuş biçimlerini tanımlar. Bir yönetici, dahili hat kullanıcı arayüzünde BLF’leri atadığında 3CX bu biçimleri yineler.
  • <data><device> — <deviceconfig> CDATA bloğunu sarar. CDATA, 3CX değişkenlerinin gömülü olduğu üreticinizin literal yapılandırma sözdizimini içerir. Farklı modeller ve koşullar için farklı değişkenler sağlamak üzere 3CX tarafından ayrıştırılan IF ifadeleri içerebilir.

3CX Değişkenleri: Hızlı Referans

Bunlar, CDATA bölümü içinde kullanılan en yaygın değişkenlerdir. Değişkenler %%name%% biçiminde yazılır ve kaynak sağlama sırasında yerlerine ilgili değerler konulur.

Kimlik & Provizyon Alma

Değişken

Anlamı

%%mac_address%%

Telefon MAC’ı. Genellikle yapılandırma dosyası adında kullanılır.

%%PROVLINK%%

Telefonun kullanması gereken tam provizyon URL’si.

%%firmware%%

Şablonda belirtilen yazılım dosya adı.

%%PHONE_IP%%

Telefonun keşfedilen IP adresi.

%%PHONE_WEB_PASSWORD%%

Üretilen web yönetici şifresi. <interfaceLink> için

%%DESKPHONE_PASSWORD%%

Telefon tarafı şifre. <device> CDATA bölümü için

%%PROVLINK.HOST%%, %%PROVLINK.PATH%%, %%PROVLINK.PORT%%

Telefonunuzun belirli bir biçime ihtiyaç duyması durumunda, tam provizyon URL’sini manuel olarak oluşturmak için kullanılan bileşenler (FQDN, yol ve HTTP portu)

%%param::time_ntp_server%%

Network Time Protocol (NTP) server address for phones to use.

Dahili / SIP Hesabı

Değişken

Anlamı

%%extension_number%%

Dahili numarası.

%%extension_first_name%%, %%extension_last_name%%

Kullanıcı adı.

%%extension_auth_id%%, %%extension_auth_pw%%

SIP kimlik doğrulama kriterleri.

%%vm_number%%

Sesli mesaj erişim numarası.

Ağ

Değişken

Anlamı

%%pbx_ip%%

PBX iç IP (LAN modu).

%%param::pbxpublicip%%

PBX genel IP (SBC modu).

%%param::sipport%%

PBX SIP dinleme portu.

%%local_sbc_ip%%, %%local_sbc_port%%

Uzak telefonlar için SBC adresi.

%%phonesipport%%

Telefon yerel SIP portu (Eski model - STUN telefonları için kullanılır).

Başlık Tarafından Açığa Çıkarılan Seçenekler

<header> içinde tanımlanan <option> değerlerinden geliyor:

Değişken

Nereden

%%language%%

<languages>

%%datestyle%%, %%timestyle%%

<dateformat>, <timeformat>

%%defringtone%%

<ringtones>

%%queueringtone%%, %%queueringtonevalue%%, %%queueid%%

<queueringtones>

%%mwiled%%, %%missedled%%

<powerled>

%%blktime%%

<backlight>

%%scrsavertime%%

<screensaver>

%%vlanwanenabled%%, %%vlanwanportid%%, %%vlanwanportpriority%%

<vlan> (WAN port)

%%vlanpcenabled%%, %%vlanpcportid%%, %%vlanpcportpriority%%

<vlan> (PC port)

%%lldpenabled%%

<lldp>

%%param::time_timezone_yealink%%, %%TimeZoneName%%

<timezoneParams>

%%XFERmethod_Value%%

<xfertype>

%%logo%%

<model>deki defaultlogo

  • Yealink için şunu ayarlamalısınız: wallpaper_upload.url = %%PROVLINK%%/%%logo%%

ve

screensaver.upload_url= %%PROVLINK%%/%%logo%%

screensaver.type= 1

  • Fanvil için şuna ihtiyacınız var: <Auto_Etc_Url>%%PROVLINK%%/%%logo%%</Auto_Etc_Url>
  • Snom telefonlar için şuna ihtiyacınız var: <custom_bg_image_url perm="">%%PROVLINK%%/%%logo%%</custom_bg_image_url>

%%logo_filename%%

Yealink için şunu ayarlamalısınız
phone_setting.backgrounds = Config:%%logo_filename%%

Kodekler

Değişken

Anlamı

%%codec1%% … %%codec5%%

Her bir öncelik yuvasındaki kodek değeri.

%%payload1%% … %%payload5%%

Her yuva için yük türü.

%%[id].codecselected%%

1: Kodek etkinse (pcmuid, g729id, opusid vb.).

%%[id].priority%%

Kodek tarafından işgal edilen öncelik yuvası.

BLF / Fonksiyon Tuşları

{IF blfN} bloklarının içinde (burada N, anahtar dizininin indeksidir):

Değişken

Anlamı

%%Line%%

<blftype> tanımındaki satır numarası.

%%type%%

İzlenen dahili numara veya fonksiyon kodu.

%%PickupValue%%

Çağrı çekme hedefi.

%%DKtype%%

Fonksiyon tuşu türü kodu (<DKtype> içinde üreticiye özgü).

%%label%%

Ekran etiketi.

%%blfno%%

BLF ya da Hızlı Arama hedefinin dahili numarası.

%%param::pickup%%

3CX Telefon Sistemi yapılandırmasından alınan Çağrı Çekme kodu.

%%blffirstname%%, %%blflastname%%

BLF ekran etiketi için kullanılan dahilinin İsmi/Soyismi.

Koşullu Mantık

CDATA bölümü basit koşul ifadelerini destekler. 3CX, yapılandırmayı telefona göndermeden önce bunları değerlendirir.

Ağ Modu

Telefonun PBX’e nasıl bağlandığına bağlı olarak farklı bloklar yayın yapar:

{IF network=LOCALLAN}

  ...config for LAN-attached phones...

{ENDIF}

{IF network=SBC}

  ...config for remote phones using the SBC...

{ENDIF}

{IF network=REMOTESTUN}

  ...config for STUN-based remote phones...

{ENDIF}

BLF Yuvaları

Her BLF/işlev tuşunun kendine özgü bir koşulu vardır. Blok içinde, BLF bağlam değişkenleri (%%Line%%, %%type%%, %%label%% vb.) bu tuşa atıfta bulunur:

{IF blf1}

  linekey.1.type  = %%DKtype%%

  linekey.1.value = %%type%%

  linekey.1.label = %%label%%

{ELSE}

  linekey.1.type  = 0

{ENDIF}

lf2, blf3, … için bu işlemi, telefonunuzun desteklediği programlanabilir tuş sayısına kadar tekrarlayın.

Sistem Parametreleri

sysparam.NAME aracılığıyla herhangi bir 3CX parametresine başvurabilirsiniz:

{IF sysparam.CUSTOMIZE_QUEUE_RINGTONES=1}

  ...emit per-queue ringtone mappings...

{ELSE}

  ...emit a single default queue ringtone...

{ENDIF}

Test Etme ve Doğrulama

  • Şablonu kaydettikten sonra, bir test dahilisi ekleyin ve telefon modeli olarak özel şablonunuzu atayın.
  • Telefonu fabrika ayarlarına sıfırlayın (temiz bir test için önerilir).
  • Aşağıdakilerden birini kullanarak telefonu provizyon edin:
  • Manuel — telefonun provizyon URL’si alanına %%PROVLINK%% (dahilinin IP Telefon sekmesinde görülebilir) girin.
  • DHCP Seçeneği 66 — seçeneği PBX provizyon URL'sine yönlendirin.
  • PNP / RPS — üretici bunu destekliyorsa ve şablonunuzda <rps>1</rps> ayarlanmışsa.
  • 3CX Etkinlik Günlüğünü ve telefonun yerel günlüklerini izleyin. Cihazın yapılandırmayı aldığını ve başarıyla kaydolduğunu doğrulayın.
  • Eşleştirdiğiniz her özelliği doğrulayın: kodek sırası, BLF tuşları, zil sesleri, aktarım davranışı, VLAN.

Bir değer yanlış gelirse, oluşturulan yapılandırma dosyasını doğrudan inceleyin — 3CX bu dosyayı %%PROVLINK%%/<mac_address>.cfg adresinde (veya <deviceconfig filename="..."> içinde ayarladığınız dosya adı deseninde) sunar.

Bölümünüzle Saat Diliminizi Otomatik Ayarlama

3CX Global Saat Diliminiz veya özel Bölüm Saat Diliminiz, aşağıdaki örnek tabloda görüldüğü gibi her bölge adına karşılık gelen bir kimliğe sahiptir:

Kimlik

Açıklama

Bölge

121

-12:00 International Date Line West

-12:00

120

-11:00 Midway Island, Samoa

-11:00

1

-10:00 United States - Hawaii-Aleutian

-10:00

2

-10:00 United States - Alaska-Aleutian

-10:00

Şablonunuzun <timezoneParams> bölümünde kimlikler (ID’ler) bulunuyorsa, telefonlarınız “Küresel Saat Dilimini Kullan” adlı varsayılan seçeneği kullanabilir. Bu durumda saat dilimini sizin için otomatik olarak eşleştirir ve telefonlarınızı buna göre yapılandırırız; böylece her bir telefon için ayrı ayrı manuel olarak saat dilimi seçmeniz gerekmez.

Bir kimliği manuel olarak ayarlamanız gerekiyorsa, saat dilimi kimliklerinin tam listesini buradaki saat dilimi referans kılavuzunda bulabilirsiniz.

Örnek Şablon

Bu şablonu başlangıç noktası olarak özel şablonunuza kopyalayın; ardından değişken yer tutucularını (aşağıdaki şablon parçasında your_*_variable ve [Example_*] biçiminde görülen) cihazınızın ve üreticinizin gerçek parametreleri ve adlarıyla değiştirin.

Şablon Düzenleme İçin En İyi Uygulamalar:

  • Biçim: Ham .ph.xml veya düz metin düzenleyicileri kullanın. Veri bozulmasını önlemek için zengin metin (Word/Docs) formatından kaçının.
  • Yapı: <deviceconfig> CDATA bloğunun dışında girintiler dikkate alınmaz.
  • CDATA: CDATA bölümü içinde, üretici tarafından gerekli görülen sözdizimini (boşluklar/satır sonları) aynen koruyun.
  • Doğrulama: UTF-8 olarak kaydedin, XML'i doğrulayın ve test cihazında görüntülenen yapılandırmaları inceleyin.

<?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>

    <!-- Template Name -->

    <name>[Example_GreatPhone]</name>

    <url>https://www.3cx.com/sip-phones/</url>

    <templatetype>supported</templatetype>

    <!-- List the model user agent, SBC capability, logo filename/dimensions/bitdepth, and model name -->

    <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>

      <!-- The name "[Example_GreatPhone.png]" also defines the firmware foldername -->

    </models>

    <description>[Example_GreatPhone SIP Phones]</description>

...

    <languages>

    <!-- Options: Language drop-down entries -->

      <option value="English">

        <item name="your_language_variable">English</item>

      </option>

    </languages>

    <ringtones>

    <!-- Default Ringtone drop-down entries -->

      <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[

<!-- The below example section will contain all of your own vendor syntax, replacing 3CX variables with what you define above -->

your_provisioning_url_variable = %%PROVLINK%%

your_firmware_url_variable = %%PROVLINK%%/firmware/[Example_GreatPhone]/%%firmware%%

your_ntp_server_variable = %%param::time_ntp_server%%

...

<!-- Your own vendor syntax ends here -->

]]></deviceconfig>

    </device>

  </data>

</doc>

Sorun Giderme

Semptom

Muhtemel Sebep

Telefon yapılandırmayı hiçbir zaman almıyor.

Yanlış provizyon URL’si ya da HHTP/HTTPS uyumsuzluğuch. Kontrol edin:  <AllowSSLProvisioning>.

Yapılandırma alındı, ancak telefon kayıt olamıyor.

network=LOCALLAN bloğu eksik ya da yanlış SIP port değişkeni.

Uzak telefon kayıt oluyor ancak ses gelmiyor.

network=SBC bloğunda your_proxy_* satırları eksik ya da SBC portları kapalı.

BLF tuşları provizyondan sonra boş kalıyor.

Üretici tuş indekslemesi 0 tabanlıdır, 1 tabanlı değildir; ya da DKtype kodları, üreticinin fonksiyon tuşu eşlemesiyle uyuşmamaktadır.

Telefonda kodek sıralaması yanlış.

%%[id].codecselected%% / %%[id].priority%% eşleşmemiştir, sadece %%codecN%% kullanılmıştır.

3CX’teki web konsol adresi yanlış sayfa açıyor.

Başlıktaki <interfaceLink> desenini tamir edin..

Sonraki Adımlar

Şablonunuz temiz bir şekilde provizyon aldığında şunları göz önünde bulundurun:

  • Kopya Oluştur aracılığıyla yayınlayıp kuruluşunuzdaki diğer yöneticilerle paylaşmak.
  • Topluluk tarafından desteklenen bir şablon olarak eklenmesi için 3CX’e göndermek.
  • Üreticinizin modelleri aynı yapılandırma şemasını paylaşıyorsa, aynı şablona ek <model> girişleri eklemek.

Ayrıca Bakınız

İçerik şu sürümler için geçerlidir: V20 U8 ve sonrası - Sürüm: AI, Pro, Basic - Kurulum: 3CX tarafından Barındırılan, Şirket İçinde, Kendi Barındırılan

Son Güncelleme
Bu belge en son 14 Eylül 2026’da güncellendi.
https://www.3cx.com/docs/custom-phone-template-configuration/