مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
آموزشی

چرا دفترچه تلفن یالینک همگام‌سازی نمی‌شود؟ رفع مشکل LDAP و دفترچه تلفن راه‌دور

اگر دفترچه تلفن Yealink خالی است، مخاطبان جدید نمایش داده نمی‌شوند، Remote Phone Book روی نسخه قدیمی باقی مانده، LDAP هیچ نتیجه‌ای برنمی‌گرداند یا نام‌های فارسی به‌هم‌ریخته دیده می‌شوند، قبل از تغییر Firmware باید…

چرا دفترچه تلفن یالینک همگام‌سازی نمی‌شود؟ رفع مشکل LDAP و دفترچه تلفن راه‌دور
خلاصه سریع این آموزش

اگر دفترچه تلفن Yealink خالی است، مخاطبان جدید نمایش داده نمی‌شوند، Remote Phone Book روی نسخه قدیمی باقی مانده، LDAP هیچ نتیجه‌ای برنمی‌گرداند یا نام‌های فارسی به‌هم‌ریخته دیده می‌شوند، قبل…

۲۱ دقیقه مطالعه ۰ دیدگاه ۲۱ مهر ۱۴۰۵ آخرین به‌روزرسانی
اگر دفترچه تلفن Yealink خالی است، مخاطبان جدید نمایش داده نمی‌شوند، Remote Phone Book روی نسخه قدیمی باقی مانده، LDAP هیچ نتیجه‌ای برنمی‌گرداند یا نام‌های فارسی به‌هم‌ریخته دیده می‌شوند، قبل از تغییر Firmware باید مشخص کنید تلفن از کدام نوع Directory استفاده می‌کند.

Remote Phone Book مبتنی بر XML با LDAP یک روش نیست. در Remote Phone Book تلفن معمولاً یک فایل XML را از Web Server دانلود و داخل Cache نگه می‌دارد؛ اما در LDAP تلفن هنگام جست‌وجو یا تطبیق تماس، Query را به LDAP Server می‌فرستد. بنابراین علت خرابی این دو نیز متفاوت است.

در این آموزش ابتدا URL، شبکه و Authentication را بررسی می‌کنیم؛ بعد ساختار XML، Cache و Refresh، نام‌های فارسی و Encoding را تست می‌کنیم. سپس سراغ LDAP می‌رویم و Base DN، Bind User، Name Filter، Number Filter، Attributeها، TLS، LDAPS و تطبیق شماره تماس‌گیرنده را مرحله‌به‌مرحله بررسی می‌کنیم.

فهرست مطالب

اول مشخص کنید از Remote Phone Book استفاده می‌کنید یا LDAP

تفاوت Remote Phone Book و LDAP در Yealink
ویژگی Remote Phone Book LDAP
منبع اطلاعات فایل XML روی Web Server LDAP Directory Server
نوع دسترسی HTTP/HTTPS Download LDAP / StartTLS / LDAPS
روش به‌روزرسانی Cache و Refresh Query هنگام Search/Lookup
احراز هویت Username/Password برای URL Bind DN و Password
ساختار داده XML Schema مورد انتظار Yealink DN، Attribute و LDAP Filter
خرابی رایج URL، Auth، Cache، XML Format Base DN، Filter، Attribute، TLS

یک اشتباه رایج: Remote Phone Book قرار نیست لحظه‌ای Sync شود

Yealink در مستندات فعلی صریحاً توضیح می‌دهد Remote Phone Book به‌صورت Real-time با Server همگام نیست.

یعنی اگر فایل XML روی Server را تغییر دهید، ممکن است تلفن همچنان نسخه Cache شده قبلی را نمایش دهد.

پارامتر Refresh:

features.remote_phonebook.flash_time = 21600

مقدار 21600 ثانیه برابر ۶ ساعت است و در مستندات فعلی Yealink مقدار پیش‌فرض محسوب می‌شود.

برای تست، Refresh را کوتاه‌تر کنید

برای محیط آزمایشی می‌توانید مثلاً Refresh را روی یک ساعت قرار دهید:

features.remote_phonebook.flash_time = 3600

اگر مقدار صفر باشد، Refresh خودکار Cache غیرفعال می‌شود.

Refresh هنگام بازکردن دفترچه تلفن

در مدل‌های پشتیبانی‌شده Yealink پارامتر زیر نیز وجود دارد:

features.remote_phonebook.enter_update_enable = 1

این گزینه باعث می‌شود هنگام ورود کاربر به Remote Phone Book، تلفن Cache را Refresh کند.

در مدل‌هایی که این گزینه وجود ندارد، از دکمه Update، Web UI یا Restart برای تست استفاده کنید.

مرحله اول: URL دفترچه تلفن را از خود شبکه تست کنید

