شناسایی مخاطب و CID Lookup
نام مخاطب در تماس و گزارش، با اولویت دفترچه تلفن همین مرکز.
ترتیب شناسایی#
- شماره با تلفن ثابت یا موبایل مخاطبین حذفنشدهٔ همین مرکز، بهصورت دقیق تطبیق داده میشود. ایمیل، فکس و آدرس وارد این تطبیق نمیشوند.
- در صورت نبودن نام، نتیجهٔ کششدهٔ CID Lookup خوانده میشود.
- اگر نتیجه موجود نباشد، سرویس فعال CID Lookup با مهلت کوتاه استعلام میشود. اتصال فعال دیدار نیز در زمان باقیمانده برای یافتن نام بررسی میشود.
شمارههای 0912…، +98912…، 0098912… و شکل فارسی ارقام برای تطبیق یکسان میشوند. در دفترچهٔ تکراری، مخاطبی که اخیراً بهروزرسانی شده اولویت دارد. دادههای مرکز دیگر در این تطبیق وارد نمیشوند.
قرارداد سرویس شما#
در اتصال CID Lookup یک URL از نوع HTTPS ثبت کنید و جای شماره را با [NUMBER] مشخص کنید:
https://crm.example.com/phone/name?number=[NUMBER] GET /phone/name?number=09120000001 HTTP 200 Content-Type: text/plain; charset=utf-8 نام مخاطب
پاسخ باید فقط نام بهصورت متن UTF-8 باشد؛ HTML، JSON، متن خطا یا اطلاعات اضافی نفرستید. اگر مخاطب پیدا نشد، پاسخ ۲۰۰ با بدنهٔ خالی بدهید. برای شمارهٔ ایرانی ۱۰ رقمی، در درخواست سرویس صفر داخلی اضافه میشود.
مقصد باید HTTPS عمومی روی پورت ۴۴۳ با گواهی معتبر باشد. تغییر مسیر دنبال نمیشود. DNS در پردازش جداگانه آماده میشود؛ تا آمادهشدن آن، تماس با شماره ادامه پیدا میکند.
کارایی و نمایش#
دفترچه تلفن به Redis منتشر میشود و تماس برای تطبیق محلی، کوئری دفترچه تلفن را اجرا نمیکند. تغییرات از طریق علامت همگامسازی و بازبینی دورهای منتقل میشوند. نام موفق سرویس بیرونی ۵ دقیقه و پاسخ بدون نام ۳۰ ثانیه کش میشود. در خطای سرویس، استعلامهای بعدی برای ۱۰ ثانیه متوقف میشوند تا فشار تکراری ایجاد نشود.
بودجهٔ استعلام بیرونی ۴۵۰ میلیثانیه است و فراخوانی محلی PBX حداکثر یک ثانیه مهلت دارد. عدم پاسخ سرویس، تماس را قطع نمیکند؛ شماره نمایش داده میشود. در تماس ورودی نام تماسگیرنده و در تماس خروجی نام مقصد، هنگام تماس ثبت و در گزارش نگهداری میشود. تغییر بعدی نام در دفترچه تلفن، گزارش تماس قبلی را بازنویسی نمیکند.
این رفتار مربوط به مرکز نوع ۲ است. تنظیمات و مسیر قبلی نوع ۱ در راهنمای CID Lookup نسخهٔ ۱ باقی میماند.
تنظیم اتصال در پنل#
- ابتدا دفترچه تلفن را بررسی کنید.اگر شماره در مخاطبین همین مرکز وجود دارد، همان نام اولویت دارد و درخواست بیرونی لازم نیست.
- مسیر جستوجوی نام را روی CRM بسازید.این مسیر یک شماره دریافت و فقط متن نام را برمیگرداند؛ کار طولانی و ثبت تماس را وارد این مسیر نکنید.
- آدرس را در اتصال CID Lookup ثبت کنید.جای شماره [NUMBER] است. مقصد باید HTTPS عمومی باشد و سریع پاسخ بدهد.
- با مخاطب نمونه تست کنید.شماره شناختهشده، شماره بدون مخاطب و پاسخ دیرهنگام را بررسی کنید؛ خرابی CRM نباید مانع ادامه تماس شود.
Node.js؛ پاسخ نام به صورت متن#
نمونه آموزشی زیر فقط قرارداد پاسخ را نشان میدهد. نقشه نمونه را با lookup ایندکسشده و محدود به مشتری خود جایگزین کنید. سرور محلی را پشت reverse proxy با HTTPS عمومی منتشر کنید.
import { createServer } from 'node:http';
const contacts = new Map([
['09120000001', 'مخاطب نمونه'],
]);
createServer((request, response) => {
const url = new URL(request.url, 'http://localhost');
if (request.method !== 'GET' || url.pathname !== '/phone/name') {
response.writeHead(404);
return response.end();
}
const number = url.searchParams.get('number') || '';
if (!/^\+?[0-9]{1,20}$/.test(number)) {
response.writeHead(400);
return response.end();
}
response.writeHead(200, {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'private, no-store',
});
response.end(contacts.get(number) || '');
}).listen(3000, '127.0.0.1');
// Public URL configured in the CID Lookup module:
// https://crm.example.com/phone/name?number=[NUMBER]PHP؛ قرارداد موفق و شماره ناشناخته#
<?php
$number = (string) ($_GET['number'] ?? '');
if (!preg_match('/^\+?[0-9]{1,20}$/D', $number)) {
http_response_code(400);
exit;
}
// Example only: replace with an indexed lookup in your CRM.
$contacts = [
'09120000001' => 'مخاطب نمونه',
];
$name = $contacts[$number] ?? '';
header('Content-Type: text/plain; charset=utf-8');
header('Cache-Control: private, no-store');
http_response_code(200);
echo $name; // Empty body with HTTP 200 when no contact exists.curl --get 'https://crm.example.com/phone/name' \ --data-urlencode 'number=09120000001' \ --max-time 1 \ --include
در پاسخ نباید قالب HTML، شیء JSON، پیام دیباگ یا هشدار PHP وجود داشته باشد. شمارهای که در دفترچه محلی موجود است ممکن است اصلاً به این URL نرسد.
چرا نام نمایش داده نمیشود؟#
| نشانه | بررسی |
|---|---|
| نام تغییر کرده اما تماس بعدی هنوز نام قبلی دارد | برای همگامسازی دفترچه و انقضای cache فرصت بدهید؛ نتیجه موفق بیرونی پنج دقیقه کش میشود. |
| درخواست به CRM نمیرسد | مخاطب محلی و cache اولویت دارند. فعال بودن اتصال، placeholder و عمومی بودن DNS را بررسی کنید. |
| عدد دیده میشود ولی تماس برقرار است | سرویس بیرونی ممکن است نام نداده یا از زمان مجاز عبور کرده باشد؛ این رفتار ادامه تماس است. |
| نام ورودی درست است ولی Caller ID خروجی عوض نشده | نام مخاطب مقصد از هویت خط خروجی جداست؛ lookup نباید شماره Caller ID خط را تغییر دهد. |
| گزارش نام را دارد ولی گوشی ندارد | نمایش نام روی مدل گوشی و پشتیبانی آن از هدرهای SIP نیز وابسته است. |
