ForHosting VOICE

التوثيق

صفحة واحدة، أربعة مسارات. ابدأ من هنا، وسلّم المسارَين الأوسطَين لمن يردّ على الهاتف ولمن يدير العمل، وأرسل الأخير لمن يكتب الكود.

للبداية

مقسمك في خمس دقائق

كل ما يلي موجود في حسابك أصلًا. ولا شيء منه يحتاج إلى تركيب، ولا إلى زيارة فنّي، ولا إلى جهاز تشتريه.

  • لديك أرقام وتحويلات بالفعل. تُنشأ مع حسابك، ومعها بيانات اعتماد SIP التي يحتاجها كل جهاز. التحويلة شخصٌ أو مكتب، والرقم هو ما يطلبه العالم من الخارج.
  • وجِّه رقمًا إلى مكان. في تبويب الأرقام تحدّد ما يجب أن تفعله مكالمة تصل على ذلك الرقم: أن ترنّ تحويلة، أو مجموعة، أو تفتح قائمة صوتية، أو تدخل طابورًا، أو تتبع مواعيد دوامك.
  • ردّ عليها من المتصفّح. افتح تبويب الهاتف، واسمح بالميكروفون، فيصير التبويب هاتفًا يعمل. اتصل باختبار الصدى (*43) فتسمع صوتك عائدًا إليك.
  • ثم اضبط مواعيدك وبريدك الصوتي. هذان الاثنان هما ما يمنع ضياع مكالمة في السابعة مساءً، وهما أكثر ما ينقص مقسمًا حديث التشغيل.

على عجل؟ هناك خمسة قوالب بداية — عيادة، ومكتب محاماة، وورشة، ومتجر، وخط منزل — تُنشئ مواعيد الدوام ومسار الدخول وصندوق ما بعد الدوام في طلب واحد. ولا تكتب أبدًا فوق شيء ضبطته أنت.

كيف تدخل إلى لوحتكعبر واجهة البرمجة

اللوحة موجودة في صفحة VOICE الخاصة بك ولا تظهر إلا بجلسة. تلك الجلسة تُصدرها منطقة العملاء، ولا يُكتب هنا شيء.

الخطوةماذا يفعل
1تدخل إلى منطقة العملاء على elportaldelcliente.com.
2تختار «إدارة مقسمي» من قائمة حسابك. فتطلب منطقة العملاء من VOICE جلسةً باسمك، وتنقلك إلى صفحة VOICE ومعك بيانات الاعتماد في جزء الوسم من العنوان.
3تحلّ اللوحة محلّ الصفحة التسويقية. وتُمحى بيانات الاعتماد من شريط العنوان قبل رسم أي شيء، وتنتهي صلاحيتها وحدها.

لمن سيبني ذلك الزر، هذا هو العقد كاملًا:

POST /inquilinos/:inquilino/sesiones     # نطاق النظام: البوابة وحدها تستطيع إصداره
{ "minutos": 15 }
→ { "clave": "pbx_ses_…", "caduca": "…", "ambito": "sesion", "minutos_max": 60 }

/nizam-hatif#t=<clave>&exp=<ISO>&v=<inquilino>

تنتقل بيانات الاعتماد في جزء الوسم لا في الاستعلام، وذلك عن قصد: جزء الوسم لا يُرسَل إلى الخادم أبدًا، فلا ينتهي في ترويسة Referer، ولا في سجلات الوصول، ولا عند وسيطٍ في الطريق. تنتهي صلاحيتها خلال دقائق، ولها سقف، ولا تستطيع أن تصنع مفتاحًا دائمًا.

لمن يردّ على الهاتف

اللوحة، تبويبًا تبويبًاعبر واجهة البرمجة

16 أقسام، هي 16 نفسها في اللغات الثماني. وكل ما هنا موجود أيضًا في واجهة البرمجة.

التبويبماذا يفعل
نظرة عامةكيف حال مقسمك الآن: مكالمات اليوم، والمردود عليها، والجارية، وذروتك، ومدى إمكان الوصول إلى أجهزتك.
أرقاميأرقامك، وماذا يفعل كلٌّ منها حين يرنّ.
القوائمالقوائم الصوتية: اضغط 1 للمبيعات، وداخل المبيعات قائمة أخرى.
التحويلاتالأشخاص والأجهزة، بقواعد لكل شخص: التحويل إلى الجوال، والتحويلات، وعدم الإزعاج، وما يُسمح له بطلبه، والبوّاب.
الهاتفالهاتف نفسه: الطلب، والردّ، والتحويل، والتعليق، ومعرفة من هو في مكالمة.
طوابير الانتظارالطوابير بالموقع، ومدة الانتظار المقيسة، ومعاودة الاتصال، ومن هو على الوردية ومن يتولّى ماذا.
الغرفغرف الاجتماعات بمفتاح، ومن بداخلها في هذه اللحظة.
البريد الصوتيالرسائل مع تفريغها النصّي، والتحيات، والرمز السرّي، وسلة المحذوفات، وحدّ الحجم.
الدليلدليل الأسماء الذي يصل إليه من يتهجّى على لوحة الأرقام.
الاستقبالعامل الهاتف، والمكالمات المعلَّقة مباشرةً، ونوافذ الصيانة، وجدول الرموز.
التصفيةقائمة الحظر، وتصفية المجهولين، وتنبيهات من يتصل مرارًا، وكل ما يخصّ من يستطيع الوصول إليك.
الدوامأوقات الدوام، والعُطل، ومفتاح النهار والليل.
الموسيقىموسيقى الانتظار، والمقاطع التي يشغّلها كل مسار.
المكالماتكل مكالمة برقمها ومدّتها ومسارها وتسجيلها.
الخطوطالخطوط المتزامنة: ما هو مضمون لك، وما تستعيره، وذروتك.
الاستهلاكما استهلكته هذا الشهر، يومًا بيوم.

الهاتف داخل متصفّحكمكالمة حقيقية

التبويب هاتف. لا تطبيق تثبّته، ولا جهاز مكتبيّ تشتريه، ولا رقم تنقله: إنه تحويلة من مقسمك أنت، مسجَّلة من المتصفّح.

  • إنها تحويلة حقيقية. يسجّل المتصفّح لدى مقسمك كما يفعل هاتف المكتب، ويمرّ الصوت عبر اتصال مشفّر. فمن يتصل برقمك يصل إلى التبويب، والتبويب يستطيع الاتصال بالخارج.
  • يجب أن يبقى التبويب مفتوحًا. التبويب المغلق هاتف منزوع القابس. هذا هو الحدّ الصادق لهاتف المتصفّح، وسببُ أنه يرافق هاتف المكتب بدل أن يحلّ محلّه في كل مكان.
  • ترى من هو في مكالمة.مكالمة حقيقية تتحدّث مصابيح زملائك مباشرةً — متاح، يرنّ، يتكلّم — فتعرف قبل التحويل إن كان هناك من تحوّل إليه.
  • تنقل مكالمة جارية إلى جهاز آخر.لم يُجرَّب بعد «عليّ الخروج وأنا في مكالمة»: تنتقل المكالمة إلى جوّالك دون أن تقطعها. جعلناها زرًّا لا رمزًا على لوحة الأرقام عن قصد — فمن ينقل مكالمة أمامه شاشة.
  • التحويل والتعليق والتسجيل هي الرموز نفسها في أي هاتف. تُطلب ولا تُنقر، فما تتعلّمه على هاتف المتصفّح يعمل على هاتف المكتب وعلى جوّالك.

هاتف المتصفّح لا يسجّل على حاسوبك أبدًا. التسجيل يحدث داخل المقسم، حيث تُطبَّق قواعد من يجوز تسجيله ومن يجب إعلامه — انظر «التسجيل، والقانون».

رموز تُطلب من الهاتف

احتفظنا بالمتعارف عليه حيث وُجد عرف: التحويل (*72)، وعدم الإزعاج (*78)، والبريد الصوتي (*97)، والالتقاط (*8)، ومَن اتصل للتوّ (*69). هذه كل قيمة رمز لوحة الأرقام: الوظيفة موجودة في اللوحة أصلًا، والرمز هو ما يجعل مَن ظلّ عشرين عامًا يطلب الرمز ذاته يصدّق اللوحة.

تُطلب والهاتف حرّ