قبل از بررسی XML، مطمئن شوید URL واقعاً در دسترس است.

نمونه:

https://pbx.example.com/phonebook/Menu.xml

همین URL را از سیستمی داخل VLAN تلفن‌ها باز کنید.

مهم است که تست از همان مسیر شبکه‌ای باشد که Yealink استفاده می‌کند؛ سالم‌بودن URL روی لپ‌تاپی در یک VLAN دیگر، سالم‌بودن Route و Firewall تلفن را ثابت نمی‌کند.

DNS را جداگانه بررسی کنید

اگر URL با Domain تعریف شده است، ابتدا Resolve شدن آن را تست کنید.

nslookup pbx.example.com

اگر با IP کار می‌کند ولی با Domain نه، Remote Phone Book یا LDAP مشکل اصلی نیست؛ DNS تلفن یا VLAN را بررسی کنید.

از خود Yealink Ping بگیرید

در بسیاری از مدل‌ها از Web UI به بخش:

Network → Diagnostics

بروید و IP Server را Ping کنید.

اگر Ping نیز شکست می‌خورد، ابتدا Gateway، VLAN، DNS، ACL و Firewall را بررسی کنید.

مرحله دوم: Remote Phone Book را در Web UI بررسی کنید

در بسیاری از مدل‌های فعلی مسیر:

Directory → Remote Phone Book

است.

پارامترهای اصلی عبارت‌اند از:

remote_phonebook.data.1.url
remote_phonebook.data.1.name
remote_phonebook.data.1.username
remote_phonebook.data.1.password

نمونه Configuration ساده Remote Phone Book

remote_phonebook.data.1.url = https://pbx.example.com/phonebook/Menu.xml
remote_phonebook.data.1.name = Company Directory
remote_phonebook.data.1.username = yealink-phonebook
remote_phonebook.data.1.password = StrongPassword
features.remote_phonebook.flash_time = 3600

نام کاربری و رمز بالا فقط نمونه هستند.

اگر Server احراز هویت می‌خواهد

Yealink Username و Password مجزایی برای Remote Phone Book دارد.

اگر این اطلاعات اشتباه باشند، در Diagnostic ممکن است خطای Authentication دیده شود.

کد خطای مستندشده Yealink:

0x0009000001060003
Auth Error

Credential را داخل URL بگذاریم؟

مستند Yealink امکان قراردادن Username و Password داخل URL را هم ذکر می‌کند:

http://user:password@server.example.com/RemotePhonebook.xml

اما برای محیط Production بهتر است در صورت پشتیبانی از فیلدهای اختصاصی Username و Password استفاده کنید؛ چون Credential داخل URL ممکن است در Log، History یا Configuration Export دیده شود.

اگر URL باز می‌شود ولی Yealink خطای Format می‌دهد

Yealink برای XML نامعتبر خطای مشخصی دارد:

0x0009000001060001
Download file format error

این یعنی HTTP ممکن است 200 OK باشد، اما محتوای فایل مطابق Schema مورد انتظار تلفن نیست.

یک XML ساده و سالم برای تست بسازید

برای اینکه Server و Phone را از فایل اصلی جدا کنید، ابتدا یک Phonebook بسیار کوچک بسازید:

<?xml version="1.0" encoding="UTF-8"?>
<YealinkIPPhoneDirectory>
    <DirectoryEntry>
        <Name>پشتیبانی ایرانیکاسرور</Name>
        <Telephone>02191302467</Telephone>
    </DirectoryEntry>
    <DirectoryEntry>
        <Name>فروش</Name>
        <Telephone>200</Telephone>
    </DirectoryEntry>
</YealinkIPPhoneDirectory>

اگر این فایل کوچک درست نمایش داده شد ولی فایل Production نه، مسیر شبکه و Authentication سالم‌اند و باید ساختار یا حجم XML اصلی را بررسی کنید.

Remote Phone Book چند سطحی چگونه ساخته می‌شود؟

Yealink برای Remote Phone Book ساختار Menu.xml و Department.xml را مستند کرده است.

Menu.xml گروه‌ها را تعریف می‌کند و Department.xml مخاطبان هر گروه را نگه می‌دارد.

نمونه Menu:

<MenuItem>
    <Name>پشتیبانی</Name>
    <URL>https://pbx.example.com/phonebook/support.xml</URL>
</MenuItem>

<MenuItem>
    <Name>فروش</Name>
    <URL>https://pbx.example.com/phonebook/sales.xml</URL>
</MenuItem>

نمونه Department.xml

<YealinkIPPhoneDirectory>
    <DirectoryEntry>
        <Name>واحد فنی</Name>
        <Telephone label="داخلی">201</Telephone>
        <Telephone label="موبایل">09120000000</Telephone>
    </DirectoryEntry>
