أنشئ سير عمل اتصالات على مستوى شركات الاتصالات باستخدام RESTful API الخاص بنا. JSON عبر HTTPS، ومصادقة الرمز المميز لحاملها، وخطافات الويب في الوقت الفعلي.
curl -X POST https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+14155551234", "from": "+14155550100", "ai_receptionist": true }'{
"id": "call_8f2a1b3c",
"status": "ringing",
"ai_handler": "receptionist_v2"
}تتم مصادقة كافة الطلبات باستخدام الرمز المميز لحاملها في ملف Authorization header. أنشئ مفاتيح من علامة تبويب واجهة برمجة التطبيقات (API) بوحدة تحكم Ajoxi — استخدمها AJX_LIVE_… لحركة الإنتاج و AJX_TEST_… لصندوق الرمل.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"إجراء المكالمات الصوتية وإدراجها ونقلها واسترجاعها.
/v1/callsقم بإدراج كافة المكالمات مع ترقيم صفحات المؤشر ومرشحات التاريخ.
/v1/callsابدأ مكالمة صادرة جديدة أو قم بتشغيل حملة اتصال.
/v1/calls/{id}استرداد مكالمة واحدة عن طريق المعرف مع البيانات التعريفية الكاملة.
/v1/calls/{id}/transferتحويل مكالمة نشطة إلى وكيل أو ملحق آخر.
البحث عن أرقام الهواتف وتوفيرها ومنفذها وإصدارها.
/v1/numbersابحث عن الأرقام المحلية أو المجانية أو الدولية المتاحة.
/v1/numbersتوفير رقم جديد في حسابك.
/v1/numbers/{id}قم بتحديث التوجيه أو معرف المتصل أو تكوين الرسائل القصيرة على الرقم.
/v1/numbers/{id}حرر رقمًا مرة أخرى إلى حوض السباحة. لا رجعة فيه.
إرسال واستقبال الرسائل القصيرة ورسائل الوسائط المتعددة وسجل المحادثات.
/v1/messagesقم بإدراج الرسائل وتصفيتها حسب الاتجاه أو القناة أو المحادثة.
/v1/messagesإرسال رسالة نصية قصيرة (SMS) أو رسائل الوسائط المتعددة (MMS). يدعم مرفقات الوسائط والقوالب.
يمكنك الوصول إلى تسجيلات المكالمات والنصوص والرؤى التي تم إنشاؤها بواسطة الذكاء الاصطناعي.
/v1/recordingsقم بإدراج تسجيلات المكالمات مع التاريخ الاختياري ومرشحات الوكيل.
/v1/recordings/{id}استرجع تسجيلًا واحدًا مع النص وملخص الذكاء الاصطناعي.
/v1/transcripts/{id}استرجع النص الكامل للمكالمة أو التسجيل.
اشترك في أحداث المنصة في الوقت الحقيقي.
/v1/webhooksقائمة اشتراكات webhook التي تم تكوينها.
/v1/webhooksاشترك في حدث واحد أو أكثر (call.start، message.received).
/v1/webhooks/{id}إزالة اشتراك webhook.
تقوم كل استجابة خطأ بإرجاع JSON مع ملف error.code و error.message. يتطابق رمز حالة HTTP مع الفئة.
يتم تحديد الحد الأقصى للحسابات القياسية بـ 100 طلب في الثانية لكل مفتاح API. لا تحتوي خطط المؤسسات على حد أقصى ثابت — فنحن نتوسع جنبًا إلى جنب مع حركة المرور الخاصة بك. تتضمن كل استجابة ثلاثة رؤوس لحدود المعدل:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000عندما يتم تجاوز الحد، تتلقى استجابة 429 مع أ Retry-After رأس في ثوان. يقوم عملاء SDK بتنفيذ التراجع الأسي مقابل هذه الرؤوس تلقائيًا.
تعرض نقاط نهاية القائمة 50 عنصرًا على الأكثر لكل صفحة بشكل افتراضي (قابلة للتكوين حتى 200 عنصر عبر ?limit=200). يتضمن كل رد أ next_cursor - مررها مرة أخرى كما ?cursor=… لاسترداد الصفحة التالية. متى next_cursor فارغة، لقد وصلت إلى النهاية.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}اشترك في أحداث المنصة عبر منشورات HTTPS الموقعة. يتضمن كل طلب webhook X-Ajoxi-Signature header - قم بالتحقق منه كـ HMAC-SHA256 عبر نص الطلب الأولي باستخدام سر خطاف الويب الخاص بك.
call.startedيتم تشغيله عند بدء رنين مكالمة واردة أو صادرة.call.answeredيتم إطلاقه عندما يتم الرد على مكالمة من قبل موظف استقبال بشري أو يعمل بالذكاء الاصطناعي.call.completedيتم إطلاقه عند انتهاء المكالمة. تتضمن الحمولة المدة وعنوان URL للتسجيل والتصرف النهائي.message.receivedيتم تشغيله عند وصول رسالة نصية قصيرة (SMS) أو رسالة وسائط متعددة (MMS) إلى رقم محدد.message.deliveredيتم تشغيله عندما يتم تأكيد تسليم رسالة صادرة بواسطة شركة الاتصالات.recording.readyيتم تشغيله عند معالجة تسجيل المكالمات وإتاحته للتنزيل.transcript.readyيتم تشغيله عند انتهاء معالجة نص AI للتسجيل.أعد محاولة عمليات التسليم الفاشلة مع التراجع الأسي لمدة تصل إلى 24 ساعة. بعد المحاولة الأخيرة، يتم نقل الحدث إلى قائمة انتظار الرسائل الميتة التي يمكنك إعادة تشغيلها من وحدة التحكم.
الإصدار المستقر الحالي هو v1. يتم إدخال التغييرات العاجلة تحت بادئة جديدة (/v2/، وما إلى ذلك) - لا يوجد أبدًا داخل إصدار موجود. تظل الإصدارات المهملة متاحة لمدة 18 شهرًا على الأقل بعد شحن الإصدار اللاحق، مع تحذير عبر البريد الإلكتروني لمدة 6 أشهر قبل غروب الشمس.
تتوفر حزم SDK للطرف الأول لـ Node.js وPython وGo وRuby. يأتي كل منها مع عملاء مكتوبين، ومنطق إعادة المحاولة، و verifyWebhook() المساعد.
تستخدم كافة الطلبات مصادقة الرمز المميز لحاملها. قم بإنشاء مفتاح API في وحدة تحكم Ajoxi، ثم قم بتمريره كـ "Authorization: Bearer AJX_LIVE_XXXXX" في كل طلب. استخدم مفتاح `AJX_TEST_...` منفصلًا لحركة مرور وضع الحماية - بيئة الاختبار معزولة ولا تجري مكالمات حقيقية أبدًا.
نعم. يتم توجيه المكالمات التي يتم إجراؤها باستخدام مفاتيح وضع الاختبار من خلال جهاز المحاكاة الخاص بنا بدلاً من شبكة الناقل المباشر - وهو مثالي لخطوط أنابيب CI واختبار التحميل. لا يتم احتساب طلبات وضع الاختبار مقابل الدقائق المسموح بها ولا ترن هاتفًا حقيقيًا أبدًا.
100 طلب في الثانية على الخطة القياسية، وغير محدود على المؤسسة. تتضمن كل استجابة رؤوس "X-RateLimit-Limit"، و"X-RateLimit-Remaining"، و"X-RateLimit-Reset"، حتى تتمكن من تسريع حركة المرور الخاصة بك بدقة. عندما تتجاوز الحد، تتلقى 429 بقيمة "إعادة المحاولة بعد".
يتضمن كل طلب خطاف ويب رأسًا "X-Ajoxi-Signature". قم بحساب HMAC-SHA256 على نص الطلب الأولي باستخدام سر خطاف الويب الخاص بك، ثم قارن بين القيمتين في الوقت الثابت. يأتي عملاء SDK (Node وPython وGo وRuby) مزودين بمساعد `verifyWebhook()` الذي يتعامل مع هذا الأمر نيابةً عنك.
نحن لا نكسر إصدار API مستقرًا أبدًا. يتم إرسال التغييرات العاجلة ضمن مسار إصدار جديد (على سبيل المثال `/v2/`). تظل الإصدارات المهملة سارية لمدة 18 شهرًا على الأقل بعد شحن الإصدار اللاحق، وستتلقى تحذيرات عبر البريد الإلكتروني لمدة 6 أشهر على الأقل قبل انتهاء العمل.
ليس حاليا. واجهة برمجة التطبيقات هي REST + JSON مع أحداث اختيارية يرسلها الخادم لتدفق نقاط النهاية مثل النصوص المباشرة. إذا قامت GraphQL بإلغاء حظر سير عمل محدد لك، فقم بتقديم طلب من خلال فريق حسابك - فنحن نتتبع الطلب ونحدد الأولويات وفقًا لذلك.
قم بتدوير مفتاح وضع الحماية، وتثبيت SDK، وإجراء أول مكالمة قابلة للبرمجة قبل الغداء.