إعداد هاتف الويب (WebRTC) البرمجي
يتيح الهاتف البرمجي في المتصفح للموظف إجراء مكالمات PSTN والرد عليها دون مغادرة المتصفح — لا هاتف مكتبي، ولا تطبيق SIP لسطح المكتب. ثمة ثلاث طرق لوضعه أمام الموظف، وتتشارك جميعها بيانات الاعتماد والبنية التحتية ذاتها في الأسفل:- الهاتف البرمجي المدمج في لوحة التحكم — توفر Orbit هاتفًا برمجيًا جاهزًا داخل لوحة التحكم. هذا هو المسار الخالي من الكود ونقطة البداية المناسبة لمعظم الفرق.
- هاتف برمجي مضمّن قائم على LiveKit (
Softphoneفي@devotel-orbit/web) — تركّب الهاتف البرمجي داخل مساحة عمل الموظف الخاصة بك (نظام CRM، أو حائط مركز الاتصال، أو أداة داخلية) بواجهة استخدام خاصة بك. - هاتف برمجي مضمّن عبر SIP-over-WSS (مسار تسجيل SIP) — عميل SIP تقليدي (مثل JsSIP) يسجّل مباشرة لدى بوابة Orbit التي تحول WebRTC إلى SIP، للفرق التي تريد دلالات SIP القياسية ومنطق تحكم مكالمات خاصًا بها.
لا يحتاج الهاتف البرمجي في المتصفح سوى متصفح مزود بميكروفون. إشعارات push الواردة (القسم 1) رفيق متنقل ينتقل إليه الموظفون عند استخدام تطبيق Orbit للجوال — وهي غير مطلوبة للمتصفح نفسه.
1. تسجيل الأجهزة ورموز VoIP push (الجوال)
تجاوز هذا القسم إذا كان موظفوك يعملون في المتصفح فقط. سجّل جهاز VoIP فقط عندما يحتاج الموظف أيضًا إلى أن تُرنّ المكالمات الواردة على هاتفه كمكالمة أصلية — أي أن يستمر تطبيق Orbit للجوال، في الخلفية أو مقفلاً، في الرنين كمكالمة هاتفية بدل إظهار إشعار سلبي. تسجيل جهاز VoIP استدعاء API واحد:- قيمة
platformهيiosأوandroid. على iOS يكونvoip_tokenرمز PushKit (CallKit)؛ وعلى Android رمز تسجيل FCM المستخدم لقناة المكالمات عالية الأولوية. - قيمة
bundle_id(iOS فقط) هي معرّف حزمة التطبيق — موضوع إشعار VoIP هو<bundle_id>.voip. - يعيد الاستجابة الجهاز المسجل (
id،platform،last_seen_at).
GET /push/voip-devices (سرد) وDELETE /push/voip-devices/:id (إلغاء تسجيل جهاز). لا تستدعي هذه يدويًا عادة — تسجل حزمة SDK للجوال صفها الخاص وتحدّثه وتحذفه. الرمز الميت نهائيًا (ألغاه نظام التشغيل أو أُلغي تثبيت التطبيق) يُعلَّم revoked تلقائيًا ويُتجاوز في الرنّ الوارد التالي، فلا يحجب جهاز قديم دورة رنين الطابور أبدًا.
2. إصدار بيانات اعتماد الهاتف البرمجي
يحتاج متصفح الموظف إلى بيانات اعتماد قصيرة العمر قبل أن يتمكن من الاتصال. وتتوقف نقطة النهاية التي تصدر منها على العميل الذي اخترته — لوحة التحكم، أو LiveKit مضمّن، أو SIP مضمّن.الهاتف البرمجي المدمج في لوحة التحكم / المضمّن عبر LiveKit
أولى خطوات الهاتف البرمجي طلب رمز. يعيدPOST /voice/softphone/token رمز وصول LiveKit قصير العمر مع عنوان URL للوسائط للاتصال به:
POST /voice/softphone/dial مع { "to": "+15550123", "from": "+15559876" } — راجع المقطع الكامل في القسم 4.
الهاتف البرمجي المضمّن عبر SIP/WSS
يسجل عميل SIP مباشرة عبر WebSocket. يستبدلPOST /voice/softphone/register طلب API الموثق لديك ببيانات اعتماد SIP قصيرة العمر:
- تعيش بيانات الاعتماد 60 دقيقة — أعد التسجيل قبل
expiresAtوإلا انقطعت الجلسة. - يجب أن يكون
callerIdNumberرقمًا تملكه مؤسستك (وإلا فُرض 403) — هكذا يُحظر انتحال هوية المتصل الصادرة. - يرتبط اسم المستخدم بمؤسستك، فلا يمكن إعادة تشغيل اسم مستخدم مسروق ضد مستأجر آخر.
- إصدار الرموز محدد النطاق بـ owner/admin/developer — ليست نقطة نهاية عامة ومجهولة.
ألغِ بيانات الاعتماد فورًا بـ
DELETE /voice/softphone/credentials/:username إذا غادر موظف أو تسرب رمز. الإلغاء حكْر على owner فيبقى تسرب بيانات الاعتماد حدثًا صغير النطاق.3. اختر كيف تصل المكالمات الواردة إلى الهاتف البرمجي
يجب توجيه المكالمات الواردة بحيث تهبط في متصفح موظف. لديك ثلاثة خيارات يملكها المستأجر — استخدم ما يطابق طريقة إعداد أرقام هاتفك.- DNIS → طابور → هاتف برمجي. المسار الأشيع: يرسل التوجيه الوارد لرقم هاتفك المكالمة إلى طابور ACD، ويعرضها الطابور على الهاتف البرمجي في متصفح موظف متاح (وإن كان على تطبيق الجوال، فإشعار VoIP — القسم 1). تضبط هذا لكل رقم في توجيه الأرقام بلوحة التحكم، أو عبر منشئ التدفقات.
- DNIS → توجيه SIP. وجّه المكالمات الواردة إلى مجال SIP الذي تعيش عليه تسجيلات هاتفك البرمجي. استخدم هذا عندما تهبط حركتك الواردة أصلًا على SIP (مثلاً رقم DID محوَّل إلى عنوان SIP URI خاص بك) وتريد أن يجيب الهاتف البرمجي المسجل مباشرة.
- هاتف المتصل البرمجي يجري المكالمات الصادرة. للفرق التي تقودها المكالمات الصادرة لا تنشأ مسألة الوارد أصلًا — يبدأ الموظف المكالمات، وأية إجابة واردة تكون على رقم موجَّه إلى طابور (عودة إلى الخيار الأول).
4. مقطع JS كامل — الميكروفون، وإشعار VoIP، والاحتياط في المتصفح
هذا هاتف برمجي كامل في المتصفح جاهز للنسخ واللصق. يعمل مع خياري التضمين كليهما (LiveKit وSIP-over-WSS) ويعالج واقع الاحتياط في المتصفح: سيكون بعض الموظفين على متصفحات أو شبكات يتعذر فيها المسار الأساسي للوسائط، لذلك تصل دائمًا مسارًا احتياطيًا.5. التحقق واستكشاف الأخطاء
تحقق من الإعداد من طرف إلى طرف:- أصدر بيانات اعتماد (القسم 2)، وصِل العميل (القسم 4)، وابحث عن حدث
connectللغرفة أوregisteredلـ SIP. - أجرِ مكالمة صادرة إلى جوالك — ينبغي أن تسمع رنينًا ثم صوتًا في الاتجاهين عند الإجابة.
- وجّه مكالمة واردة إلى رقمك (القسم 3) وتأكد أن الهاتف البرمجي يرن ويجيب.
- إذا كنت قد سجلت جهاز VoIP للجوال (القسم 1)، فضع تطبيق الجوال في الخلفية وتأكد من ظهور واجهة مكالمة واردة أصلية.
وتأكد أيضًا أنك لا تعيد استخدام نقطة النهاية الخطأ: register (SIP/WSS) ↔ عملاء SIP، وtoken ↔ عملاء LiveKit، و
voip-devices ↔ إشعارات الجوال فقط.
إلى أين تذهب بعد ذلك
- متطلبات شبكة الهاتف البرمجي — المنافذ والمضيفات وقائمة الوكيل لإدراجها في القائمة البيضاء لمكالمات المتصفح على جدار ناري مؤسسي أو VPN.
- صفحة المكالمة التجريبية في SDK — أجرِ مكالمة تجريبية صادرة حقيقية من لوحة التحكم (Developer → SDK Live Demo) للتأكد من سلامة هذا الإعداد من طرف إلى طرف.
- إعداد SIP trunk — إن أردت إحضار ناقل/trunk خاص بك إلى جانب الهاتف البرمجي في المتصفح.
- طوابير الصوت — طابور ACD الذي تمر عبره المكالمات الواردة قبل أن يجيب الهاتف البرمجي.
- Web SDK — خريطة الأحداث الكاملة لـ
Softphoneوسائر أسطح SDK. - رحلة تأهيل الأسبوع الأول للموظفين — الرحلة التي تضع الهاتف البرمجي في الأسبوع الأول لموظف جديد (من المصدر الإنجليزي حتى يُنشر البديل المترجم).