</YealinkIPPhoneDirectory>

اگر فقط بعضی مخاطبان نمایش داده نمی‌شوند

XML را برای Tag ناقص، کاراکتر رزروشده یا Closing Tag جاافتاده بررسی کنید.

برای مثال استفاده مستقیم از علامت ampersand داخل XML می‌تواند فایل را نامعتبر کند.

این اشتباه است:

<Name>فروش & پشتیبانی</Name>

در XML باید Escape شود:

<Name>فروش &amp; پشتیبانی</Name>

نام‌های فارسی خراب نمایش داده می‌شوند؛ مشکل کجاست؟

اگر حروف فارسی به شکل علامت سؤال، کاراکترهای عجیب یا متن خراب ظاهر می‌شوند، Encoding فایل و HTTP Response را بررسی کنید.

برای فایل‌های فارسی، یک روش مطمئن این است که فایل واقعاً با UTF-8 ذخیره شود و Declaration نیز همان Encoding را اعلام کند:

<?xml version="1.0" encoding="UTF-8"?>

فقط نوشتن UTF-8 در Header کافی نیست؛ Byteهای خود فایل نیز باید UTF-8 باشند.

Content-Type سرور را هم بررسی کنید

برای جلوگیری از اختلاف تفسیر Encoding بهتر است Web Server پاسخ XML را با Charset هماهنگ برگرداند.

نمونه مناسب:

Content-Type: application/xml; charset=UTF-8

اگر فایل UTF-8 است ولی Web Server آن را با Charset دیگری معرفی می‌کند، نمایش فارسی می‌تواند غیرقابل پیش‌بینی شود.

حجم فایل Remote Phone Book را بررسی کنید

در مستندات فعلی Yealink برای بسیاری از تلفن‌های رنگی، فایل Remote Phone Book باید کمتر از حدود 1.5MB باشد.

در بعضی تلفن‌های قدیمی با نمایشگر سیاه‌وسفید محدودیت پایین‌تر و در حدود 768KB ذکر شده است.

Yealink همچنین توصیه می‌کند تعداد Remote Contactها را در حد معقول نگه دارید و در بسیاری از مستندات مقدار کمتر از 5000 مخاطب پیشنهاد شده است.

اگر Phonebook کوچک کار می‌کند ولی فایل بزرگ نه، حجم و تعداد مخاطب را بررسی کنید.

کد خطای حجم بیش از حد

0x0009000001060002
Download limit exceeded

اگر Yealink می‌گوید Network Unavailable

در Remote/XML Phonebook این پیام همیشه به معنی قطع کامل اینترنت نیست.

موارد زیر می‌توانند همین علامت را ایجاد کنند:

دلایل رایج Network Unavailable
علت بررسی
DNS Domain Resolve نمی‌شود
Routing Phone به Server Route ندارد
Firewall HTTP/HTTPS مسدود است
Certificate HTTPS Trust شکست می‌خورد
URL Path یا Port اشتباه است
Authentication Server درخواست دسترسی را رد می‌کند

مرحله سوم: HTTP کار می‌کند ولی HTTPS نه

این تست محل مشکل را سریع محدود می‌کند.

اگر همان Phonebook با HTTP دانلود می‌شود اما HTTPS شکست می‌خورد، XML Schema و Credential تا حد زیادی از فهرست مظنون‌ها خارج می‌شوند.

حالا Certificate، TLS Version، Cipher و Timeout را بررسی کنید.

Certificate را روی تلفن بررسی کنید

Yealink در راهنمای عیب‌یابی فعلی اعلام می‌کند برای HTTPS باید Certificate موردنیاز روی تلفن شناخته شود.

اگر Server از CA خصوصی استفاده می‌کند، CA Certificate مناسب را روی Yealink وارد کنید.

غیرفعال‌کردن Certificate Verification ممکن است برای تست موقت مفید باشد، اما راه‌حل دائمی امن نیست. پس از تشخیص، Trust صحیح را برقرار و Verification را دوباره فعال کنید.

TLS Version نیز ممکن است مشکل ایجاد کند

اگر HTTP سالم و HTTPS خراب است و Certificate نیز صحیح است، TLS Version و Encryption Algorithm را بررسی کنید.

Server بسیار قدیمی یا بسیار محدودشده ممکن است با Firmware تلفن روی نسخه یا Cipher مشترک توافق نکند.

به‌جای پایین‌آوردن دائمی امنیت Server، Firmware تلفن و TLS Policy هر دو سمت را بررسی کنید.

مرحله چهارم: Auto Provisioning تنظیم Phonebook را بازنویسی نمی‌کند؟

اگر URL را در Web UI اصلاح می‌کنید و کار می‌کند اما بعد از Reboot دوباره خراب می‌شود، Configuration مرکزی را بررسی کنید.