الرمزماذا يفعلالتحقّق
*43اختبار الصدى. يسجّل ما تقوله ويعيده إليك، ويعرف أن يقول «لم يصلني شيء».لم يُجرَّب بعد
*44الشيء نفسه لكن بتأخير: يكشف الكلمات التي تضيع.لم يُجرَّب بعد
*45اختبار لوحة الأرقام. يقول كل مفتاحٍ عند ضغطه.لم يُجرَّب بعد
*46حالة خطّك: التسجيل، والترميز، والعنوان، وزمن التأخير.لم يُجرَّب بعد
*60الوقت والتاريخ، منطوقَين كما ينبغي.منصّة الاختبار
*62استهلاكك هذا الشهر (مكالمات ودقائق؛ أما المبلغ فمع تفعيل الاحتساب).عبر واجهة البرمجة
*69من اتصل بك آخر مرة، منطوقًا، والمكالمات الفائتة معه — ثم اضغط 1 لمعاودة الاتصال.لم يُجرَّب بعد
*72تحويل غير مشروط. يعيد قراءة الرقم عليك.عبر واجهة البرمجة
*73إلغاء كل التحويلات.عبر واجهة البرمجة
*74تحويل متوازٍ: يرنّ تحويلتك والرقم في الوقت نفسه.عبر واجهة البرمجة
*75التحويل عند الانشغال.عبر واجهة البرمجة
*76التحويل عند عدم الردّ.عبر واجهة البرمجة
*78تفعيل عدم الإزعاج، بتأكيدٍ منطوق.عبر واجهة البرمجة
*79إلغاء عدم الإزعاج.عبر واجهة البرمجة
*80الدخول إلى الوردية في كل طوابيرك.عبر واجهة البرمجة
*81الخروج من الوردية في كل طوابيرك.عبر واجهة البرمجة
*90حظر رقم (المفتاح # وحده يحظر رقم آخر مكالمة).لم يُجرَّب بعد
*91رفع الحظر.لم يُجرَّب بعد
*97بريدك الصوتي، برمزك السرّي.منصّة الاختبار
*98تسجيل تحيّتك.منصّة الاختبار
*99تسجيل اسمك — يستخدمه الدليل وغرفة الاجتماعات.منصّة الاختبار
*8التقاط المكالمة التي ترنّ على المكتب المجاور.عبر واجهة البرمجة
*66الوضع: عادي · غداء · مغلق · عطلة · تلقائي.عبر واجهة البرمجة
*411الدليل بالاسم.منصّة الاختبار
*57يفتح ملفّ مكالمة مؤذية عن المكالمة التي تلقّيتها للتوّ. يتوقّف التسجيل عن الانتهاء، ويُحفَظ الوقت والمسار والصوت لأجل شكوى. ولا يحظر المتصل: ذلك قرارك أنت.لم يُجرَّب بعد
*85انتظار التحويلة: أخبِرني حين تتفرّغ.لم يُجرَّب بعد
*86إلغاء ذلك.لم يُجرَّب بعد
*82الإنصات إلى مكالمة داخل شركتك. ولا يسمعك أيٌّ من الطرفين.لم يُجرَّب بعد
*83الهمس: يسمعك زميلك وحده، لا العميل.لم يُجرَّب بعد
*84الدخول في المكالمة: يسمعك الطرفان.لم يُجرَّب بعد
*88المكالمات التي لم يردّها أحد، منطوقة — ثم اضغط 1 لمعاودة أقدمها.لم يُجرَّب بعد
*47المقسم يشرح نفسه: يتلو عليك رموزه، والمفتاح 9 للتالي والمفتاح 0 للخروج.لم يُجرَّب بعد
70Nاستلام المكالمة المعلَّقة في الموضع N.عبر واجهة البرمجة

تُطلب أثناء محادثة

الرمزماذا يفعلالتحقّق
*1سجّل هذه المكالمة الآن. ويُبلَّغ الطرفان.عبر واجهة البرمجة
*7علّقها: تبقى المكالمة مع الموسيقى ويُنطَق رقم الموضع بصوتٍ عالٍ.عبر واجهة البرمجة
##<ext>#تحويل أعمى: تمرّرها ثم تُغلق.مكالمة حقيقية
#<ext>#تحويل دون اختيار نوعه. يتحقّق المقسم إن كان هناك أحد، وإن لم يكن حوّلها تحويلًا أعمى.لم يُجرَّب بعد
*2<ext>#تحويل مرافَق: تتحدّث إلى زميلك أولًا.لم يُجرَّب بعد

أثناء الاستشارة في تحويل مرافَق

الرمزماذا يفعلالتحقّق
*1إتمام التحويل.لم يُجرَّب بعد
*0الإلغاء والعودة إلى المتصل.لم يُجرَّب بعد
*3جمعكم ثلاثتكم في المكالمة نفسها.لم يُجرَّب بعد

داخل غرفة اجتماعات

الرمزماذا يفعلالتحقّق
*6للجميع: كتم الميكروفون وفتحه.عبر واجهة البرمجة
*7للجميع: كم شخصًا في الغرفة.عبر واجهة البرمجة
*9للجميع: الخروج.عبر واجهة البرمجة
*1للمنظّم: إغلاق الغرفة دون تغيير المفتاح.عبر واجهة البرمجة
*2للمنظّم: فتحها من جديد.عبر واجهة البرمجة
*3للمنظّم: بدء التسجيل أو إيقافه.عبر واجهة البرمجة

بعض الرموز تعني شيئين ولا تتصادم: رمز التسجيل (*1) هو «سجّل الآن» في محادثة عادية، و«أكمل التحويل» أثناء الاستشارة، و«أغلق الغرفة» داخل غرفة اجتماعات. هي حالات مختلفة للهاتف نفسه، ويتولّاها كودٌ مختلف.

قبل أن تثق بهاتف جديد: هواتف المكتب والمحوّلات تعالج رموز النجمة الخاصة بها ولا تمرّرها أبدًا. فإن طلبتَ رمزًا وسمعت صمتًا ثم نغمة الطلب، فقد ابتلعه الجهاز ولم يصل إلى المقسم شيء. اطلب منّا مراجعة أي طراز جديد على قائمة اليوم قبل توزيعه.

البريد الصوتي من أي هاتفمنصّة الاختبار

اطلب رمز البريد الصوتي (*97)، وأدخل رمزك السرّي، فيكون الصندوق كله بين يديك: بلا تطبيق وبلا متصفّح. كُتب لصاحب العمل الذي يتصل من هاتف مستعار.

القائمة الرئيسية

المفتاحماذا يفعل
1الرسائل الجديدة.
2الرسائل المحفوظة.
4التحيات واسمك المسجَّل.
5تغيير رمزك السرّي.
0الخروج إلى عامل الهاتف.
9إنهاء المكالمة.

أثناء تشغيل رسالة

المفتاحماذا يفعل
1إعادتها.
2حفظها.
3حذفها. ثم اضغط 8 خلال خمس ثوانٍ للتراجع.
4معاودة الاتصال بذلك الشخص.
6التالية، مع إبقاء هذه جديدة.
7إعادة توجيهها إلى زميل مع ملاحظةٍ منك مسجَّلة قبلها.

قائمة التحيات

المفتاحماذا يفعل
1تسجيل التحية الرئيسية.
2تسجيل اسمك.
3وضع تحية إجازة.
4إزالتها.

استقبال المكالمة نفسها

مجموعة الرنين تقول «فليرنّ في عدة أماكن». وكل ما في هذه القائمة يفعل شيئًا لا تستطيعه مجموعة رنين.

  • الطوابير.عبر واجهة البرمجة الطابور يعرف كم شخصًا أمامك وكم يستغرق الأمر عادةً، فيستطيع أن يقول ذلك. وتُقاس مدة الانتظار من مكالماتك الأخيرة أنت، ولا تُختلق أبدًا — وبأقل من ثلاث عيّنات لا يقول شيئًا. وإن لم يكن أحد على الوردية، لا يُترك أحد في الانتظار.
  • معاودة الاتصال من الطابور.عبر واجهة البرمجة تُعرَض بعد انتظار، ولا تُعرَض إن كانت المكالمة على وشك أن يُردّ عليها. ويبقى الطلب بعد إعادة التشغيل، لأن من يطلبه يُغلق الخط، وتدخل المعاودة في مقدّمة الصفّ، وهذا ما وُعد به.
  • غرف الاجتماعات.عبر واجهة البرمجة غرفة برقم ومفتاحين: واحد للدخول وآخر لإدارتها. ولا يحتاج أحد إلى حساب في أي مكان. ويُعلَن الدخول والخروج بالاسم الذي سجّله كل شخص بنفسه.
  • دليل الأسماء.منصّة الاختبار يتهجّى المتصل اسمًا على لوحة الأرقام فيُوصَل. وتُفهرَس كل كلمة من الاسم على حدة، لأن اسمَي العائلة أمر معتاد هنا، والبحث بالأول وحده يجد نصف الشركة. وتُوحَّد الحركات وحرف الـñ، فيُعثر على «Muñoz» بطلب 686.
  • الصفر لعامل الهاتف.عبر واجهة البرمجة لعلّه أكثر توقّع شائع عن الهاتف: أن تصل إلى إنسان. ينحدر الصفر من عامل هاتفك إلى الصندوق العام إلى قولها بصوتٍ مسموع — ولا ينتهي بإغلاقٍ صامت أبدًا.
  • التعليق والالتقاط.عبر واجهة البرمجة علّق مكالمة فتنتظر في موضع مرقّم مع الموسيقى بينما تمشي إلى مكتب آخر. ويستطيع أي أحد استعادتها بطلب رقم ذلك الموضع. أما التقاط الهاتف الذي يرنّ بجوارك فرمزه هو (*8).

لمن يدير العمل

القنوات: الضمان والإعارة والردّعبر واجهة البرمجة

هذا هو الجزء الذي لا يستطيع سقفٌ جامد أن يفعله، ويستحق أن تفهمه قبل اختيار الباقة.

  • المضمونة. المكالمات المتزامنة التي تبيعها باقتك. تتّسع دائمًا مهما فعل المقسم، ولا يستطيع أحد أن يسحبها منك.
  • المُعارة. فوق ضمانك تستخدم ما يتوفّر في المقسم. في معظم الأيام ستكون هنا، ولا يكلّف ذلك شيئًا إضافيًا.
  • الاحتياطي. وسادةٌ من القنوات لا تُعار لأحد، حتى يستطيع كل مشترك بلوغ ضمانه في أي لحظة.
  • الردّ. حين يضيق المقسم، يمكن ردّ المكالمات المُعارة لحماية ضمان غيرك. وهذا لا يسري إلا على الحسابات التي فعّلته، ولا يمسّ أبدًا مكالمةً داخل ضمان، ولا مكالمة طوارئ، ولا يحدث بصمت: يتكلّم المقسم قبل أن يُفلت.
  • لا يمكن بيعه مرّتين. مجموع كل الضمانات مضافًا إليه الاحتياطي يجب أن يتّسع. يتحقّق التفعيل من ذلك ويرفض باقةً لا تتّسع، وهذا ما يجعل لكلمة «مضمون» معنى.
  • وترى متى عضّ الضيق. يُبلَّغ عن الازدحام على شكل وقائع بساعتها، لا كمجموع شهري. «اثنتا عشرة مكالمة مرفوضة في ثلاثين يومًا» تُقرأ كضجيج؛ أما «الثلاثاء الماضي بين العاشرة والحادية عشرة سمع خمسة أشخاص إشارة انشغال» فشيء يمكن التصرّف بناءً عليه.

ماذا يحدث حين يتعطّل شيء

يُحكَم على المقسم يوم ينقطع التيار، لا يوم يعمل كل شيء.

  • أكثر من مخرج. يصل المقسم إلى العالم الخارجي عبر عدة اتصالات مستقلّة ويختار بينها وحده. وأنت لا تضبط هذا ولا تراه يحدث.
  • «يعمل» تُقاس على الشيء الصحيح. لا يدخل اتصالٌ في الاختيار إلا إذا كان يصل إلى الإنترنت وإلى شبكة الهاتف معًا. والاكتفاء بالأول هو كيف ينتهي مقسمٌ بلا خطّ وكل المصابيح خضراء.
  • يعود وحده بعد انقطاع التيار. حين يعود التيار، يبدأ المقسم وأجهزة الشبكة في وقت واحد، وليس دائمًا بالترتيب الصحيح. وبدل الوثوق بذلك الترتيب، يظلّ المقسم يقارن ما لديه فعلًا بما ينبغي أن يكون لديه ويصلح نفسه — بسقفٍ لعدد المحاولات، حتى يُصعَّد العطل الحقيقي بدل أن يدور في حلقة.
  • ولا يقطع مكالمة ليصلح نفسه. أي إصلاح قد يقطع محادثات ينتظر حتى لا تبقى واحدة.

التسجيلات ورسائل البريد الصوتي تُحفَظ خارج المقسم، فتبقى حتى لو ذهبت الآلة نفسها.

الباقات والدقائق

5 باقات، من $100 إلى $300 سنويًا، ورقم واحد لكل ترخيص. والدقيقة الواردة على رقم كوستاريكي بـ$0.00.

الباقةمتزامنة، حتىمنها مضمونةالتحويلاتالحفظ (أيام)سنويًا
VOICE I3133$100
VOICE II4244$150
VOICE III6366$200
VOICE IV8488$250
VOICE V105بلا حدّ28$300

الدقائق

الوجهةللدقيقة
المكالمات الواردة$0.00
كوستاريكا · أرضي$0.03
كوستاريكا · جوال$0.08
أمريكا الوسطى$0.45
الكاريبي$0.55
بقية العالم$2.30

الأسعار بالدولار الأمريكي شاملةً الضرائب. ويقيس المشغّل مكالمات الجوال بالثانية. كل ترخيص يشمل 1 رقمًا؛ والأرقام الإضافية تتشارك المقسم نفسه والمسارات نفسها واللوحة نفسها.

التسجيل، والقانونعبر واجهة البرمجة

الصوت المسجَّل أصوات أناس آخرين. يحكمه القانون الكوستاريكي 8968، ومن هناك جاء التصميم، لا مما هو أيسر.

  • أنت تقرّر ما يُسجَّل.عبر واجهة البرمجة كل شيء، أو تحويلات بعينها، أو المكالمات الواردة على رقم بعينه. أو لا شيء، وهو جواب مشروع.
  • مدة الحفظ تأتي مع باقتك. تُمحى التسجيلات تلقائيًا عند انتهاء مدّتها. والاستثناء الوحيد تسجيلٌ مرتبط بملفّ مكالمة مؤذية، فيتوقّف عن الانتهاء حتى تُغلق الملفّ — وإغلاقه يعيد مهلةً عادية، لا «امحُه الآن».
  • مشاركة تسجيل ليست منح وصول. رابط موقَّع يشغّل تسجيلًا واحدًا، وتنتهي صلاحيته وحدها، ويمكن إبطاله. ومن ترسله إليه لا يرى حسابك أبدًا.
  • كل استماع مسجَّل. من شغّل أي تسجيل ومتى. إنه صوت شخص آخر: وأن تعرف من سمعه جزء من حفظه.
  • ويمكن تصنيفها. عميل، أو عميل محتمل، أو داخلي. ولا قيمة افتراضية عن قصد: «غير مصنَّف» صادق، والوسم الذي خمّنته الآلة لا يمكن تمييزه لاحقًا عن وسمٍ اختاره إنسان.

يُبلَّغ الطرفان دائمًا. أن تطلب من المقسم أن يسجّل يعيد إليك أيضًا واجب الإعلان — ولا يمكن فصل الاثنين، لأن فصلهما هو كيف ينتهي أحدهم مسجَّلًا دون أن يدري. وفي غرفة الاجتماعات يُبلَّغ كل شخص عند دخوله.

الحدود والحماية والتراجع

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

  • سقف إنفاق، يومي وشهري.منصّة الاختبار هذا ما يمنع بيانات اعتماد مسروقة من أن تكلّف مالًا. وعند بلوغ السقف تتوقّف المكالمات.
  • ما يجوز لكل تحويلة أن تطلبه.عبر واجهة البرمجة داخلي فقط، أو محلّي، أو جوّال، أو كل شيء. فلا سبب لأن يستطيع هاتف المستودع الاتصال برقمٍ مدفوع. ومكالمات الطوارئ لا تتأثّر بهذا أبدًا.
  • السعر قبل الطلب.عبر واجهة البرمجة اسأل كم يكلّف رقم معيّن، فتحسب الجواب الآلية نفسها التي ستُجري المكالمة فعلًا — لا جدول تعرفة قد لا يكون هو المطبَّق.
  • إنذار احتيال يراقب السلوك.لم يُجرَّب بعد سرعة غير معتادة، أو بلد لم تتصل به قط، أو ساعة لا يعمل فيها أحد. ينبّه ولا يقطع: فالإيجابية الكاذبة هنا ليست تنبيهًا مزعجًا، بل مكالمة لم تحدث. ويحتاج إلى إشارتين قبل أن يقول شيئًا، لأن إنذارًا ينطلق يوميًا يُتجاهَل.
  • من يتصل مرارًا يُوسَم.لم يُجرَّب بعد الرقم نفسه خمس مرات في دقيقتين ليس عميلًا ملحاحًا بل مُهاتِفًا آليًا. وهو ينبّه فقط في وضعه الأصلي؛ أما الحظر التلقائي فخانةٌ تؤشّرها أنت، لأن إيجابية كاذبة تكلّفك عميلًا لن يستطيع الاتصال بك أبدًا.
  • ملفّ لمكالمة مؤذية.لم يُجرَّب بعد الوقت والمسار والصوت، محفوظة معًا لأجل شكوى. وفتح ملفّ لا يحظر المتصل: كل مكالمة جديدة دليل إضافي، وذلك قرارك أنت لا قرارنا.
  • مدى إمكان الوصول إلى أجهزتك.عبر واجهة البرمجة ليس زمن تشغيلنا نحن، بل زمنك أنت. ويُظهر دائمًا كم من الفترة قِيس فعلًا، لأن نسبةً تُسقط بصمت الساعات التي لم ينظر إليها أحد تُخطئ دائمًا في الاتجاه المريح.
  • ما الذي تغيّر، ومن غيّره، وكيف تتراجع.عبر واجهة البرمجة «كان يعمل أمس» سؤال له جواب. كل تغيير في الإعداد يُسجَّل ويمكن التراجع عنه، والتراجع يتحقّق أن أحدًا آخر لم يمسّ تلك الحقول في الأثناء بدل أن يكتب فوقها بصمت.

ما هو مُطفأ، ولماذا

الدليل الذي يذكر ما يعمل فقط يُجبرك على اكتشاف الباقي وحدك، ويُكتشف دائمًا في أسوأ لحظة. وهذه القائمة تُولَّد من المقسم نفسه، فلا تستطيع أن تصف شيئًا بأنه مُطفأ بعد أن يُشغَّل.

ماذا يفعللماذا
البريد الصوتي إلى البريد الإلكترونيالصوت مرفقًا، دون الاتصال بالصندوق. يحتاج إلى بيانات اعتماد بريد للصندوق، وهي غير موجودة بعد.
الاحتساب التلقائي بالدقيقةالقياس يعمل وكل مكالمة تُقاس؛ وما ليس مفعَّلًا هو الخصم من رصيدٍ مدفوعٍ مسبقًا. وإلى ذلك الحين تُفوتَر الدقائق.
عنوان احتياطي للأجهزةحتى تنتقل الهواتف وحدها بين مدخلَي المقسم. يحتاج إلى بيانات اعتماد للنطاق بصلاحية كتابة؛ والتي لدينا تقرأ فقط.
الفاكس الواردكشف النغمة والإخبار بها مبنيّ، وهو مُطفأ عن قصد: الكشف يستمع إلى كل مكالمة واردة، وإيجابيةٌ كاذبة تُسقط مكالمةً صوتيةً حقيقية. ويبقى مُطفأً إلى أن يوجد فاكس حقيقي نقيسه به.

لمن يدمج

واجهة البرمجةعبر واجهة البرمجة

اللوحة ليست إلا عميلًا من عملاء هذه الواجهة. وما تغيّره بيدك يمكن تغييره ببرنامج، بمفتاحٍ يخصّ حسابك.

curl -H "authorization: Bearer <clave>" \
  https://api.voice.forhosting.com/inquilinos/<cuenta>/numeros

النطاقات

النطاقماذا يفعل
sistemaالتزويد، فوق الحسابات. ولن يُصدَر لك واحد من هذه.
inquilinoحسابك، قراءةً وكتابة. هذا هو المفتاح الذي تدمج به.
lecturaحسابك، بـGET فقط. للوحات المعلومات التي لا يجوز أن تغيّر شيئًا.
sesionالمدى نفسه لمفتاح حسابك، لكنه ينتهي خلال دقائق. وهو ما تستخدمه اللوحة، حتى لا يحتفظ متصفّحٌ ببيانات اعتماد دائمة.
dispositivoجهاز واحد لتحويلة واحدة، وينتهي خلال دقائق. هو ما يحمله تطبيق الهاتف: لا يصل إلا إلى ما يحتاجه الهاتف، ولتحويلته فقط.

حين يسوء شيء

الرمزماذا يفعل
400الطلب مشوّه، أو قيمة ليست مما نقبله. والرسالة تقول أيّها.
401بلا مفتاح، أو بمفتاح مجهول، أو بجلسة انتهت صلاحيتها.
403المفتاح صحيح لكنه لا يملك هذا: بيانات حساب آخر، أو مسار تزويد، أو كتابة بمفتاح للقراءة فقط.
404لا وجود لذلك في حسابك.
405المسار موجود، والطريقة لا. ونميّزه عن 404 عن قصد: يوفّر ساعة.
503 · 504تعذّر الوصول إلى المقسم، أو لم يردّ في الوقت المتاح. ولا يُجاب عن ذلك أبدًا بـ«ليس لديك شيء»: فألّا تستطيع النظر غير أن لا يكون هناك شيء.

كل ما يمكن أن ترده الواجهة البرمجية عند الرفض

هذه هي السلاسل النصية التي تعيدها الواجهة في الحقل error حرفيًا، مقروءة من الشيفرة المصدرية للمقسم. تصدر بالإسبانية وتُعرض هنا كما هي عن قصد: ما عليك مطابقته هو ما يصلك، لا ترجمته. تشير … إلى الموضع الذي تُدرج فيه قيمة.

كل خطأ يحمل رمزًا ثابتًا. اعتمد على codigo لا على نص الرسالة. وهو موجود دائمًا: وما لا يعلن رمزًا خاصًا يأخذ رمز فئته المشتق من حالة HTTP. نص error مكتوب ليقرأه إنسان وقد تُعاد صياغته؛ أما الرمز فلا.

{ "error": "…", "codigo": "de_otra_cuenta" }
الرمزHTTPمتى يصلك
mala_peticion400الطلب غير سليم، أو أن إحدى القيم ليست مما نقبله. والرسالة تحدّد أيّها.
no_autorizado401بلا مفتاح، أو بمفتاح مجهول، أو بجلسة منتهية.
prohibido403المفتاح صحيح لكنه لا يملك صلاحية هذا الإجراء.
no_existe404لا يوجد شيء لتنفيذ الإجراء عليه.
metodo_no_permitido405المسار موجود، أما هذه الطريقة فلا. ونفرّق بينه وبين مسار غير موجود عن قصد: يوفّر ذلك ساعة من البحث.
conflicto409حالة الحساب لا تسمح بذلك الآن.
ambito_insuficienteمفتاحك لا يبلغ هذا المسار. التزويد من شأن البوابة لا من شأنك.
canales_por_troncalلا يمكن قبول توزيع القنوات المُرسل عند التهيئة، ولا يُحفظ أي جزء منه. يوضّح التفصيل ما الخطأ. هذا من شأن التهيئة، لا من شأن حسابك.
central_no_disponibleلا يمكن بلوغ المقسم الآن. أعد المحاولة بفواصل متزايدة: لا خطأ في طلبك.
central_sin_respuestaلم يردّ المقسم في الوقت المحدّد. المعاملة نفسها كسابقه، والحذر نفسه: قد تكون الكتابة قد وصلت وقد لا.
clase_de_servicioهذه القيمة ليست من صلاحيات الاتصال التي يمكن أن تحملها التحويلة.
clave_sin_cuentaالمفتاح غير مرتبط بأي حساب.
de_otra_cuentaيخصّ حسابًا آخر — أو لا وجود له في حسابك. الحالتان تتشاركان الرمز عن قصد: التفريق بينهما يكشف ما إذا كان موجودًا.
falta_credencialلم ترسل أي مفتاح.
garantia_no_cabeلم تتبقَّ سعة مضمونة لما طُلب. هذا ليس عطلًا: إنه ما يمنع بيع القناة نفسها مرتين. توضّح الرسالة كم تبقّى.
no_editableهذا الحقل يغيّره مزوّدك، ولا يُعدَّل من هنا.
no_existeلا يوجد شيء لتنفيذ الإجراء عليه.
protocolo_incorrectoهذا المسار لا يتحدث إلا WebSocket، وقد طلبته عبر HTTP عادي.
solo_lecturaمفتاحك للقراءة فقط وهذا الإجراء يكتب.
ya_existeيوجد بالفعل شيء بهذا الاسم أو الرقم. أعد المحاولة بغيره لا بالحمولة نفسها.
الرمزكمالرسالة
400163
  • 'extension_id' y 'numero' son excluyentes
  • 'hasta' tiene que ser posterior a 'desde' (o al momento de abrirlo)
  • 'numero' no parece un número
  • 'segmentos' lleva caracteres que no acepto
  • alert_info: máximo 200 caracteres
  • alert_info: no puede llevar saltos de línea
  • ambito: …
  • antelacion_horas: número de horas
  • avisar_el es posterior a la cita: no se puede recordar algo que ya pasó
  • bloque de más de 10.000: cárgalo en trozos
  • cada miembro necesita extension_id o externo
  • canales_garantizados y canales_max van los dos como mapa por troncal, o los dos como número: no se mezclan
  • canales_troncal no se escribe directo: mande canales_garantizados y canales_max como mapa por troncal
  • capacidad: falta 'tipo_cap' (p. ej. 'text.summarize')
  • categoria: …
  • categoría: …
  • clase_servicio: …
  • condicion: el caso … no dice qué variable mira
  • condicion: el caso … va a '…', que no es un destino
  • condicion: hace falta al menos un caso en 'casos'
  • consulta: 'url' debe empezar por http:// o https://
  • consulta: espera.aviso_cada_s no baja de 5 segundos
  • contesta: hace falta decir quién atiende ({tipo, id})
  • cuando: fecha ISO de la cita
  • demasiadas piezas (máx. 24)
  • desde/hasta con formato 'HH:MM'
  • destino externo: número inválido
  • destino: …
  • dia: 0 (domingo) a 6 (sábado)
  • el alias debe tener al menos 3 dígitos
  • el aviso de buzón admite hasta 5 teléfonos
  • el bloque debe tener números de la misma longitud
  • el destino '…' necesita el id de un paso
  • el destino '…' necesita un id
  • el destino es de otro inquilino
  • el destino es el mismo número que se está retirando: quien oiga esto acaba de marcarlo
  • el disco no tiene ninguna pista activa con audio
  • el final del bloque es menor que el inicio
  • el guion necesita un nombre
  • el mapa de canales está vacío
  • el modo de aviso es 'tras' (uno detrás de otro) o 'a_la_vez'
  • el motor de llamadas no está listo
  • el número interno debe tener 3 o 4 dígitos
  • el número … está '…', no asignado
  • el precio (…) está por debajo del coste (…)
  • el ámbito 'dispositivo' necesita extensión y dispositivo
  • el ámbito '…' necesita inquilino
  • el … no es de esta cuenta
  • el … no está asignado a este inquilino
  • entrada.verificar: 'url' debe empezar por http:// o https://
  • entrada: exito.dest_tipo debe ser uno de …
  • entrada: falta 'exito.dest_tipo' (a dónde va cuando la entrada es válida)
  • entrada: falta 'texto' (lo que se le pide a quien llama)
  • entrada: max no pasa de 32 dígitos
  • es un feriado nacional: crea una excepción con cerrado:false
  • es un mantenimiento global: lo cierra quien opera la central
  • esa extensión es de otro inquilino
  • esa llamada no es de este inquilino
  • ese apunte no cambió ninguna columna: no hay nada que deshacer
  • ese dispositivo no es de esa extensión, o esa extensión no es de esta cuenta
  • ese guion lo usan …: …
  • ese turno lo usan: …
  • estado: 'activo' o 'suspendido'
  • estado: …
  • estos campos los cambia su proveedor: …
  • estrategia: rotativo|todos|menos_usada|orden
  • estrategia: …
  • evento desconocido: …. Válidos: …
  • extensión inexistente o de otro inquilino
  • falta 'extension_id' o 'miembro_id'
  • falta 'extension_id' o 'numero'
  • falta 'inquilino'
  • falta 'motivo'
  • falta 'nombre'
  • falta 'numero'
  • falta 'q'
  • falta 'segmentos' o 'decir'
  • falta 'teclas' (los dígitos marcados)
  • falta 'texto'
  • falta 'titulo'
  • falta 'valor'
  • falta dispositivo_id: a qué aparato se mueve
  • falta el nombre
  • falta el número nuevo (destino)
  • falta extension_id
  • falta inquilino, extensión o quién lo pide
  • fecha: 'AAAA-MM-DD' (una vez) o '--MM-DD' (todos los años)
  • hace falta audio_clave o texto
  • hace falta extension_id o externo
  • hace falta la llamada o el número
  • hace falta miembro_id o extension_id
  • hay varias troncales nacionales con la misma prioridad y ninguna es la de por defecto:
  • hay … ruta(s) apuntando a este disco (…): cámbialas primero
  • horario inexistente o de otro inquilino
  • instalacion: el identificador de la instalación de la app, de 8 a 128 caracteres (letras, dígitos, . _ : -)
  • la búsqueda necesita al menos 2 caracteres
  • la clave de la sala y la del organizador no pueden ser la misma
  • la extensión que contesta no es de este inquilino
  • la extensión «…» es de otro inquilino
  • la extensión «…» no existe
  • la extensión … no existe
  • la garantía (…) no puede pasar del techo (…)
  • la garantía de este inquilino está repartida en … troncales:
  • la pausa «…» debe ir de 1 a 30 segundos
  • la tecla … no estaba definida
  • la troncal '…' no existe o no está activa
  • los días van de 0 (domingo) a 6 (sábado)
  • mapa de canales por troncal inválido
  • minutos: un número mayor que cero
  • modo: …
  • modo: … o null para volver al automático
  • modo_presion: firme|elastica|cede
  • nada que cambiar: campos aceptados = categoria, notas, troncal_id
  • no caben … canales garantizados en …: quedan …
  • no caben … canales garantizados: quedan … libres
  • no está archivada: no hay audio que analizar
  • no hay motor de audio
  • no pude originar la prueba: …
  • no se puede esperar a uno mismo
  • no sé marcar '…'
  • numero: 1..99
  • numero: hace falta el número que se quiere marcar
  • numero: hace falta un número marcable
  • número de sígueme inválido: …
  • número externo inválido
  • número externo inválido: …
  • número inválido: …
  • número no válido para devolver la llamada
  • número vacío
  • orden: …
  • paises debe ser una lista de prefijos
  • para '…' el rango es …-… (o usa 4 dígitos)
  • para ambito '…' hace falta ambito_id
  • patrón inválido
  • patrón inválido: …
  • plan desconocido: …
  • plantilla: …
  • rol: visitante|agente|sistema
  • se espera 'filas': el CDR del operador
  • se esperaba una lista de contactos
  • sólo el ámbito 'dispositivo' se ata a una extensión y a un dispositivo
  • sólo las consultas tienen secreto
  • sólo los ámbitos 'sesion' y 'dispositivo' admiten 'minutos'
  • tecla inválida: …
  • tipo: …
  • transporte: …
  • un IVR sin saludo deja al llamante en silencio: pon saludo_texto o saludo_audio
  • una troncal sin host no puede activarse
  • url debe empezar por http:// o https://
  • url inválida
  • «…» no es una frase que un guion pueda sustituir
  • «…» no es una hora válida
  • «…» no es una hora: se escribe HH:MM
  • «…» no parece un teléfono
  • «…» no vale como habilidad: letras, números, guion o guion bajo
  • «…» no vale: sólo dígitos, asterisco, almohadilla o una pausa tipo P2
  • … es un paso de tipo '…', no '…'
  • …: '…' no es posterior a '…'
  • …: de 4 a 8 dígitos
  • …: demasiado fácil de adivinar
  • …: falta 'respaldo.dest_tipo'. Un paso sin respaldo cuelga al que llama
  • …: número inválido
  • …: respaldo.dest_tipo debe ser uno de …
4011
  • falta la clave de API
40311
  • clave de chat inválida
  • enlace agotado
  • esa cuenta no es tuya
  • esa extensión está suspendida
  • esa extensión no es la de este aparato
  • ese aparato está suspendido: se reactiva desde el panel
  • ese cambio no es de esta cuenta
  • esta clave es de solo lectura
  • esta clave no está atada a ninguna cuenta
  • esta operación necesita una clave de sistema
  • esta operación no está abierta a la credencial de un aparato
40443
  • agente: no está en esta cola
  • agente: no existe en esta cuenta
  • buzón: no existe en esta cuenta
  • dispositivo
  • el audio no está disponible
  • el destino …:… no existe
  • el número … no es de esta central
  • el … no tiene ruta de entrada
  • el … no tiene ruta en esta cuenta
  • enlace
  • enlace caducado
  • enlace no válido o caducado
  • enlace revocado
  • esa cita no existe en esta cuenta
  • esa extensión no existe en esta cuenta
  • esa frase no existe en este disco
  • esa grabación aún no está archivada
  • esa pista no existe en este disco
  • ese disco no existe en esta cuenta
  • ese dispositivo no existe en esta cuenta
  • ese guion no existe
  • ese mensaje aún no está archivado
  • extensión
  • feriado
  • la central no está lista
  • la grabación ya no existe
  • llamada
  • mantenimiento
  • mensaje
  • mensaje: no es de este buzón
  • miembro: no está en este grupo
  • no está en la lista
  • no existe en esta cuenta
  • no existe … …
  • no pude traer el audio del archivo
  • provisión no válida
  • recurso desconocido
  • regla
  • saludo: no es de este buzón
  • sesión
  • …: '…' no existe
  • …: no existe
  • …: no existe en esta cuenta
40925
  • demasiados dispositivos en la extensión …
  • el menú se muerde la cola: …
  • el plan '…' permite … extensiones
  • el usuario SIP '…' ya existe
  • el … está asignado a …: libéralo primero
  • el … está enfriando hasta …: reasignarlo antes hace que el cliente nuevo reciba las llamadas del anterior. Usa forzar:true si asumes eso.
  • el … está retirado del servicio
  • el … tiene … llamada(s) en el CDR: retíralo, no lo borres
  • el … ya es marcable en este inquilino
  • el … ya está asignado a …
  • el … ya está en uso en este inquilino
  • el … ya tiene ruta: edítala en vez de crear otra
  • esa provisión ya se usó
  • ese mensaje no está en la papelera
  • ese número ya está en el inventario
  • esto ya no es lo que dejó ese cambio: … se tocó después.
  • la fila …:… ya no existe. Deshacer un cambio no resucita lo borrado:
  • la troncal tiene garantías vendidas en … inquilino(s):
  • no quedan números libres en el rango …-…
  • no se pudo descifrar la provisión
  • no se puede borrar: le apuntan ….
  • provisión caducada
  • referencia inexistente
  • ya existe
  • ya existe otro con ese valor

243 رسالة مختلفة في 289 موضعًا من شيفرة المقسم. تُشتق مع كل عملية بناء: ما يتغيّر هناك يتغيّر هنا.

لا حدّ للمعدّل اليوم إلا بالكاد. الحدّ الوحيد مهلةُ ثوانٍ قليلة بين محاولات فتح هاتف المتصفّح. ولا توجد حصّة عامة، ونفضّل أن نقولها على أن تبني على افتراض. كن معقولًا، وإن كنت تخطّط لشيء ثقيل فأخبرنا أولًا لنقيسه معك لا بعدك.

إلى أين تصل

المجالنقاط النهايةأمثلة
صناديق البريد الصوتي13GET /buzones POST /buzones DELETE /buzones/:buz
التحويلات13GET /extensiones POST /extensiones DELETE /extensiones/:ext
الطوابير12GET /colas POST /colas DELETE /colas/:cola
موسيقى الانتظار12GET /discos POST /discos DELETE /discos/:disco
التسجيلات9GET /grabaciones PUT /grabaciones/:grabacion/categoria DELETE /grabaciones/:grb
مجموعات الرنين8GET /grupos POST /grupos DELETE /grupos/:grp
القوائم الصوتية8GET /ivrs POST /ivrs DELETE /ivrs/:ivr
ورديات المناوبة8GET /turnos POST /turnos DELETE /turnos/:turno
غرف الاجتماعات7GET /conferencias POST /conferencias DELETE /conferencias/:sala
أوقات الدوام7GET /horarios POST /horarios DELETE /horarios/:hor
Webhooks7GET /webhooks POST /webhooks DELETE /webhooks/:whk
خطوات المسار القابل للبرمجة6GET /pasos POST /pasos DELETE /pasos/:pso
ما يقوله كل خط5GET /guiones POST /guiones DELETE /guiones/:gui
الرسائل5GET /mensajes DELETE /mensajes/:msg GET /mensajes/:msg
مسارات الدخول5GET /rutas POST /rutas DELETE /rutas/:ruta
الأسماء البديلة القابلة للطلب4GET /alias POST /alias DELETE /alias/:als
تذكيرات المواعيد4GET /citas POST /citas DELETE /citas/:cita
جهات اتصالك4GET /contactos POST /contactos DELETE /contactos/:con
محادثة موصولة بالصوت4GET /conversaciones GET /conversaciones/:cnv POST /conversaciones/:cnv/cerrar
الأجهزة4DELETE /dispositivos/:disp POST /dispositivos/:disp/estado POST /dispositivos/:disp/provision
ملفّات المكالمات المؤذية4GET /expedientes POST /expedientes GET /expedientes/:exp
قواعد التسجيل4GET /grabacion/decidir GET /grabacion/reglas PUT /grabacion/reglas
سجل المكالمات4GET /llamadas GET /llamadas/:llamada GET /llamadas/csv
الأرقام4GET /numeros DELETE /numeros/:numero/aviso-cambio GET /numeros/:numero/aviso-cambio
الخطوط المتزامنة3GET /canales GET /canales/episodios PUT /canales/modo
العُطل3GET /feriados POST /feriados DELETE /feriados/:fer
سجل التغييرات والتراجع3GET /historial GET /historial/:cambio POST /historial/:cambio/revertir
قائمة الحظر3GET /lista-negra POST /lista-negra DELETE /lista-negra/:neg
نوافذ الصيانة3GET /mantenimientos POST /mantenimientos POST /mantenimientos/:mnt/cerrar
حسابك وحالته2GET / PATCH /
الدليل2GET /directorio GET /directorio/buscar
روابط المشاركة2GET /enlaces DELETE /enlaces/:token
أخرى1GET /guiones/claves
المكالمات المعلَّقة1GET /aparcadas
من يتصل، وفي أي شأن1GET /contexto
كم تكلّف مكالمة1GET /cotizar-llamada
إلى أين يمكن إرسال مكالمة1GET /destinos
إمكان الوصول إلى أجهزتك1GET /disponibilidad
كشف الحساب1GET /estado-cuenta
القناة المباشرة1POST /eventos/ticket
المكالمات الجارية1GET /llamadas-en-curso
الاتصال بنقرة1POST /llamar
عامل الهاتف1PUT /operadora
إلى أين تتصل هذه الشركة1GET /paises
قوالب البداية1POST /plantilla
ما يجوز طلبه1GET /politica-salida
أن يتصل بك المقسم ويشغّل لك شيئًا1POST /probar-audio
اختبار أين تحطّ المكالمة1GET /probar-entrada
تجربة مكالمة صادرة دون إجرائها1GET /probar-salida
الرصيد1GET /saldo
المكالمات التي لم يردّها أحد1GET /sin-devolver
وصل رقمين من الخارج1POST /unir
المتصلون ذوو الأولوية1GET /vips
الهاتف في المتصفّح1POST /webphone/sesion

269 نقطة نهاية في المجموع، قُرئت من المقسم نفسه في 2026-09-04.

هذا الجدول ملخّص. أما القائمة التي لا يمكن أن تتقادم فهي التي يولّدها المقسم عن نفسه: GET /api.

كل نقطة وصول، واحدة تلو الأخرى

مقروءة من موجّه المقسم نفسه، فلا يمكنها وصف مسار غير موجود ولا إغفال مسار موجود. لا يظهر هنا إلا نطاق حسابك: مسارات التزويد تخصّ البوابة، ولن يُسلَّم إليك مفتاح يصل إليها.

ماذا يفعلما تفعلهمثال
GET /guiones/clavesQué frases admite un guion
GET /عبر واجهة البرمجة
PATCH /Editar la ficha (el cliente, sus datos; plan y límites, el portal)عبر واجهة البرمجة
GET /aliasعبر واجهة البرمجة
POST /aliasعبر واجهة البرمجة
DELETE /alias/:alsعبر واجهة البرمجة
PATCH /alias/:alsعبر واجهة البرمجة
GET /aparcadasLas llamadas aparcadas ahora mismo (#60)عبر واجهة البرمجةعرضه
GET /buzonesمكالمة حقيقية
POST /buzonesمكالمة حقيقية
DELETE /buzones/:buzمكالمة حقيقية
GET /buzones/:buzمكالمة حقيقية
PATCH /buzones/:buzSaludo, correo, transcripción, duración máximaعبر واجهة البرمجة
GET /buzones/:buz/mensajesعبر واجهة البرمجة
PUT /buzones/:buzon/clavePoner o quitar la clave del buzón (#10)منصّة الاختبار
GET /buzones/:buzon/ocupacionCuántos mensajes hay y cuántos caben (#14)منصّة الاختبار
GET /buzones/:buzon/papeleraLo borrado que todavía se puede recuperar (#15)منصّة الاختبار
POST /buzones/:buzon/papelera/:mensaje/recuperarDeshacer un borrado (#15)منصّة الاختبار
GET /buzones/:buzon/saludosLos saludos del buzón, por motivoمنصّة الاختبار
POST /buzones/:buzon/saludosPoner el saludo de un motivo (normal, ocupado, vacaciones…)منصّة الاختبار
DELETE /buzones/:buzon/saludos/:saludoمنصّة الاختبار
GET /canalesعبر واجهة البرمجة
GET /canales/episodiosعبر واجهة البرمجة
PUT /canales/modoعبر واجهة البرمجة
GET /citasعبر واجهة البرمجة
POST /citasProgramar un recordatorio de cita por teléfonoعبر واجهة البرمجةعرضه
DELETE /citas/:citaعبر واجهة البرمجةعرضه
GET /citas/:citaعبر واجهة البرمجةعرضه
GET /colasعبر واجهة البرمجةعرضه
POST /colasCrear una cola de espera con agentesعبر واجهة البرمجةعرضه
DELETE /colas/:colaعبر واجهة البرمجة
GET /colas/:colaعبر واجهة البرمجةعرضه
PUT /colas/:colaعبر واجهة البرمجةعرضه
GET /colas/:cola/callbacksLas devoluciones de llamada pedidasعبر واجهة البرمجةعرضه
GET /colas/:cola/estadoCuánta gente espera, quién está de turno y cuánto se tardaعبر واجهة البرمجة
GET /colas/:cola/habilidadesQué habilidades existen hoy en esta cola
POST /colas/:cola/miembrosAñadir un agente (extensión o número de fuera)عبر واجهة البرمجة
DELETE /colas/:cola/miembros/:miembroعبر واجهة البرمجة
PUT /colas/:cola/miembros/:miembro/habilidadesLas etiquetas de un agente (#70)
POST /colas/turnoEntrar o salir de turno (lo mismo que *80 / *81)عبر واجهة البرمجة
GET /conferenciasعبر واجهة البرمجة
POST /conferenciasCrear una sala con número y claveعبر واجهة البرمجةعرضه
DELETE /conferencias/:salaعبر واجهة البرمجة
GET /conferencias/:salaعبر واجهة البرمجةعرضه
PUT /conferencias/:salaCambiar la sala (las claves se cambian, no se leen)عبر واجهة البرمجة
GET /conferencias/:sala/historialQuién estuvo y cuántoعبر واجهة البرمجة
POST /conferencias/:sala/invitarLlamar a alguien y meterlo en la salaعبر واجهة البرمجة
GET /contactosعبر واجهة البرمجة
POST /contactosAlta o importación masivaعبر واجهة البرمجة
DELETE /contactos/:conعبر واجهة البرمجة
PUT /contactos/:contacto/vipMarcar o quitar el VIP de un contacto
GET /contextoQuién llama y de qué habló la última vezعبر واجهة البرمجة
GET /conversacionesمنصّة الاختبار
GET /conversaciones/:cnvمنصّة الاختبار
POST /conversaciones/:cnv/cerrarمنصّة الاختبار
POST /conversaciones/:cnv/turnosمنصّة الاختبار
GET /cotizar-llamadaCuánto costaría llamar a ese número, antes de marcarloعبر واجهة البرمجة
GET /destinosQué destinos se pueden elegir en esta cuentaمكالمة حقيقية
GET /directorioQuién sale en el directorio por nombreمنصّة الاختبار
GET /directorio/buscarA quién encontraría el directorio con esas teclasمنصّة الاختبار
GET /discosعبر واجهة البرمجة
POST /discosعبر واجهة البرمجة
DELETE /discos/:discoعبر واجهة البرمجة
GET /discos/:discoعبر واجهة البرمجة
PATCH /discos/:discoعبر واجهة البرمجة
GET /discos/:disco/estadisticasعبر واجهة البرمجة
GET /discos/:disco/frasesعبر واجهة البرمجة
PUT /discos/:disco/frasesعبر واجهة البرمجة
DELETE /discos/:disco/frases/:fraseعبر واجهة البرمجة
PUT /discos/:disco/pistasعبر واجهة البرمجة
DELETE /discos/:disco/pistas/:pistaعبر واجهة البرمجة
GET /discos/:disco/probarعبر واجهة البرمجة
GET /disponibilidadCuánto tiempo estuvo arriba cada extensiónعبر واجهة البرمجة
DELETE /dispositivos/:dispRevocar una credencialهاتف حقيقي
POST /dispositivos/:disp/estadoSuspender o reactivar un dispositivoهاتف حقيقي
POST /dispositivos/:disp/provisionEmitir un token para configurar la app sin teclear la claveعبر واجهة البرمجة
POST /dispositivos/:disp/rotarCambiar la clave de un dispositivoهاتف حقيقي
GET /enlacesمنصّة الاختبار
DELETE /enlaces/:tokenRevocar un enlace compartido por errorمنصّة الاختبار
GET /estado-cuentaعبر واجهة البرمجة
POST /eventos/ticketTicket para mirar el canal de eventos en vivo (sin teléfono)عبر واجهة البرمجةعرضه
GET /expedientesLos expedientes abiertos (#64)
POST /expedientesAbrir expediente sobre una llamada
GET /expedientes/:expUn expediente, con su llamada y su grabación
POST /expedientes/:exp/cerrarCerrar un expediente (la fila NUNCA se borra)
GET /extensionesعبر واجهة البرمجة
POST /extensionesAlta de extensión (crea buzón y credencial)عبر واجهة البرمجة
DELETE /extensiones/:extعبر واجهة البرمجة
GET /extensiones/:extعبر واجهة البرمجة
PATCH /extensiones/:extعبر واجهة البرمجة
POST /extensiones/:ext/dispositivosAñadir un dispositivo (celular, computadora…)عبر واجهة البرمجة
POST /extensiones/:ext/no-molestarعبر واجهة البرمجة
GET /extensiones/:ext/reglasمكالمة حقيقية
PUT /extensiones/:ext/reglasSígueme, desvío, no molestar y destino de falloعبر واجهة البرمجة
GET /extensiones/:extension/campLos avisos de desocupado que pidió esta extensión (#58)
DELETE /extensiones/:extension/camp/:objetivoCancelar un aviso de desocupado
POST /extensiones/:extension/moverMover la llamada en curso a otro aparato de la misma extensión (#57)
GET /extensiones/siguiente-libreعبر واجهة البرمجة
GET /feriadosعبر واجهة البرمجة
POST /feriadosFeriado propio o excepción a uno nacionalعبر واجهة البرمجة
DELETE /feriados/:ferعبر واجهة البرمجة
GET /grabacion/decidir¿Se grabaría esta llamada? Y con qué avisoعبر واجهة البرمجة
GET /grabacion/reglasعبر واجهة البرمجة
PUT /grabacion/reglasQué se graba y cuánto se guardaعبر واجهة البرمجة
DELETE /grabacion/reglas/:reglaعبر واجهة البرمجة
GET /grabacionesمنصّة الاختبار
PUT /grabaciones/:grabacion/categoriacliente | prospecto | interno, o nada (#68)
DELETE /grabaciones/:grbمنصّة الاختبار
GET /grabaciones/:grbFicha: transcripción, resumen, acuerdos y hablantesلم يُجرَّب بعد
GET /grabaciones/:grb/accesosQuién ha escuchado esta grabaciónمنصّة الاختبار
POST /grabaciones/:grb/analizarVolver a transcribir y resumirلم يُجرَّب بعد
GET /grabaciones/:grb/audioEl audio (queda auditado)منصّة الاختبار
POST /grabaciones/:grb/enlaceEnlace firmado para compartir sin dar acceso a la cuentaمنصّة الاختبار
GET /grabaciones/buscarBuscar por lo que se dijo dentro de las llamadasمنصّة الاختبار
GET /gruposعبر واجهة البرمجة
POST /gruposعبر واجهة البرمجة
DELETE /grupos/:grpعبر واجهة البرمجة
GET /grupos/:grpعبر واجهة البرمجة
PUT /grupos/:grpعبر واجهة البرمجة
POST /grupos/:grp/miembrosعبر واجهة البرمجة
DELETE /grupos/:grp/miembros/:miembroعبر واجهة البرمجة
GET /grupos/:grp/ordenEn qué orden sonaría ahora mismoعبر واجهة البرمجة
GET /guionesمكالمة حقيقية
POST /guionesLos textos que dice una líneaمكالمة حقيقية
DELETE /guiones/:guiمكالمة حقيقية
GET /guiones/:guiمكالمة حقيقية
PATCH /guiones/:guiCambiar textos, nombre o voz declaradaمكالمة حقيقية
GET /historialQué cambió en esta cuenta, quién y cuándoعبر واجهة البرمجةعرضه
GET /historial/:cambioعبر واجهة البرمجةعرضه
POST /historial/:cambio/revertirDeshacer un cambio de configuraciónعبر واجهة البرمجةعرضه
GET /horariosعبر واجهة البرمجة
POST /horariosعبر واجهة البرمجة
DELETE /horarios/:horعبر واجهة البرمجة
GET /horarios/:horعبر واجهة البرمجة
PUT /horarios/:horعبر واجهة البرمجة
GET /horarios/:hor/estado¿Abierto ahora? Y por quéعبر واجهة البرمجة
POST /horarios/:hor/manualForzar abierto o cerrado, con vuelta automáticaعبر واجهة البرمجة
GET /ivrsمكالمة حقيقية
POST /ivrsCrear un menú (detecta bucles al guardar)مكالمة حقيقية
DELETE /ivrs/:ivrمكالمة حقيقية
GET /ivrs/:ivrمكالمة حقيقية
PUT /ivrs/:ivrمكالمة حقيقية
GET /ivrs/:ivr/guionEl texto exacto que se va a decirعبر واجهة البرمجة
DELETE /ivrs/:ivr/opciones/:teclaمكالمة حقيقية
PUT /ivrs/:ivr/opciones/:teclaمكالمة حقيقية
GET /lista-negraعبر واجهة البرمجة
POST /lista-negraBloquear un número entranteعبر واجهة البرمجة
DELETE /lista-negra/:negعبر واجهة البرمجة
GET /llamadasمكالمة حقيقية
GET /llamadas-en-cursoLas llamadas del inquilino ahora mismo (vista de operadora)عبر واجهة البرمجةعرضه
GET /llamadas/:llamadaمكالمة حقيقية
GET /llamadas/csvExportar el CDRمكالمة حقيقية
GET /llamadas/resumenTotales, atención y repartoمكالمة حقيقية
POST /llamarTimbrar a la extensión y conectarla con un destinoمكالمة حقيقية
GET /mantenimientosعبر واجهة البرمجةعرضه
POST /mantenimientosAvisar a quien llame de que hay un mantenimiento en cursoعبر واجهة البرمجةعرضه
POST /mantenimientos/:mnt/cerrarعبر واجهة البرمجةعرضه
GET /mensajesBandeja de toda la cuentaعبر واجهة البرمجة
DELETE /mensajes/:msgعبر واجهة البرمجة
GET /mensajes/:msgعبر واجهة البرمجة
GET /mensajes/:msg/audioعبر واجهة البرمجة
POST /mensajes/:msg/leidoعبر واجهة البرمجة
GET /numerosعبر واجهة البرمجة
DELETE /numeros/:numero/aviso-cambioApagar el aviso de cambio y devolver la línea a su destinoلم يُجرَّب بعد
GET /numeros/:numero/aviso-cambioEstado del aviso de cambio de númeroلم يُجرَّب بعد
POST /numeros/:numero/aviso-cambioAnunciar que este número cambió y decir el nuevoلم يُجرَّب بعد
PUT /operadoraA dónde va el cero (#109)عبر واجهة البرمجةعرضه
GET /paisesLa memoria del cortafuegos de fraude: a dónde llama esta casa (#65)
GET /pasosPasos de flujo del cliente
POST /pasosAlta de un paso de flujo
DELETE /pasos/:pso
GET /pasos/:pso
PUT /pasos/:pso
POST /pasos/:pso/rotar-secretoRotar el secreto con el que se firma la consulta
POST /plantillaAplicar una plantilla de arranque (horario + ruta + buzón)عبر واجهة البرمجة
GET /politica-salidaعبر واجهة البرمجة
POST /probar-audioLlamarte y reproducirte una cadena de audio — la prueba de verdadمكالمة حقيقية
GET /probar-entradaA dónde iría una llamada ahora mismoمكالمة حقيقية
GET /probar-salidaSimular una salida sin cursarlaمكالمة حقيقية
GET /rutasمكالمة حقيقية
POST /rutasQué hace una llamada que entra por un númeroمكالمة حقيقية
DELETE /rutas/:rutaمكالمة حقيقية
GET /rutas/:rutaمكالمة حقيقية
PATCH /rutas/:rutaمكالمة حقيقية
GET /saldoمنصّة الاختبار
GET /sin-devolverLas perdidas que nadie ha devuelto, agrupadas por número (#67)
GET /turnosLas rotas de guardia (#66)
POST /turnosCrear una rota de guardia
DELETE /turnos/:turnoBorrar una rota (falla si una ruta apunta a ella)
GET /turnos/:turnoUna rota, con quién está de guardia AHORA
PUT /turnos/:turnoCambiar una rota
POST /turnos/:turno/miembrosMeter a alguien en la rota, con su franja
DELETE /turnos/:turno/miembros/:miembroSacar a alguien de la rota
PUT /turnos/:turno/miembros/:miembroCambiar la franja de alguien
POST /unirLlamar a dos números externos y unirlosمكالمة حقيقية
GET /vipsQuién se salta la fila de la cola (#61)
GET /webhooksعبر واجهة البرمجة
POST /webhooksعبر واجهة البرمجة
DELETE /webhooks/:whkعبر واجهة البرمجة
PATCH /webhooks/:whkعبر واجهة البرمجة
GET /webhooks/:whk/entregasعبر واجهة البرمجة
POST /webhooks/:whk/probarMandar un evento de pruebaعبر واجهة البرمجة
POST /webhooks/:whk/rotarعبر واجهة البرمجة
POST /webphone/sesionRegistrar el navegador como teléfono de una extensiónعبر واجهة البرمجة

أمثلة مسجَّلة

لم تُكتب يدويًا، بل سُجّلت من تنفيذ حقيقي على هذه الواجهة داخل حساب مؤقّت حُذف بعد ذلك: الطلب والحالة والرد كما مرّت فعلًا. استُبدلت معرّفات الحساب والكائنات برموز، ولم يُمسّ سواها. المثال المكتوب يثبت ما ظنّه كاتبه، أما المسجَّل فيثبت ما فعله المقسم.

20 من أصل 204 مسار لها مثال مسجَّل، من تنفيذ 2026-09-04. أما البقية فمدرجة أعلاه ولم تُختبر بهذه الطريقة بعد — نفضّل أن نُريك الرقم على أن تفترض أنها كلها كذلك.

GET /inquilinos/:inquilino/aparcadas 200

الرد

{
  "plazas": []
}

DELETE /inquilinos/:inquilino/citas/:id 200

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "numero": "50688889999",
  "nombre": null,
  "cuando": "2026-09-04T21:11:53.507Z",
  "avisar_el": "2026-09-03T21:11:53.507Z",
  "guion": null,
  "estado": "cancelada",
  "intentos": 0,
  "ultimo_intento": null,
  "respondido_el": null,
  "nota": null,
  "creado": "2026-09-04T20:11:54.131Z",
  "actualizado": "2026-09-04T20:11:54.445Z"
}

GET /inquilinos/:inquilino/citas/:id 200

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "numero": "50688889999",
  "nombre": null,
  "cuando": "2026-09-04T21:11:53.507Z",
  "avisar_el": "2026-09-03T21:11:53.507Z",
  "guion": null,
  "estado": "pendiente",
  "intentos": 0,
  "ultimo_intento": null,
  "respondido_el": null,
  "nota": null,
  "creado": "2026-09-04T20:11:54.131Z",
  "actualizado": "2026-09-04T20:11:54.131Z"
}

POST /inquilinos/:inquilino/citas 201

الطلب

{
  "numero": "50688889999",
  "cuando": "2026-09-04T21:11:53.507Z",
  "texto": "ensayo"
}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "numero": "50688889999",
  "nombre": null,
  "cuando": "2026-09-04T21:11:53.507Z",
  "avisar_el": "2026-09-03T21:11:53.507Z",
  "guion": null,
  "estado": "pendiente",
  "intentos": 0,
  "ultimo_intento": null,
  "respondido_el": null,
  "nota": null,
  "creado": "2026-09-04T20:11:54.131Z",
  "actualizado": "2026-09-04T20:11:54.131Z"
}

GET /inquilinos/:inquilino/colas/:id/callbacks 200

الرد

[]

GET /inquilinos/:inquilino/colas/:id 200

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "nombre": "Soporte",
  "numero": null,
  "estrategia": "todos",
  "timbrado_s": 20,
  "espera_max_s": 600,
  "decir_posicion": 1,
  "decir_espera": 1,
  "anuncio_cada_s": 30,
  "musica": "default",
  "callback": 1,
  "callback_min_espera_s": 45,
  "agotada_tipo": "buzon",
  "agotada_id": null,
  "vacia_tipo": null,
  "vacia_id": null,
  "creado": "2026-09-04T20:11:52.214Z",
  "actualizado": "2026-09-04T20:11:52.214Z",
  "miembros": [],
  "estado": {
    "de_turno": 0,
    "miembros": 0,
    "espera_estimada_s": null,
    "callbacks_pendientes": 0,
    "atendidas_hoy": 0,
    "abandonos_hoy": 0
  }
}

PUT /inquilinos/:inquilino/colas/:id 200

الطلب

{
  "nombre": "Ya editada"
}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "nombre": "Ya editada",
  "numero": null,
  "estrategia": "todos",
  "timbrado_s": 20,
  "espera_max_s": 600,
  "decir_posicion": 1,
  "decir_espera": 1,
  "anuncio_cada_s": 30,
  "musica": "default",
  "callback": 1,
  "callback_min_espera_s": 45,
  "agotada_tipo": "buzon",
  "agotada_id": null,
  "vacia_tipo": null,
  "vacia_id": null,
  "creado": "2026-09-04T20:11:54.606Z",
  "actualizado": "2026-09-04T20:11:54.771Z",
  "miembros": [],
  "estado": {
    "de_turno": 0,
    "miembros": 0,
    "espera_estimada_s": null,
    "callbacks_pendientes": 0,
    "atendidas_hoy": 0,
    "abandonos_hoy": 0
  }
}

GET /inquilinos/:inquilino/colas 200

الرد

[
  {
    "id": "<id>",
    "inquilino": "<cuenta>",
    "nombre": "Soporte",
    "numero": null,
    "estrategia": "todos",
    "timbrado_s": 20,
    "espera_max_s": 600,
    "decir_posicion": 1,
    "decir_espera": 1,
    "anuncio_cada_s": 30,
    "musica": "default",
    "callback": 1,
    "callback_min_espera_s": 45,
    "agotada_tipo": "buzon",
    "agotada_id": null,
    "vacia_tipo": null,
    "vacia_id": null,
    "creado": "2026-09-04T20:11:52.214Z",
    "actualizado": "2026-09-04T20:11:52.214Z"
  }
]

POST /inquilinos/:inquilino/colas 201

الطلب

{
  "nombre": "Soporte",
  "estrategia": "todos"
}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "nombre": "Soporte",
  "numero": null,
  "estrategia": "todos",
  "timbrado_s": 20,
  "espera_max_s": 600,
  "decir_posicion": 1,
  "decir_espera": 1,
  "anuncio_cada_s": 30,
  "musica": "default",
  "callback": 1,
  "callback_min_espera_s": 45,
  "agotada_tipo": "buzon",
  "agotada_id": null,
  "vacia_tipo": null,
  "vacia_id": null,
  "creado": "2026-09-04T20:11:52.214Z",
  "actualizado": "2026-09-04T20:11:52.214Z",
  "miembros": [],
  "estado": {
    "de_turno": 0,
    "miembros": 0,
    "espera_estimada_s": null,
    "callbacks_pendientes": 0,
    "atendidas_hoy": 0,
    "abandonos_hoy": 0
  }
}

GET /inquilinos/:inquilino/conferencias/:id 200

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "nombre": "Sala 1",
  "numero": null,
  "max_personas": 10,
  "esperar_organizador": 0,
  "anunciar_entradas": 1,
  "pedir_nombre": 1,
  "bloqueada": 0,
  "grabar": 0,
  "musica": "default",
  "activa": 1,
  "creado": "2026-09-04T20:11:52.847Z",
  "actualizado": "2026-09-04T20:11:52.847Z",
  "tiene_pin": false,
  "tiene_pin_organizador": false,
  "dentro": 0,
  "grabando": false
}

POST /inquilinos/:inquilino/conferencias 201

الطلب

{
  "nombre": "Sala 1",
  "clave": "4321"
}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "nombre": "Sala 1",
  "numero": null,
  "max_personas": 10,
  "esperar_organizador": 0,
  "anunciar_entradas": 1,
  "pedir_nombre": 1,
  "bloqueada": 0,
  "grabar": 0,
  "musica": "default",
  "activa": 1,
  "creado": "2026-09-04T20:11:52.847Z",
  "actualizado": "2026-09-04T20:11:52.847Z",
  "tiene_pin": false,
  "tiene_pin_organizador": false
}

POST /inquilinos/:inquilino/eventos/ticket 201

الطلب

{}

الرد

{
  "ticket": "eyJ1IjoicGFuZWwiLCJpIjoiaW5xX3JhN3J0YnYycXA0YyIsInAiOiJldmVudG9zIiwiZXhwIjoxNzg4NTgxNTE1NTcxfQ.bLihoh7EfWP7ZcVGQcPEhfGcHYAn1Y8DmwK4f552uIQ",
  "eventos": [
    "wss://<puerta>:<puerto>/eventos"
  ],
  "inquilino": "<cuenta>"
}

POST /inquilinos/:inquilino/historial/:id/revertir 201

الطلب

{}

الرد

{
  "revertido": "<id>",
  "tabla": "colas",
  "fila_id": "<id>",
  "columnas": [
    "nombre"
  ],
  "fila": {
    "id": "<id>",
    "inquilino": "<cuenta>",
    "nombre": "Para editar",
    "numero": null,
    "estrategia": "todos",
    "timbrado_s": 20,
    "espera_max_s": 600,
    "decir_posicion": 1,
    "decir_espera": 1,
    "anuncio_cada_s": 30,
    "musica": "default",
    "callback": 1,
    "callback_min_espera_s": 45,
    "agotada_tipo": "buzon",
    "agotada_id": null,
    "vacia_tipo": null,
    "vacia_id": null,
    "creado": "2026-09-04T20:11:54.606Z",
    "actualizado": "2026-09-04T20:11:55.256Z"
  }
}

GET /inquilinos/:inquilino/historial/:id 200

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "tabla": "colas",
  "fila_id": "<id>",
  "columna_clave": "id",
  "antes": {
    "id": "<id>",
    "inquilino": "<cuenta>",
    "nombre": "Para editar",
    "numero": null,
    "estrategia": "todos",
    "timbrado_s": 20,
    "espera_max_s": 600,
    "decir_posicion": 1,
    "decir_espera": 1,
    "anuncio_cada_s": 30,
    "musica": "default",
    "callback": 1,
    "callback_min_espera_s": 45,
    "agotada_tipo": "buzon",
    "agotada_id": null,
    "vacia_tipo": null,
    "vacia_id": null,
    "creado": "2026-09-04T20:11:54.606Z",
    "actualizado": "2026-09-04T20:11:54.606Z"
  },
  "despues": {
    "id": "<id>",
    "inquilino": "<cuenta>",
    "nombre": "Ya editada",
    "numero": null,
    "estrategia": "todos",
    "timbrado_s": 20,
    "espera_max_s": 600,
    "decir_posicion": 1,
    "decir_espera": 1,
    "anuncio_cada_s": 30,
    "musica": "default",
    "callback": 1,
    "callback_min_espera_s": 45,
    "agotada_tipo": "buzon",
    "agotada_id": null,
    "vacia_tipo": null,
    "vacia_id": null,
    "creado": "2026-09-04T20:11:54.606Z",
    "actualizado": "2026-09-04T20:11:54.771Z"
  },
  "actor": "apikey:<id> primera clave de sistema (sistema)",
  "origen": "api",
  "revertido_de": null,
  "creado": "2026-09-04T20:11:54.777Z",
  "cambios": {
    "nombre": {
      "antes": "Para editar",
      "despues": "Ya editada"
    }
  }
}

GET /inquilinos/:inquilino/historial 200

الرد

{
  "inquilino": "<cuenta>",
  "cambios": [
    {
      "id": "<id>",
      "tabla": "colas",
      "fila_id": "<id>",
      "actor": "apikey:<id> primera clave de sistema (sistema)",
      "origen": "api",
      "revertido_de": null,
      "creado": "2026-09-04T20:11:54.777Z",
      "cambios": {
        "nombre": {
          "antes": "Para editar",
          "despues": "Ya editada"
        }
      }
    }
  ]
}

GET /inquilinos/:inquilino/llamadas-en-curso 200

الرد

{
  "activas": []
}

POST /inquilinos/:inquilino/mantenimientos/:id/cerrar 201

الطلب

{}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "motivo": "ensayo",
  "desde": "2026-09-04T20:11:53.637Z",
  "hasta": "2026-09-04T20:11:53.969Z",
  "avisar": 1,
  "activo": 0,
  "creado": "2026-09-04T20:11:53.637Z"
}

GET /inquilinos/:inquilino/mantenimientos 200

الرد

[
  {
    "id": "<id>",
    "inquilino": "<cuenta>",
    "motivo": "ensayo",
    "desde": "2026-09-04T20:11:53.637Z",
    "hasta": null,
    "avisar": 1,
    "activo": 1,
    "creado": "2026-09-04T20:11:53.637Z"
  }
]

POST /inquilinos/:inquilino/mantenimientos 201

الطلب

{
  "motivo": "ensayo",
  "minutos": 5
}

الرد

{
  "id": "<id>",
  "inquilino": "<cuenta>",
  "motivo": "ensayo",
  "desde": "2026-09-04T20:11:53.637Z",
  "hasta": null,
  "avisar": 1,
  "activo": 1,
  "creado": "2026-09-04T20:11:53.637Z"
}

PUT /inquilinos/:inquilino/operadora 200

الطلب

{
  "destino": "buzon"
}

الرد

{
  "operadora": null
}

DELETE /inquilinos/:inquilino 200

الرد

{
  "borrado": "<cuenta>"
}

POST /inquilinos 201

الطلب

{
  "nombre": "Ejercicio API 2026-09-04T20:11:51"
}

الرد

{
  "id": "<cuenta>",
  "nombre": "Ejercicio API 2026-09-04T20:11:51",
  "cuenta_portal": null,
  "cedula": null,
  "correo": null,
  "telefono": null,
  "plan": "zero",
  "zona": "America/Costa_Rica",
  "idioma": "es",
  "estado": "activo",
  "canales_max": 4,
  "notas": null,
  "creado": "2026-09-04T20:11:51.932Z",
  "actualizado": "2026-09-04T20:11:51.932Z",
  "canales_garantizados": 2,
  "modo_presion": "firme",
  "presion_canales": 1,
  "duracion_max_s": null,
  "operadora_tipo": null,
  "operadora_id": null,
  "filtro_anonimas": 0,
  "cdr_retencion_dias": null,
  "codigo_asunto_digitos": 0,
  "supervision_activa": 0,
  "limites": {
    "canales": 2,
    "canales_max": 4,
    "extensiones": 3,
    "retencion": 30,
    "tope_diario": 3,
    "tope_mensual": 25
  },
  "canales": {
    "existe": true,
    "garantizados": 2,
    "max": 4,
    "modo": "firme",
    "presion_canales": 1
  }
}

الجلسات: المتصفّح لا يحمل مفتاحًا دائمًا أبدًا

بيانات اعتماد قصيرة العمر، بسقف 60 دقيقة، ولا تستطيع أن تصنع مفتاحًا دائمًا. هذا هو العقد إن كنت أنت من يبني الزر.

  • البوابة وحدها تستطيع إصدارها. إصدار جلسة يحتاج إلى مفتاح تزويد، لأن البوابة وحدها تستطيع أن تؤكّد أن خلف الطلب عميلًا سجّل دخوله. وVOICE لا يعرف كلمات مرور العملاء ولا سبب لأن يعرفها.
  • ولا تولد بلا انتهاء صلاحية. إن لم يطلب أحد مدّة، وُضعت لها واحدة. ونطاقٌ وُجد لكي ينتهي وقد يولد أبديًا أسوأ من عدمه، لأن الناس يثقون به.
  • وطلب مدة أطول لا ينفع. هناك سقف صارم. وأن يطلب المتصل ثماني ساعات لا يجعل بيانات الاعتماد آمنة.
  • ولا تستطيع ترقية نفسها. إدارة المفاتيح كلها خلف نطاق التزويد، فلا تستطيع جلسة أن تصنع مفتاحًا دائمًا. ويُفرَض ذلك في الموجّه، قبل تشغيل أي معالج.
  • ويمكن إنهاؤها مبكرًا. يعود المعرّف عند الإصدار، تحديدًا كي تستطيع إبطالها قبل موعدها.

Webhooksعبر واجهة البرمجة

تُبلَّغ أنظمتك بما حدث بدل أن تسأل كل بضع ثوانٍ. 28 حدثًا، موقَّعة، ويُعاد إرسالها، ولا يسقط منها شيء بصمت.

x-pbx-evento: llamada.entrante
x-pbx-marca:  1755300000
x-pbx-firma:  <hex>

{ "evento": "llamada.entrante", "inquilino": "…", "cuando": "…", "datos": { … } }

كل تسليم موقَّع: يغطّي التوقيع الطابع الزمني والجسم الذي استلمته بالضبط، فتحقّق منه على البايتات الخام لا على نسخة أُعيدت صياغتها. ويُعرَض السرّ مرة واحدة عند إنشاء الاشتراك، ويمكن تدويره دون إيقاف التسليمات.

التسليم الفاشل يُعاد بعد 10 · 30 · 60 · 300 · 900 · 3600 ثانية، ولكل محاولة 10 ثانية. والاشتراك الذي يستمرّ في الفشل يُوقَف مؤقتًا بعد 20 إخفاقات متتالية بدل أن يسقط بصمت — ويمكنك رؤية كل محاولة.

الأحداث

الحدثمتى يُطلق
llamada.entranteمكالمة واردة، مع الرقم والمسار والوجهة.
llamada.contestadaردّ عليها أحد.
llamada.terminadaانتهت، مع المدة وكيف انتهت.
llamada.perdidaرنّت ولم يردّ أحد.
buzon.mensajeترك أحدهم رسالة، مع تفريغها النصّي.
grabacion.listaانتهت معالجة تسجيل وصار قابلًا للتنزيل.
grabacion.analizadaجاهز تفريغه النصّي ومتحدّثوه وملخّصه.
saldo.bajoالرصيد يقارب النفاد.
tope.alcanzadoبُلغ سقف إنفاق وتوقّفت المكالمات.
registro.anomaloتسجيل جهاز يبدو خاطئًا — عدة بيانات اعتماد من المكان نفسه مثلًا.
canales.al_limiteأنت قرب سقف خطوطك المتزامنة.
cita.confirmadaأكّد أحدهم موعده على لوحة الأرقام.
cita.reagendarطلب أحدهم موعدًا آخر. وهو طلبٌ لإنسان، لا شيء يحلّه المقسم وحده.
cita.canceladaألغى أحدهم موعده.
desvio.activadoفُعّل تحويل.
desvio.recordatorioما زال تحويل مفعَّلًا. والتحويل المنسيّ أشيع عطل شبحي في أي مقسم.
buzon.llenoامتلأ صندوق — ومن هنا فصاعدًا تضيع الرسائل.
buzon.casi_llenoصندوق يقارب الامتلاء، بينما ما زال في الوقت متّسع للتصرّف.
cola.vaciaلا أحد على الوردية في طابور.
cola.callbackطلب أحدهم أن يُعاد الاتصال به بدل الانتظار.
conferencia.entraدخل أحدهم غرفة.
conferencia.saleخرج أحدهم من غرفة.
canales.desalojoرُدّ خط مُعار لحماية ضمان أحدهم.
emergencia.marcadaطلب أحدهم رقم الطوارئ من تحويلة. ولا تتأخّر المكالمة بسبب هذا أبدًا.
fax.entranteرُصدت نغمة فاكس في مكالمة واردة.
supervision.iniciadaأنصت أحدهم إلى مكالمة أو همس فيها أو دخلها. وهذا ما يفصل أداة الإشراف عن التنصّت: أن تستطيع الإجابة عن «من سمع هذه المكالمة، ومتى».
fraude.sospechaنمط سلوك يشبه الاحتيال. ينبّه؛ ولا يقطع.
filtro.insistenciaرقم يتصل أكثر مما ينبغي بكثير.

القناة المباشرةمكالمة حقيقية

تسافر إشعارات Webhook على دفعات وتصل خلال ثوانٍ. لكن هناك ما يجب أن يكون على الشاشة الآن: مصباحٌ يقول إن زميلك في مكالمة لا يصحّ أن يتأخّر خمس عشرة ثانية.

  • ماذا تحمل. المكالمات وهي تحدث، والرسائل الجديدة، وحالة مصباح كل تحويلة — وهو ما يجعل لوحة المصابيح على الشاشة حيّة فعلًا.
  • للقراءة فقط.عبر واجهة البرمجة تستطيع فتح تذكرة للقناة دون تسليم هاتف: فمشاهدة ما يجري لا ينبغي أن تتطلّب بيانات اعتماد تستطيع أيضًا تغيير الأشياء.
  • ولا تحلّ محلّ Webhooks. القناة المباشرة لشاشة ينظر إليها أحد. وإن كان يهمّك أن يعلم نظامك، فاستعمل Webhook: يعيد المحاولة، ولا يعتمد على بقاء وصلة مفتوحة.

مرجع

كيف تُقرأ الشارات

كل وظيفة في هذه الصفحة تحمل شارة تقول كيف تحقّقنا منها. وننشر أيضًا ما لم يُجرَّب بعد، موسومًا بذلك، لأن أن تكتشفه أنت وحدك أسوأ.

الشارةماذا يفعلكم
مكالمة حقيقيةأجرى أحدهم مكالمة حقيقية ففعلت ما هو مكتوب هنا.13
مكالمة اختبارمكالمة حقيقية على المقسم الحيّ، بمفاتيح ضُغطت فعلًا — لكن بلا صوت وبلا مستمع. وكل ما يعتمد على أن يتكلّم المتصل ما زال غير مُختبَر.3
هاتف حقيقيمُثبَت بهاتف حقيقي يسجّل.1
عبر واجهة البرمجةجُرِّب عبر واجهة البرمجة العامة.46
منصّة الاختبارجُرِّب على منصّة الاختبار، على نسخة قابلة للإتلاف من قاعدة البيانات.13
لم يُجرَّب بعدالكود موجود ويُحمَّل، لكن لم يشغّله أحد بعد.36

112 وظيفة، مُحصاة من المقسم في 2026-08-19.

الشارة تخصّ وظيفة لا صفًّا واحدًا: وحيث تغطّي وظيفة عدة رموز، تظهر جميعها بمستوى المجموعة. أي أن الشارة قد تقول أقلّ مما جُرِّب فعلًا — ولا تقول أكثر أبدًا، وهو الاتجاه الوحيد الذي نقبل أن نخطئ فيه في صفحة تقرأها كوعد.

مسرد المصطلحات

الكلمات التي يستعملها المقسم الهاتفي ولا يستعملها شيء آخر.

المصطلحماذا يفعل
التحويلةشخص أو مكتب داخل شركتك، له رقم قصير يطلبه الآخرون. وليست هاتفًا: فالتحويلة الواحدة قد يكون لها عدة أجهزة.
الرقم (DID)ما يطلبه العالم من الخارج للوصول إليك. والرقم يشير إلى شيء — تحويلة، أو مجموعة، أو قائمة — وأنت من يقرّر إلى أيّها.
مجموعة الرنينعدة تحويلات ترنّ للمكالمة نفسها. بسيطة، ولا تعلم شيئًا عمّن ينتظر ولا منذ متى.
الطابورمجموعة تمسك بالصفّ أيضًا. تعرف الموقع ومدة الانتظار المقيسة ومن على الوردية، وتستطيع عرض معاودة الاتصال.
القائمة الصوتية (IVR)«اضغط 1 للمبيعات». القوائم قد تحوي قوائم، ويستطيع المتصل دائمًا أن يعود أو يصل إلى إنسان.
الخط المتزامن (القناة)محادثة واحدة جارية. عشر قنوات تعني عشر مكالمات في آن واحد، مهما بلغ عدد هواتفك.
سجل المكالمة (CDR)سطر لكل مكالمة: من، ومتى، وكم دامت، وعبر أي مسار، وكيف انتهت. ومنه تُبنى الفاتورة.
مصباح الانشغالالمؤشّر الذي يبيّن إن كان الزميل متاحًا أو يرنّ أو يتكلّم، دون الاتصال به لمعرفة ذلك.
نغمات لوحة الأرقام (DTMF)الأصوات التي يصدرها الهاتف عند ضغط مفتاح. بها تسمعك القائمة الصوتية والصندوق وكل رمز في هذه الصفحة.
التحويل إلى الجوالترنّ تحويلتك على جوّالك أيضًا، أو بدلًا منها. وهي أكثر ميزة استعمالًا في أي مقسم صغير.
التعليقترك مكالمة تنتظر في موضع مرقّم ليستطيع أي أحد، من أي هاتف، استعادتها بطلب رقم ذلك الموضع.
التحويل المرافَقأن تتحدّث إلى زميلك قبل تمرير المكالمة، مع إمكان استعادتها.

العودة إلى VOICE