CID Lookup تلفن ابری همکاران
نام مخاطب را براساس شماره تماس از CRM، ERP یا نرمافزار اختصاصی خود استعلام بگیرید و پیش از پاسخگویی روی تلفن کارشناس نمایش دهید.
CID Lookup چیست؟
CID Lookup قابلیتی برای شناسایی تماسگیرنده یا مخاطب تماس خروجی است. تلفن ابری همکاران شماره را به سامانه شما ارسال میکند و سامانه شما نام مخاطب را بهصورت یک رشته متنی بازمیگرداند.
نحوه عملکرد
تلفن ابری عبارت [NUMBER] را در URL تنظیمشده با شماره واقعی جایگزین میکند. پاسخ سرویس باید فقط شامل نام قابل نمایش باشد.
پیشنیازهای سرویس
| الزام | توضیح |
|---|---|
| URL عمومی | آدرس باید از اینترنت و بدون نیاز به VPN قابل دسترس باشد. |
| HTTPS معتبر | استفاده از گواهی TLS معتبر قویاً توصیه میشود. |
| پارامتر شماره | URL باید محل قرارگیری شماره را با عبارت [NUMBER] مشخص کند. |
| پاسخ سریع | پاسخدهی کند میتواند باعث نمایشندادن نام پیش از پاسخ تماس شود. |
| خروجی متنی | بدنه پاسخ باید نام مخاطب باشد؛ نه صفحه HTML یا ساختار پیچیده. |
شروع سریع
یک Endpoint در نرمافزار خود ایجاد کنید و آدرس آن را به شکل زیر در اختیار تیم پشتیبانی قرار دهید:
https://crm.example.com/api/cid-lookup?number=[NUMBER]
هنگام تماس شماره جایگزین میشود:
GET /api/cid-lookup?number=09121234567 HTTP/1.1 Host: crm.example.com Accept: text/plain
ساختار درخواست
درخواست بهصورت GET ارسال میشود و شماره در بخشی از URL که با [NUMBER] مشخص شده قرار میگیرد.
| بخش | مقدار | توضیح |
|---|---|---|
| Method | GET | درخواست استعلام مخاطب |
| Parameter | number | نام پارامتر قابل انتخاب است؛ محل شماره با [NUMBER] مشخص میشود. |
| Accept | text/plain | پاسخ متنی ساده توصیه میشود. |
| Timeout | کوتاه | Endpoint باید برای پاسخگویی بلادرنگ طراحی شود. |
ساختار پاسخ
در صورت یافتن مخاطب، فقط نام موردنظر را در بدنه پاسخ برگردانید.
HTTP/1.1 200 OK Content-Type: text/plain; charset=utf-8 علی محمدی
مخاطب پیدا نشد
در صورت پیدا نشدن شماره، پاسخ خالی یا یک نام عمومی کوتاه برگردانید. رفتار نهایی باید پیش از فعالسازی با تیم فنی هماهنگ شود.
HTTP/1.1 200 OK Content-Type: text/plain; charset=utf-8
{"name":"علی محمدی"} ارسال نکنید، مگر اینکه برای حساب شما قرارداد فنی متفاوتی تنظیم شده باشد.قالب شمارهها و نرمالسازی
شماره ممکن است با قالبهای متفاوت دریافت شود. Endpoint شما باید همه قالبهای رایج را به یک قالب داخلی تبدیل کند.
| ورودی احتمالی | نمونه مقدار نرمالشده |
|---|---|
09121234567 | 09121234567 |
989121234567 | 09121234567 |
00989121234567 | 09121234567 |
02192003513 | 02192003513 |
92003513 | براساس کد شهر یا قواعد سازمان تکمیل شود. |
+ و پیششمارههای 98 و 0098 را مدیریت کنید.زبان، طول نام و Encoding
- پاسخ را با Encoding استاندارد
UTF-8ارسال کنید. - نام را کوتاه و قابل نمایش نگه دارید؛ مانند «علی محمدی» یا «شرکت نمونه».
- برخی تلفنهای سختافزاری قدیمی ممکن است حروف فارسی را درست نمایش ندهند.
- از ارسال HTML، خط جدید، توضیحات اضافی یا داده حساس خودداری کنید.
نمونه PHP / Laravel
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Models\Contact;
Route::get('/api/cid-lookup', function (Request $request) {
$number = normalizePhone((string) $request->query('number'));
$contact = Contact::query()
->where('normalized_phone', $number)
->first();
return response($contact?->display_name ?? '', 200)
->header('Content-Type', 'text/plain; charset=utf-8');
});نمونه Node.js / Express
import express from "express";
const app = express();
app.get("/api/cid-lookup", async (req, res) => {
const number = normalizePhone(String(req.query.number || ""));
const contact = await contacts.findByPhone(number);
res.type("text/plain; charset=utf-8");
res.status(200).send(contact?.displayName || "");
});
app.listen(3000);نمونه Python / Flask
from flask import Flask, request, Response
app = Flask(__name__)
@app.get('/api/cid-lookup')
def cid_lookup():
number = normalize_phone(request.args.get('number', ''))
contact = find_contact_by_phone(number)
name = contact.display_name if contact else ''
return Response(name, status=200, content_type='text/plain; charset=utf-8')تست سرویس
پیش از ارسال درخواست فعالسازی، Endpoint را با چند شماره واقعی و ناشناس آزمایش کنید.
curl -i "https://crm.example.com/api/cid-lookup?number=09121234567"
| تست | نتیجه مورد انتظار |
|---|---|
| شماره موجود | وضعیت 200 و نام مخاطب |
| شماره ناشناس | وضعیت 200 و پاسخ خالی |
| شماره با 98 | همان مخاطب نسخه 09 پیدا شود |
| حروف فارسی | نمایش صحیح با UTF-8 |
| سرعت پاسخ | پاسخ سریع و بدون پردازش سنگین |
امنیت
- فقط اطلاعات لازم برای نمایش نام مخاطب را برگردانید.
- از قرار دادن کلیدهای حساس در URL عمومی خودداری کنید.
- در صورت استفاده از Token، آن را طولانی و قابل تعویض انتخاب کنید.
- Rate Limit منطقی تعریف کنید، اما تماسهای واقعی را مسدود نکنید.
- ورودی شماره را اعتبارسنجی و از Queryهای پارامتری استفاده کنید.
- اطلاعات شمارهها و پاسخها را بدون ضرورت در Log عمومی ذخیره نکنید.
کارایی و دسترسپذیری
CID Lookup در مسیر بلادرنگ تماس اجرا میشود. بنابراین پایداری و سرعت Endpoint اهمیت مستقیم دارد.
| موضوع | پیشنهاد |
|---|---|
| Database Index | روی ستون شماره نرمالشده Index ایجاد کنید. |
| Cache | مخاطبان پرتکرار را برای مدت کوتاه Cache کنید. |
| Timeout داخلی | از فراخوانی سرویسهای زنجیرهای کند خودداری کنید. |
| پاسخ خطا | در خطا پاسخ خالی و سریع بهتر از Timeout طولانی است. |
| Monitoring | زمان پاسخ، خطاهای 5xx و Availability را پایش کنید. |
عیبیابی
| مشکل | راهحل |
|---|---|
| نام روی تلفن نمایش داده نمیشود | URL عمومی، HTTPS، وضعیت HTTP و متن پاسخ را بررسی کنید. |
| بهجای نام JSON نمایش داده میشود | فقط متن ساده نام را برگردانید. |
| برخی شمارهها پیدا نمیشوند | نرمالسازی 0098، 98، +98 و صفر ابتدایی را بررسی کنید. |
| فارسی ناخوانا است | Content-Type و charset=utf-8 را تنظیم و سازگاری تلفن را بررسی کنید. |
| نام دیر ظاهر میشود | Query دیتابیس، Index، Cache و سرویسهای وابسته را بهینه کنید. |
| خطای 403 یا 429 | Firewall، WAF و Rate Limit را بازبینی کنید. |
فعالسازی CID Lookup
پس از آمادهسازی و تست Endpoint، URL نهایی را از طریق تیکت پشتیبانی ارسال کنید.
عنوان درخواست: فعالسازی CID Lookup کد مرکز تماس: [کد مرکز تماس] URL استعلام: https://crm.example.com/api/cid-lookup?number=[NUMBER] نوع پاسخ: text/plain; charset=utf-8 شماره تست: [شماره ثبتشده در CRM]