ممکن است Common CFG یا MAC CFG دوباره URL قبلی را Push کند:

remote_phonebook.data.1.url = https://old.example.com/phonebook.xml

در این حالت Source of Truth را در Provisioning اصلاح کنید، نه فقط خود تلفن را.

اگر تنظیمات بعد از Reboot برمی‌گردند، راهنمای رفع مشکل Auto Provisioning در Yealink نیز برای ادامه بررسی مناسب است.

حالا برویم سراغ LDAP

LDAP برخلاف Remote Phone Book فایل XML را دانلود نمی‌کند. تلفن به LDAP Server وصل می‌شود و بر اساس Filter و Base DN جست‌وجو انجام می‌دهد.

پس اگر LDAP خالی است باید پنج چیز را جداگانه بررسی کنید:

اتصال شبکه،

Bind Authentication،

Base DN،

Search Filter،

و Attribute Mapping.

مسیر تنظیم LDAP در Yealink

در بسیاری از تلفن‌های فعلی:

Directory → LDAP

را باز کنید و LDAP را Enable کنید.

پارامترهای اصلی:

ldap.enable
ldap.host
ldap.port
ldap.base
ldap.user
ldap.password
ldap.name_filter
ldap.number_filter
ldap.name_attr
ldap.numb_attr
ldap.display_name
ldap.version

نمونه LDAP برای OpenLDAP

ldap.enable = 1
ldap.host = ldap.example.local
ldap.port = 389
ldap.base = ou=People,dc=example,dc=local
ldap.user = cn=yealink-reader,ou=Service,dc=example,dc=local
ldap.password = StrongPassword
ldap.name_filter = (|(cn=%)(sn=%))
ldap.number_filter = (|(telephoneNumber=%)(mobile=%)(ipPhone=%))
ldap.name_attr = cn sn
ldap.numb_attr = mobile telephoneNumber ipPhone
ldap.display_name = %cn
ldap.version = 3

DNها و Attributeهای بالا نمونه هستند و باید با Schema واقعی LDAP شما تطبیق داده شوند.

Base DN چیست؟

Base DN نقطه‌ای از Directory Tree است که Yealink جست‌وجو را از آنجا شروع می‌کند.

فرض کنید ساختار شما چنین است:

dc=example,dc=local
└── ou=People
    ├── cn=Ali
    ├── cn=Reza
    └── cn=Support

Base مناسب می‌تواند این باشد:

ou=People,dc=example,dc=local

اگر Base اشتباه باشد، Bind ممکن است موفق شود اما Search هیچ Contactی برنگرداند.

Bind User را با Base DN اشتباه نگیرید

LDAP User برای Login است، در حالی که Base مشخص می‌کند Search از کجا شروع شود.

نمونه Bind User:

cn=yealink-reader,ou=Service,dc=example,dc=local

بهتر است برای تلفن‌ها یک Account فقط خواندنی با دسترسی محدود به Attributeهای لازم بسازید و از Administrator اصلی LDAP استفاده نکنید.

مرحله پنجم: Filter اشتباه یکی از رایج‌ترین علت‌های LDAP خالی است

Yealink برای جست‌وجوی نام مثال زیر را مستند کرده است:

(|(cn=%)(sn=%))

در این Syntax علامت `%` عبارت واردشده توسط کاربر را نمایندگی می‌کند.

Number Filter

برای شماره:

(|(telephoneNumber=%)(mobile=%)(ipPhone=%))

اما اگر LDAP Server شما Attribute `ipPhone` ندارد، وجود آن الزاماً مشکل نیست؛ مهم این است که Attributeهایی که واقعاً استفاده می‌کنید درست نام‌گذاری شده باشند.

چرا Filter سالم به نظر می‌رسد ولی نتیجه صفر است؟

ممکن است در Directory شما شماره داخل `telephoneNumber` نباشد.

مثلاً سازمان از Attribute سفارشی زیر استفاده کند:

extensionNumber

در این حالت باید Filter و Number Attribute با Schema واقعی خودتان هماهنگ شوند.

Name Attribute و Display Name را بررسی کنید

فقط پیدا شدن Object کافی نیست؛ Yealink باید بداند کدام Attribute را به‌عنوان نام نمایش دهد.

نمونه:

ldap.name_attr = cn sn
ldap.display_name = %cn

اگر Server فقط `displayName` دارد ولی شما `%cn` درخواست می‌کنید، نتیجه نمایش ممکن است ناقص یا خالی باشد.

LDAP روی Active Directory

در Active Directory معمولاً Base به شکل Domain DN تعریف می‌شود:

DC=corp,DC=example,DC=com

و اگر فقط کاربران یک OU باید دیده شوند:

OU=Users,DC=corp,DC=example,DC=com

