ThunderPhone 2.0 متاح الآن.خدمة ذاتية، ابتداءً من 2 سنت/دقيقة.اقرأ الإعلان

Developer cookbook

الاتصال عبر SIP (من دون رقم هاتف)

أرسِل المكالمات إلى وكيل ThunderPhone مباشرةً من نظام PBX أو شركة الاتصالات أو تطبيق SIP لديك، باستخدام معرّف URI لـ SIP يُستخدم مرة واحدة لكل مكالمة أو عنوان SIP دائم.

إذا كانت منظومتك الخاصة تتعامل بالفعل مع أرقام الهواتف (مثل سنترال PBX أو منصة مركز اتصال أو حساب شركة اتصالات تدوّر فيه الأرقام)، يمكنك إرسال المكالمات إلى وكيل ThunderPhone عبر SIP عادي. لا تستورد رقمًا أو تشتريه على ThunderPhone. تتصل منظومتك بعنوان SIP ويجيب الوكيل.

هناك نوعان من عناوين SIP:

معرّف SIP لكل مكالمةنقطة نهاية SIP
يبدو كالتاليsip:c-<token>@sip.thunderphone.comsip:agent-<id>-<letters>@sip.thunderphone.com
يُنشأ باستخدامPOST /v1/calls/register-sip، مرة لكل مكالمةPOST /v1/sip-endpoints، مرة واحدة
المصادقةالرمز المميز أحادي الاستخدام في العنواناسم مستخدم وكلمة مرور SIP digest (وقائمة سماح اختيارية لعناوين IP المصدر)
مناسب لـالتطبيقات التي تستدعي واجهة برمجة تطبيقات بالفعل قبل تحويل مكالمة؛ ومتغيرات لكل مكالمةأنظمة PBX وشركات الاتصالات التي ينبغي لها ببساطة «توجيه خط» إلى ThunderPhone
صالح لمدة5 دقائق، مكالمة واحدةحتى تحذفه

يوجّه كلا النوعين إلى وكيل واحد في مؤسستك، ويظهر كلاهما في سجل المكالمات مثل أي مكالمة واردة أخرى.

معرّف SIP لكل مكالمة

1. سجّل المكالمة

curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
  • to_number (اختياري) هو الرقم الذي اتصل به المتصل من جهتك. يُخزَّن كوجهة المكالمة في سجل المكالمات، ويراه الوكيل باعتباره رقمه الخاص.
  • تملأ variables (اختياري) عناصر {{placeholders}} النائبة في موجّه الوكيل، بالطريقة نفسها المتبعة في المكالمات الصادرة.
  • call_id هو المعرّف الذي ستحمله المكالمة في سجل المكالمات (GET /v1/calls/{call_id}) بعد اتصالها.

2. اتصل بالمعرّف

أرسل المكالمة إلى sip_uri خلال 5 دقائق. يعمل المعرّف لمكالمة واحدة فقط: بمجرد أن تستخدمه مكالمة، يصبح مستهلكًا، حتى إذا انتهت تلك المكالمة بسرعة.

باستخدام Twilio، على سبيل المثال، أعد TwiML التالي للمكالمة التي تريد تحويلها:

<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>

من نظام PBX، اتصل بالمعرّف كوجهة SIP. لا تحتاج إلى اسم مستخدم أو كلمة مرور؛ فالرمز المميز هو بيانات الاعتماد، لذا تعامل مع المعرّف كما لو كان كلمة مرور إلى أن يُستخدم.

نقطة نهاية SIP (عنوان دائم)

1. أنشئ نقطة النهاية

curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}

2. وجّه منظومتك إليها

اضبط جذع SIP أو وجهة باستخدام:

الإعدادالقيمة
عنوان URI لـ SIPsip_uri الخاص بنقطة النهاية
اسم المستخدم / كلمة المرورusername / password (مصادقة ملخصة؛ يتحداك ThunderPhone في كل مكالمة)
النقلTCP على المنفذ 5060 أو TLS على المنفذ 5061 (موصى به)، أو UDP على المنفذ 5060
برامج الترميزG.711 ‏(PCMU/PCMA) أو G.722

تنطبق إعدادات النقل وبرامج الترميز هذه أيضًا على عناوين URI لكل مكالمة. هناك تفصيلان للشبكة مهمان لكلا نوعي العناوين:

  • اتبع Record-Route. بعد أول INVITE، تنتقل بقية إشارات المكالمة (ACK وإنهاء المكالمة والتحويلات) إلى خادم ThunderPhone المحدد الذي استجاب، والمسمى في ترويسة Record-Route (sip-1.thunderphone.com أو sip-2.thunderphone.com، أو عنوان IP الخاص به). إذا كنت تقيّد SIP الصادر، فاسمح بهذه المضيفات بالإضافة إلى sip.thunderphone.com: ‏172.170.39.202 ‏(sip)، و13.86.104.121 (sip-1) و20.80.98.90 (sip-2).
  • ينتقل الصوت إلى مكان آخر. يحمل sip.thunderphone.com الإشارات فقط. اسمح بالوسائط (RTP) إلى العناوين والمنافذ الموجودة في استجابة SDP.

تصل كل مكالمة إلى العنوان إلى وكيل نقطة النهاية، مهما كان الرقم الذي اتصل به المتصل من جهتك. لا تستورد أرقامًا مطلقًا، لذا لا يتطلب تدويرها من جهتك أي تغيير في ThunderPhone.

