الخلاصة

  • تجمع phone-string في RFC 3601 بين إشارات DTMF والتوقف والانتظار للنغمة والفواصل البصرية. وقد يتضمن الشكل المحلي رمز الخروج واختيار الناقل وكلمة مرور وتعليمات بعد الاتصال.
  • يجب فصل إثبات المصدر والتصنيف والسياق والترخيص وأفعال الجهاز والإشارة والاتصال ونتيجة الخدمة. لا يجوز أن يتكلم إيصال مرحلة باسم المرحلة التالية.

قد تبدأ عملية الترحيل بقاعدة بسيطة: كل ما يبدأ بعلامة جمع رقم عالمي، وكل ما عدا ذلك رقم محلي. لكن هذه القاعدة لا تجيب عن السؤال الأخطر: هل القيمة اسم لوجهة، أم برنامج صغير يطلب من جهاز أن يفعل أشياء في ترتيب وتوقيت محددين؟

نشر RFC 3601 في سبتمبر 2003 ضمن Standards Track ليحدد كتابة نصية موحدة لتسلسلات الطلب وللعناوين القابلة للطلب في GSTN/E.164. ويعرّف Dial Sequence بأنه سلسلة من عناصر DTMF وأفعال ينفذها إنسان أو جهاز. تسمح phone-string بالأرقام و# و* والحروف A-D، وp للتوقف، وw لانتظار النغمة، والشرطة والنقطة كفواصل مكتوبة.

ليست هذه العناصر متساوية. الفواصل المكتوبة تحسن القراءة فقط ولا يجوز أن تؤدي أي فعل؛ ويمكن للتنفيذ حذفها أو إضافتها. أما p وw فيغيران سير التنفيذ. حذف الشرطة للمقارنة قد يحافظ على المعنى، لكن حذف كل ما ليس رقماً قد يمحو أمراً ويغير البرنامج.

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

هنا يظهر أول حد للإثبات. نجاح parser يثبت توافق الأحرف مع القاعدة، ولا يثبت إرسال DTMF أو مدة الوقفة أو الصوت الذي أنهى الانتظار. سجل يقول إن tonewait انتهى يثبت قرار الكاشف المحلي فقط. لا يحدد الطرف البعيد، ولا يثبت قيام اتصال، ولا يثبت وصول الأرقام التالية إلى الخدمة المقصودة.

ثم يأتي حد العنوان. يعرّف RFC 3601 gstn-phone في شكل عالمي أو محلي. يبدأ global-phone بعلامة + ويمثل عنوان E.164 رقمياً قابلاً للطلب. لكن النص يقول إن عنوان E.164 المجرد الكامل يحتوي عناصر لا يمكن طلبها، ولذلك لا يمكن تحويله كله إلى هذه الكتابة. العلامة تحمي namespace مفيداً؛ لا تختصر نموذج العنوان كله في أوامر قابلة للتنفيذ.

يكشف local-phone اعتماداً أكبر على السياق. يمكن أن يجمع exit-code وdial-number. وقد يتضمن exit-code الرقم المطلوب للحصول على خط خارجي، أو رمز الوصول إلى ناقل بعيد، أو كلمة مرور لخدمة. نسخ البايتات من فرع إلى آخر لا ينقل PBX أو خطة الترقيم أو سياسة الناقل أو حقبة الإعداد التي أعطت السلسلة معناها.

جاء RFC 3966 لاحقاً ليفصل بوضوح بين tel URI بوصفه معرفاً وبين dial string بوصفه أفعالاً سياقية. الـURI لا يصف خطوات الوصول، ولا يفرض دلالة طلب، ولا يضمن إمكانية الوصول من كل مكان. وأخرج سلاسل الطلب والوقفات وpost-dial من نطاقه. يحتاج الرقم المحلي إلى phone-context، لكن هذا السياق يحدد مجال الصلاحية وليس بادئة مضمونة لتكوين رقم E.164.

أنشأ RFC 4967 بعد ذلك user=dialstring في SIP/SIPS، واشترط وجود سياق والقدرة على تمييز سلسلة الطلب من user part يستخدم الأحرف نفسها. ويحافظ RFC 6116 في ENUM على علامة الجمع في رقم E.164 المؤهل بالكامل، ويحذر من تمرير الأرقام التي طلبها المستخدم محلياً على أنها رقم E.164. قد تؤدي تسلسلات مختلفة إلى الرقم العالمي نفسه.

لهذا لا تكون إضافة tel: إلى كل قيمة هاتفية مجرد تحويل صيغة. يجب أولاً تحديد النوع: معرف، global-phone، local-phone، Dial Sequence، subaddress أو post-dial. إذا كان النظام الجديد لا يمثل الأفعال، فحذفها قرار يحتاج إلى مراجعة؛ إخفاؤها داخل حقل هوية يخلق خطأ نوعياً.

للـpost-dial شرط زمني. يستخدمه RFC 3601 لتسلسل يرسل بعد إقامة الاتصال بالجهاز الوجهة، مثل التنقل في قائمة آلية. وجود الأرقام في قاعدة لا يثبت تحقق ذلك الشرط. يلزم إيصال اتصال أو إجابة، ثم سجل مستقل للأرقام المرسلة ورد الخدمة.

السلسلة قد تحمل سراً أيضاً. يتضمن مثال RFC معرف صندوق صوتي ورقم PIN، وتحذر اعتبارات الأمن من كشف الرموز الخاصة عند نقل النص بلا حماية. بذلك يصبح ما تصنفه المؤسسة “بيانات اتصال” برنامجاً قابلاً للتنفيذ وحاوية اعتماد في الوقت نفسه.

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

تبدأ سلسلة الإثبات بالمصدر: من قدم القيمة، نوع الحقل الأصلي، hash والوقت. ثم التصنيف وإصدار parser. ويسجل السياق الموقع وPBX وخطة الترقيم وسياسة الناقل ونسخة الإعداد. وتسجل كل عملية normalization. يحتاج التنفيذ إلى ترخيص. وبعد ذلك ينتج كل DTMF ووقفة وشرط إنهاء الانتظار حدثاً. أما route والاتصال وpost-dial والنتيجة التجارية فلها إيصالات مستقلة.

بهذا لا تتحول الكلمات المريحة إلى استنتاجات زائفة. imported لا تعني classified. valid لا تعني authorized. dialed لا تعني connected. answer لا تثبت هوية الطرف المقصود. digits sent لا تثبت قبول القائمة. الدقة هي أن يقتصر كل إيصال على ما شاهده فعلاً.