ساختار واقعی را از Administrator همان Directory دریافت کنید؛ DN را از روی نام Domain حدس نزنید.

مرحله ششم: LDAP Lookup تماس ورودی و خروجی را فعال کنید

ممکن است Search دستی LDAP کاملاً کار کند اما هنگام تماس نام مخاطب نمایش داده نشود.

در این حالت دو پارامتر مهم هستند:

ldap.call_in_lookup = 1
ldap.call_out_lookup = 1

اولی Lookup تماس ورودی و دومی Lookup تماس خروجی را فعال می‌کند.

Search دستی کار می‌کند ولی تماس ورودی Match نمی‌شود

در این وضعیت معمولاً Connection و Bind سالم‌اند.

حالا فرمت شماره را مقایسه کنید.

LDAP ممکن است این شماره را ذخیره کرده باشد:

09121234567

ولی PBX در تماس ورودی این را ارسال کند:

+989121234567

در این حالت LDAP سالم است اما Number Matching شکست می‌خورد.

Caller ID و LDAP به هم وابسته‌اند

اگر شماره ورودی روی Yealink اشتباه باشد، Directory Lookup نیز ممکن است مخاطب اشتباه یا هیچ مخاطبی را پیدا نکند.

پس اگر Search دستی با نام کار می‌کند ولی Incoming Lookup نه، SIP Caller ID و فرمت شماره را نیز بررسی کنید.

مرحله هفتم: LDAP روی 389 کار می‌کند ولی LDAPS نه

این یکی از تشخیصی‌ترین تست‌هاست.

اگر Plain LDAP سالم است اما LDAPS شکست می‌خورد، Base DN و Filter احتمالاً مشکل اصلی نیستند.

حالا Certificate، TLS و Port را بررسی کنید.

حالت‌های TLS در Yealink LDAP

LDAP TLS Mode در Yealink
مقدار حالت پورت رایج
0 LDAP بدون رمزگذاری 389
1 LDAP StartTLS 389
2 LDAPS 636

پارامتر:

ldap.tls_mode = 2

LDAPS و CA Certificate

Yealink برای خطاهای LDAPS صریحاً یکی از علت‌ها را شناسایی‌نشدن CA Certificate صحیح اعلام می‌کند.

اگر Server Certificate با CA خصوصی امضا شده، Root یا Intermediate CA موردنیاز باید در Trust Store تلفن وجود داشته باشد.

Certificate را روی همه تلفن‌ها با Provisioning مرکزی Push کنید تا بعد از Factory Reset دوباره مشکل برنگردد.

Domain Name در LDAPS مهم است

اگر Certificate برای:

ldap.example.com

صادر شده اما تلفن با IP زیر وصل شود:

192.168.10.20

بسته به Validation ممکن است Name Match شکست بخورد. بهتر است DNS و Certificate Name مطابق طراحی صحیح استفاده شوند.

Yealink برای LDAPS خطاهای TLS جداگانه دارد

در مستندات فعلی، Failure در TLS Algorithm Negotiation و TLS Protocol Version به‌عنوان خطاهای مستقل ذکر شده‌اند.

پس اگر CA درست است ولی هنوز Handshake شکست می‌خورد، TLS Policy سرور و Firmware Phone را مقایسه کنید.

در Production به‌جای پایین‌آوردن کورکورانه Security Level، علت عدم توافق را پیدا کنید.

تست LDAPS از یک سیستم مدیریتی

روی Linux می‌توانید Certificate و Handshake را جداگانه مشاهده کنید:

openssl s_client -connect ldap.example.com:636 -servername ldap.example.com

این تست رفتار دقیق Yealink را شبیه‌سازی نمی‌کند، اما Certificate Chain، Expiry و TLS Handshake سرور را قابل مشاهده می‌کند.

LDAP را خارج از Yealink هم تست کنید

برای اینکه مشخص شود Filter و Credential واقعاً صحیح‌اند، همان Query را با ابزار LDAP اجرا کنید.

نمونه Linux:

ldapsearch \
-H ldap://ldap.example.local:389 \
-D "cn=yealink-reader,ou=Service,dc=example,dc=local" \
-W \
-b "ou=People,dc=example,dc=local" \
"(|(cn=Ali)(sn=Ali))" \
cn sn telephoneNumber mobile

اگر همین Query بیرون از Phone نیز نتیجه ندارد، تغییر Firmware تلفن کمکی نمی‌کند.

برای LDAPS

ldapsearch \
-H ldaps://ldap.example.com:636 \
-D "cn=yealink-reader,ou=Service,dc=example,dc=local" \
-W \
-b "ou=People,dc=example,dc=local" \
"(cn=Ali)"

نام‌های فارسی در LDAP