مرّر الرقم المطلوب الاتصال به (اختياري)

لتسجيل أي من أرقامك اتصل به المتصل، أرسله في INVITE ضمن ترويسة X-Original-To (مثلًا X-Original-To: +14155550142) أو ضمن ترويسة Diversion قياسية. يخزّنه ThunderPhone كوجهة للمكالمة.

تُختار الوجهة بهذا الترتيب: to_number المُعطى عند تسجيل عنوان URI لكل مكالمة، ثم رقم في X-Original-To، ثم رقم في Diversion. إذا لم يوفر أي منها رقمًا، فسيُعرض كـ sip:agent-12-jhxmginwjx (عنوان نقطة النهاية) لنقطة النهاية، أو sip:call لعنوان URI لكل مكالمة.

مع Twilio يمكنك إضافة الترويسة إلى عنوان URI لـ SIP: sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142.

قيّد عناوين IP المصدر (اختياري)

اضبط allowed_source_cidrs لقبول المكالمات من عناوين الإشارات الخاصة بك فقط، بالإضافة إلى اسم المستخدم وكلمة المرور:

curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'

تُرفض المكالمات من أي عنوان آخر قبل أن تصل إلى الوكيل. استخدم العناوين التي ترسل منظومتك إشارات SIP منها (وبالنسبة إلى شركة اتصالات مثل Twilio، نطاقات عناوين IP للإشارات المنشورة لديها)، وليس عناوين الوسائط الخاصة بك.

ما يراه المتصل ونظامك

  • معرّف المتصل: يُخزَّن جزء المستخدم من ترويسة From بصفته المتصل. يُوحَّد رقم الهاتف (الأرقام، مع إمكانية تضمين + أو المسافات أو الشرطات أو النقاط أو الأقواس) إلى تنسيق E.164؛ ويُحتفَظ بأي قيمة أخرى، مثل اسم مستخدم SIP، كما أُرسلت. يُحتفَظ بحد أقصى قدره 32 حرفًا، ويُخزَّن المتصل المفقود بوصفه anonymous.
  • المكالمات المرفوضة: يتلقى عنوان URI غير المعروف أو المنتهي الصلاحية لكل مكالمة رد SIP 404 Not Found. يُفصل عنوان URI مستخدم مسبقًا لكل مكالمة، أو نقطة نهاية معطلة، أو مصدر خارج قائمة السماح (بما في ذلك أي مكالمة UDP إلى نقطة نهاية لها قائمة سماح) قبل أن يبدأ الوكيل: قد يرى نظامك فشل المكالمة، أو اتصالها ثم انتهائها فورًا. لا تنشئ حالات الرفض هذه إدخالًا في سجل المكالمات. إذا نفد رصيد مؤسستك أو بلغت حد الإنفاق، تُرفض المكالمة وتظهر في سجل المكالمات كمكالمة فاشلة بلا رسوم. لإعادة محاولة اتصال لكل مكالمة، سجّل عنوان URI جديدًا.
  • التحويلات: تعمل التحويلات الباردة للوكيل (يرسل ThunderPhone طلب SIP REFER، الذي يجب أن يقبله نظامك). لا تتوفر التحويلات الدافئة في مكالمات عناوين SIP، لأنه لا يوجد رقم ThunderPhone ليظهر كمعرّف للمتصل لمسار الاتصال الثاني. مع Twilio، يربط TwiML أعلاه الوكيل لكنه لا يعالج التحويلات: أضف referUrl="https://YOUR_SERVER/sip-transfer" إلى <Dial>، واجعل ذلك الخطاف البرمجي يقرأ ReferTransferTarget ويعيد TwiML يطلب وجهة التحويل (راجع دليل SIP REFER من Twilio).
  • الرسائل النصية: لا يمكن لعنوان SIP والرقم المطلوب إجراء مراسلات نصية. لا يمكن للوكيل إرسال رسائل نصية أثناء مكالمة بعنوان SIP إلا إذا كان لديه رقم منفصل قادر على SMS ومُعدّ للمراسلة؛ وإلا فلن تكون أداة SMS الخاصة به متاحة.
  • التسجيل: لا يقبل ThunderPhone طلبات SIP REGISTER. أرسل المكالمات إلى العنوان؛ ولا تسجّل فيه.

الأسعار

تُحتسب مكالمات عناوين SIP وفق السعر المعتاد للوكيل لكل دقيقة. لا توجد رسوم على رقم الهاتف، لأن أي رقم ThunderPhone لا يحمل المكالمة. تحاسب شركتك الناقلة جانبها من المكالمة كالمعتاد. راجع الأسعار.

اختبره

  1. أنشئ عنوان URI لكل مكالمة أو نقطة نهاية كما ورد أعلاه.
  2. اطلبه من نظامك، أو من أي هاتف برمجي SIP (بالنسبة إلى نقطة النهاية، أدخل اسم المستخدم وكلمة المرور).
  3. بعد إنهاء المكالمة، افتح المكالمة في المكالمات في لوحة التحكم، أو استرجعها باستخدام GET /v1/calls/{call_id}. ستعرض المتصل والوجهة (راجع الترتيب ضمن "مرّر الرقم المطلوب") والنص المفرغ.

تفاصيل API: مرجع API لعناوين SIP.