اگر Search انگلیسی کار می‌کند اما نام فارسی نتیجه نمی‌دهد، ابتدا بررسی کنید خود LDAP Record واقعاً Unicode صحیح ذخیره کرده است.

مثلاً مقدار `cn` را با ldapsearch ببینید.

اگر خروجی Server صحیح است ولی Yealink نمایش خراب دارد، Firmware و Charset مسیر را بررسی کنید. در LDAP مدرن رشته‌ها به‌صورت UTF-8 منتقل می‌شوند، بنابراین تبدیل دستی فارسی به ANSI یا Windows-1256 راه‌حل مناسبی نیست.

اگر فارسی فقط در Remote XML خراب است ولی LDAP سالم است

این نشانه بسیار خوبی است.

نمایش Font و خود Phone احتمالاً فارسی را پشتیبانی می‌کنند و مشکل بیشتر در Encoding فایل XML یا HTTP Response قرار دارد.

فایل را با UTF-8 واقعی دوباره ذخیره کنید و Declaration/Content-Type را هماهنگ کنید.

اگر فارسی در هر دو روش خراب است

Firmware، Language Pack و مدل Phone را بررسی کنید.

همچنین یک نام فارسی بسیار ساده بدون نیم‌فاصله، Emoji یا کاراکترهای خاص تست کنید تا مشخص شود مشکل مربوط به Unicode عمومی است یا فقط چند کاراکتر خاص.

مرحله هشتم: Timeout و تعداد Resultها

LDAP Server ممکن است سالم باشد اما Query بسیار سنگین باعث Timeout شود.

Base DN را تا جای ممکن محدود کنید و Filterهایی بنویسید که فقط Objectهای موردنیاز را جست‌وجو کنند.

همچنین Max Hits را بی‌دلیل بسیار بزرگ نکنید.

مقدار پیش‌فرض بسیاری از تنظیمات فعلی Yealink برای Max Hits برابر 50 است و برای دفترچه تلفن سازمانی معمولاً شروع مناسبی است.

Filter خیلی باز می‌تواند مشکل‌ساز شود

این Query:

(objectClass=*)

می‌تواند هزاران Object بی‌ربط شامل Computer، Group و Service Account را برگرداند.

برای Phonebook بهتر است Filter را مطابق Schema Directory محدود کنید.

نمونه Filter محدودتر برای Active Directory

(&(objectCategory=person)(objectClass=user)(|(cn=%)(displayName=%)))

این فقط یک نمونه است و باید با ساختار واقعی Active Directory شما تست شود.

مرحله نهم: چرا شماره‌ها با Label اشتباه نمایش داده می‌شوند؟

در LDAP ممکن است یک Contact چند شماره داشته باشد:

telephoneNumber: 201
mobile: 09121234567
homePhone: 02112345678

اگر `ldap.numb_attr` با ترتیب موردنظر شما هماهنگ نباشد، Yealink ممکن است شماره‌ای را زیر Label دیگری نشان دهد.

Attribute Mapping را بر اساس Server خود تنظیم کنید.

مرحله دهم: W70/W80/W90 را جداگانه بررسی کنید

در سیستم‌های DECT، Phonebook فقط مسئله خود Handset نیست.

W70B و DECT Managerهای W80/W90 می‌توانند Remote Phone Book و LDAP را از سطح Base/Manager مدیریت کنند.

در W70B حتی Remote Phone Book Assignment برای Handsetهای مختلف وجود دارد.

بنابراین ممکن است Phonebook روی Base تعریف شده باشد اما Handset موردنظر اجازه دسترسی به آن را نداشته باشد.

Remote Phonebook Assignment در W70B

در مدل‌های پشتیبانی‌شده:

remote_phonebook.assignment.enable = 1
handset.1.remote_phonebook_access = 1,2

اگر Assignment فعال باشد ولی Handset به Phonebook موردنظر اختصاص داده نشده باشد، کاربر آن دفترچه را نمی‌بیند.

سناریوی اول: فایل XML روی کامپیوتر باز می‌شود ولی Yealink خالی است

Schema XML، Root Element و Tagها را بررسی کنید.

یک فایل دو Contactی ساده بسازید.

اگر فایل ساده کار کرد، Data اصلی یا حجم فایل مشکل دارد.

سناریوی دوم: Phonebook روی نسخه قدیمی مانده است

این احتمالاً Cache است.

Manual Update انجام دهید یا Flash Time را بررسی کنید.

اگر بعد از Update همچنان نسخه قبلی دیده می‌شود، HTTP Cache Header یا Reverse Proxy را نیز بررسی کنید.

سناریوی سوم: HTTP کار می‌کند ولی HTTPS نه

Certificate Chain، CA روی Yealink، TLS Version و Cipherها را بررسی کنید.

غیرفعال‌کردن Certificate Verification فقط برای تشخیص موقت انجام شود.

سناریوی چهارم: Remote Phone Book خطای Auth دارد

Username و Password را دوباره وارد کنید.

با همان Credential از Client دیگری URL را تست کنید.

اگر از Reverse Proxy استفاده می‌کنید، بررسی کنید Authentication Header به Backend منتقل می‌شود.

سناریوی پنجم: فقط نام‌های فارسی خراب‌اند

XML را UTF-8 واقعی ذخیره کنید.

Declaration را روی UTF-8 قرار دهید.

HTTP Charset را بررسی کنید.

یک فایل کوچک فقط با یک نام فارسی تست کنید.

سناریوی ششم: LDAP هیچ نتیجه‌ای ندارد

اول Bind را خارج از Phone با ldapsearch تست کنید.

بعد Base DN و Name Filter را بررسی کنید.

اگر Bind موفق ولی Search صفر است، معمولاً Base یا Filter اشتباه است.

سناریوی هفتم: LDAP با IP کار می‌کند ولی Domain نه

DNS را بررسی کنید.

در LDAPS بهتر است مشکل DNS را حل کنید و به IP دائمی برنگردید؛ چون Certificate معمولاً برای Hostname صادر شده است.

سناریوی هشتم: LDAP روی 389 کار می‌کند ولی 636 نه

CA Certificate، Server Certificate، TLS Version و Algorithm Negotiation را بررسی کنید.

این نتیجه نشان می‌دهد Credential، Base و Filter احتمالاً صحیح‌اند.

سناریوی نهم: Search LDAP کار می‌کند ولی Caller Name نمایش داده نمی‌شود

`ldap.call_in_lookup` را بررسی کنید.

بعد فرمت شماره داخل SIP و LDAP را مقایسه کنید.

+98، 98 و 0 می‌توانند Matching را خراب کنند.

سناریوی دهم: تنظیمات بعد از Reboot برمی‌گردند

Auto Provisioning یا PBX Device Template را بررسی کنید.

اگر Configuration مرکزی دارید، تمام اصلاحات Phonebook و LDAP باید در همان Source of Truth اعمال شوند.

چک‌لیست سریع Remote Phone Book

عیب‌یابی XML را به ترتیب انجام دهید
مرحله بررسی نتیجه مطلوب
۱ DNS/IP Server قابل دسترس
۲ URL فایل با HTTP 200 باز شود
۳ Authentication Credential پذیرفته شود
۴ XML Schema YealinkIPPhoneDirectory معتبر
۵ Encoding UTF-8 هماهنگ
۶ File Size داخل محدودیت مدل
۷ HTTPS Certificate مورد اعتماد
۸ Refresh Cache به‌روز شود
۹ Provisioning URL بعد از Reboot ثابت بماند

چک‌لیست سریع LDAP

LDAP را لایه‌به‌لایه بررسی کنید
مرحله بررسی نتیجه مطلوب
۱ Host/DNS Server Resolve و Reach شود
۲ Port 389 یا 636 مطابق Mode
۳ Bind Username/Password معتبر
۴ Base DN Search از شاخه صحیح
۵ Name Filter نتیجه با نام برگردد
۶ Number Filter شماره پیدا شود
۷ Attributes Name/Number صحیح نمایش داده شود
۸ Incoming Lookup نام تماس‌گیرنده Match شود
۹ TLS/CA Handshake بدون خطا
۱۰ Number Format +98/0 با Directory هماهنگ باشد

پرسش‌های متداول درباره Remote Phone Book و LDAP در Yealink

چرا Remote Phone Book یالینک بعد از تغییر فایل به‌روز نمی‌شود؟

Remote Phone Book به‌صورت Real-time Sync نمی‌شود و از Cache استفاده می‌کند. Refresh دستی، Restart، Update داخل Phone یا تنظیم features.remote_phonebook.flash_time را بررسی کنید.

چرا Yealink فایل XML را دانلود نمی‌کند؟

URL، DNS، Firewall، Authentication، HTTPS Certificate و ساختار XML را بررسی کنید. Yealink برای Format Error، Auth Error و Network Unavailable خطاهای جداگانه دارد.

ساختار XML دفترچه تلفن Yealink چگونه است؟

برای Contactهای ساده می‌توان از YealinkIPPhoneDirectory و DirectoryEntry شامل Name و Telephone استفاده کرد. برای ساختار گروهی نیز Menu.xml و Department.xml پشتیبانی می‌شوند.

چرا نام فارسی در Remote Phone Book خراب است؟

فایل را با UTF-8 واقعی ذخیره کنید، XML Declaration را با Encoding فایل هماهنگ کنید و HTTP Content-Type/Charset را بررسی کنید.

چرا LDAP Yealink هیچ نتیجه‌ای پیدا نمی‌کند؟

Bind Credential، Base DN، Name Filter، Number Filter و Attributeها را بررسی کنید. اگر Bind موفق باشد ولی Search صفر برگرداند، Base یا Filter از مظنون‌های اصلی هستند.

پورت LDAP در Yealink چیست؟

LDAP معمولی و StartTLS معمولاً روی پورت 389 استفاده می‌شوند و LDAPS معمولاً روی پورت 636 قرار دارد.

چرا LDAP روی 389 کار می‌کند ولی LDAPS روی 636 نه؟

CA Certificate، Certificate Chain، TLS Version و Algorithm Negotiation را بررسی کنید. Yealink این خطاها را برای LDAPS به‌صورت جداگانه مستند کرده است.

چرا Search دستی LDAP کار می‌کند ولی نام تماس‌گیرنده نمایش داده نمی‌شود؟

ldap.call_in_lookup را فعال کنید و فرمت شماره در SIP و LDAP را مقایسه کنید. تفاوت +98، 98 یا 0 می‌تواند Number Matching را خراب کند.

آیا بهتر است LDAP بدون TLS استفاده شود؟

برای تست محدود می‌تواند به تشخیص کمک کند، اما در شبکه Production بهتر است Credential و Queryهای Directory روی ارتباط رمزگذاری‌شده و با Certificate معتبر منتقل شوند.

چرا تنظیم Phonebook بعد از Reboot عوض می‌شود؟

Auto Provisioning، RPS یا Device Template ممکن است URL یا LDAP Configuration قبلی را دوباره روی تلفن اعمال کند. Source of Truth را در سیستم مدیریت مرکزی اصلاح کنید.

جمع‌بندی

وقتی دفترچه تلفن Yealink Sync نمی‌شود، اول Remote Phone Book را از LDAP جدا کنید. Remote Phone Book یک فایل XML را دانلود و Cache می‌کند و به‌روزرسانی آن لحظه‌ای نیست؛ در حالی که LDAP هنگام Search یا Caller Lookup مستقیماً Directory Server را Query می‌کند.

برای Remote Phone Book ابتدا URL، DNS، Authentication و HTTPS را بررسی کنید. سپس یک XML کوچک و استاندارد بسازید تا Network را از Schema جدا کنید. اگر فایل فارسی دارید، UTF-8 واقعی، XML Declaration و Charset پاسخ Web Server را با هم هماهنگ نگه دارید.

اگر مشکل LDAP است، مسیر را از Network و Bind شروع کنید. بعد Base DN، Filter، Name/Number Attribute و Display Name را بررسی کنید. Search موفق با ldapsearch ولی شکست روی Yealink معمولاً سرنخ خوبی برای تمرکز روی Configuration Phone یا TLS است.

اگر LDAP روی 389 کار می‌کند ولی LDAPS روی 636 نه، Certificate و TLS را بررسی کنید. اگر Search دستی سالم ولی Caller Lookup خراب است، فرمت شماره تماس و گزینه‌های Incoming/Outgoing Lookup اهمیت بیشتری دارند.

در نهایت Auto Provisioning را فراموش نکنید. اگر تنظیمات دستی بعد از Restart برمی‌گردند، مشکل را روی خود Phone تکرار نکنید؛ Template مرکزی را اصلاح کنید تا همه تلفن‌های سازمان یک Configuration پایدار و امن داشته باشند.

منابع و مستندات
برای تهیه این راهنما، ساختار Remote Phone Book، XML، LDAP، Cache، Authentication و TLS با مستندات فعلی Yealink بررسی شده‌اند.
Yealink Support
ساختار XML، Menu.xml، Department.xml، URL، Authentication، Cache و محدودیت حجم Remote Phone Book
Yealink Support
Refresh نشدن Remote Phone Book، HTTPS Certificate، TLS، LDAP Lookup و مشکلات تطبیق شماره
Yealink Support
LDAP Host، Base DN، Bind User، Name/Number Filter، Attributes، StartTLS، LDAPS و خطاهای Certificate/TLS
Yealink Support
XML Phonebook URL، Username، Password و ساختار Search در مدل‌های DECT Yealink
دفترچه تلفن سازمانی روی Yealink درست Sync نمی‌شود؟

LDAP، XML و اتصال امن Directory را بررسی کنید

اگر Remote Phone Book یا LDAP روی تلفن‌های Yealink خالی است، دیر به‌روز می‌شود یا Lookup تماس‌ها درست کار نمی‌کند، می‌توانید درخواست بررسی کانفیگ ثبت کنید تا شبکه، Directory Server، TLS و تنظیمات تلفن متناسب با همان ساختار بررسی شوند.

تماس با پشتیبانی ایرانیکاسرور

021-91302467

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *