دمج Telegram و Avaya

عندما نشأت مشكلة العمل في إنشاء آلية عالية السرعة لإخطار المستخدم بالأحداث في مركز الاتصال (تجاوز قوائم الانتظار) وتبادل الهاتف (إشعار المكالمات الفائتة) ، ظهرت الفكرة حول Telegram.

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

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

لذا

مستوحاة من هذا وهذا ، بدأت في العمل.

للبدء ، قمت بإنشاء روبوت في BotFather

الصورة

بعد ذلك ، يجب أن تعمل بالفعل مباشرة مع API.

بعد أن وجدت هذا المنشور الجدير ، لجأت إلى Hetzner ونظمت وكيل http الخاص بي للعمل مع api مقابل 3 يورو فقط شهريًا في الأراضي الألمانية.

الخطوة المطلوبة التالية هي إنشاء مجموعة ستشمل المستخدمين وبرامج تتبع الدردشة التي تم إنشاؤها حديثًا. هذا هو الحماية من البريد المزعج. ما يفتقر إليه فايبر على سبيل المثال.

الصورة

بعد ذلك ، تحتاج إلى معرفة عدد المستخدمين المطلوبين.
للقيام بذلك ، يجب على كل مستخدم رمي رسالة في الدردشة. بشكل عام ، إنه تعسفي. لكننا نستخدم على سبيل المثال لهذا الغرض عبارة تسجيل ورقم معين. سيكون الرقم هو معرف PBX.

الصورة

الآن دعنا ننتقل إلى API.

باستخدام الوكيل الذي تم إنشاؤه حديثًا ، نقوم بتقديم الطلب التالي مباشرة من shell الوكيل. إذا قمت بالفعل بتبديل متصفحك للعمل معه ، فيمكنك مباشرة من المتصفح.

root@ubuntu-dsenash ~ # wget https://api.telegram.org/bot553:AAGrXfKHw/getUpdates --2018-06-21 11:11:25-- https://api.telegram.org/bot553:AAGrXfKHw/getUpdates Resolving api.telegram.org (api.telegram.org)... 149.154.167.220, 2001:67c:4e8:f004::9 Connecting to api.telegram.org (api.telegram.org)|149.154.167.220|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 370 [application/json] Saving to: 'getUpdates' getUpdates 100%[==================================================================================>] 370 --.-KB/s in 0s 2018-06-21 11:11:25 (14.1 MB/s) - 'getUpdates' saved [370/370] root@ubuntu-dsenash ~ # cat getUpdates {"ok":true,"result":[{"update_id":90770, "message":{"message_id":43,"from":{"id":3918,"is_bot":false,"first_name":"Dmitry","last_name":"Senashenko","language_code":"ru"},"chat":{"id":3918,"first_name":"Dmitry","last_name":"Senashenko","type":"private"},"date":1529572218,"text":"/register 1000","entities":[{"offset":0,"length":9,"type":"bot_command"}]}}]}root@ubuntu-dsenash ~ # 

بدلاً من "553xxxxx: AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhhh" ما ورد من BotFather موضح.

في الرد ، نبحث عن معرّف المستخدم الذي ترك رسالة التسجيل.
في النص أعلاه نرى الرسالة نفسها: "/ سجل 1000"
ومعرف المستخدم الذي تم البحث عنه: "id": 3918xxxxx "
بدلا من كسكسكسكسكس بالطبع هناك أرقام حقيقية.

الآن يمكنك التحقق من تشغيل البوت وواجهة برمجة التطبيقات مباشرة من shell أو من متصفحك بالطلب التالي:

api.telegram.org/bot553XXXXXXX : AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhhhh / sendMessage؟ text = Your_queue_is_overloaded & chat_id = 3918xxxxx

حيث bot553xxxxx: AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhhhx هو رقم الروبوت والمفتاح المستلم من BotFather ، و 3918xxxxx هو رقم المستخدم الذي تم الحصول عليه من الخطوة السابقة.
يمكنك استخدام اللغة الروسية في النص ، ولكن يجب استبدال المسافات بـ 20٪.

نتيجة لهذا الأمر ، تم استلام الرسالة على Telegram على سطح المكتب وعلى الهاتف المحمول في نفس الوقت.

الصورة
الصورة

أعاد المتصفح الإجابة التالية:
الصورة
لذلك يعمل API. سننتقل الآن إلى التكامل مع مركز الهاتف Avaya. لهذا الغرض سأستخدم Avaya Aura Experience Portal 7.1. يتم استخدامه لتنظيم IVR في نظام Avaya البيئي وهو عبارة عن برنامج خدمة افتراضي ذكي وبرمجيات بالكامل. ميزته المهمة هي القدرة على إدراج كود Java ، وهو ما نحتاجه للتكامل مع Telegram. لن أقوم بإنشاء إعلانات ، ولكن في رأيي هذا هو أحد أفضل منتجات Avaya ويمكنك كتابة أشياء مدهشة حقًا عليه. على سبيل المثال ، التحكم الصوتي في إبريق الشاي أو أكثر جدية نسخ المحادثة على الطاير .

نظام الرد الصوتي التفاعلي هذا ليس رخيصًا بالتأكيد ، ولكن هناك بعض الخصائص. مرخص بواسطة الميناء. لأن نخطط لاستخدامه قريبًا جدًا ، سيكون منفذ واحد كافيًا. وميناء واحد بتكلفة منخفضة إلى حد ما. ومع المحاكاة الافتراضية ، يتطلب النظام فقط 2 Core / 4GB RAM / 60GB HDD. بشكل عام ، يمكن تثبيته على أي كمبيوتر محمول أو سطح مكتب تقريبًا. حسنًا ، مثل الكرز على الكعكة - يحتوي هذا المنتج على وضع تجريبي يسمح لك باستخدامه مجانًا لمدة 30 يومًا.

لإنجاز المهمة ، نحتاج إلى تنظيم مكالمة IVR من خلال حدث في تبادل الهاتف ثم تكوينه بحيث يرسل الحدث المقابل إلى API الذي تم إنشاؤه حديثًا.

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

ناقلات الاتصال

الرقم: 5 الاسم: Vector for Skill 5

01 انتقل إلى الخطوة 5 إذا كانت المكالمات في قائمة الانتظار في المهارة 5 pri m> 5
02 طابور إلى المهارة 5 pri m
03 وقت انتظار 30 ثانية صمت السمع
04 انتقل إلى الخطوة 3 إذا كان ذلك دون قيد أو شرط
05 الطريق إلى الرقم 1214 مع cov n إذا كان ذلك دون قيد أو شرط
06 اذهب إلى الخطوة 2 إذا كان دون قيد أو شرط

هذا المتجه مباشرة قبل إجراء مكالمة في قائمة الانتظار يتحقق من عدد المكالمات في قائمة الانتظار هذه. إذا تجاوز الرقم 5 ، يتم تحويل المكالمة إلى الخطوة 5 ، حيث يتم تحويلها إلى الرقم 1214. يتم توجيه هذا الرقم إلى IVR.

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

سيبدأ تطبيق في الرد الصوتي التفاعلي في إرسال رسالة إلى Telegram ونقل المكالمة على الفور إلى مركز الاتصال إلى ناقل مشابه ، فقط بدون الخطوتين 1 و 5.

سيكون وقت التأخير لمكالمة المعالجة هذه حوالي 100 مللي ثانية ، وهو أمر غير مهم تمامًا للمتصل.

المتجه الثاني سيبدو كما يلي:

ناقلات الاتصال

رقم: 6 الاسم: Skill 5 Direct

01 طابور إلى المهارة 5 pri m
02 وقت انتظار 30 ثانية صمت السمع
03 اذهب إلى الخطوة 2 إذا كان ذلك دون قيد أو شرط

لذلك يتم إعادة توجيه مكالمة الحدث إلى IVR. دعنا ننتقل إلى تطوير تطبيق عليه.

تم تطوير تطبيقات Avaya Aura Experience Portal في Eclipse مع تثبيت المكوّن الإضافي Orchestration Designer. يسمح لك هذا بنقل التطوير للمستخدمين غير المهرة إلى وضع السحب والإفلات لتحريك المربعات والسهام دون الغوص في كود Java.

حسنًا ، يمكن للمستخدمين المؤهلين تضمين رمز جافا بالفعل. بعد ذلك ، يتم تجميع التطبيق باعتباره servlet ونشره إلى Tomcat ، حيث يشير IVR عندما يتلقى مكالمة.

التطبيق كما يلي:

الصورة
تنتقل المكالمة إلى عقدة AppRoot ، ثم تتم معالجة المتغيرات مسبقًا وتنتقل المكالمة إلى Telegram Connector ، وهو رمز Java خالص بالفعل. بعد إرسال الرسالة ، يتم تحويل المكالمة إلى مركز الاتصال.

لتبسيط الإعدادات ، يتم استخدام المتغيرات القابلة للتكوين ، والتي تتيح لك عرض إعدادات متغيرات التطبيق الداخلية على بوابة الويب الخاصة بـ Portal Portal نفسها. هذا ضروري بحيث عند تغيير الإعدادات لا لإعادة بناء التطبيق.

الكتلة المتغيرة هي كما يلي:

الصورة

كيف تستخدم المتغيرات القابلة للتكوين متغير DNIS مع المتغيرات الفرعية. لنقل المتغيرات إلى كود Java ، يتم استخدام المتغيرات المكتوبة بحروف كبيرة.

وحدة المعالجة الأولية هي كما يلي:

الصورة

اغفر لي عشاق الكود النظيف. تبدو كتلة عنوان url فظيعة. هذه هي ميزات Orchestration Designer. بالطبع ، كان من الأصح جمعها مباشرة في كود Java في سطر واحد ، ولكن كان من المهم بالنسبة لي أن أتحقق من عنوان URL الذي يدخل إلى كود Java واضطر إلى جمعه بهذه الطريقة.

يبدو الموصل نفسه أضيق الحدود للغاية:

  String response = ""; String str = mySession.getVariable(IProjectVariables.URL).getSimpleVariable().getStringValue(); str = str.replaceAll(" ", "%20"); IVariableField variable = mySession.getVariableField(IProjectVariables.RESPONSEINFO); variable.setValue(str); URL url; try { url = new URL(str); InputStream is = url.openConnection().getInputStream(); BufferedReader reader = new BufferedReader( new InputStreamReader( is ) ); String line = null; response = ""; while( ( line = reader.readLine() ) != null ) { response = response + line; } reader.close(); } catch (IOException e) { e.printStackTrace(); } 

هناك حاجة إلى الدالتين mySession.getVariable و mySession.getVariableField لنقل المعلومات من التطبيق إلى رمز Java وإعادة الرد مرة أخرى.

على سبيل المثال قمنا بتشكيل عنوان URL وفقًا للمبدأ أعلاه وبدأناه ، بتمرير ما عاد الخادم إليه.

هذا هو التطبيق كله ، وبشكل عام الحل كله. بوابة الويب IVR نفسها مع المتغيرات القابلة للتكوين هي كما يلي:

الصورة

إذا كان شخص ما مهتمًا بالنظر إلى عرض حقيقي للنموذج الأولي ، فيمكنه رؤيته هنا .

حسنا ، كان هناك بعض الكرز على الكعكة. بتعبير أدق ، حتى اثنان.

لقد كتبت بالفعل عن الأول. لكي يعمل الحل ، تحتاج إلى توصيل خادم التطبيق بـ Telegram من خلال وكيل غير موجود في روسيا. آمل أن ينتهي هذا الهراء.

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

أعتقد أن الشخص الذي يجتاز طريقي بنجاح سيجد هذه الشهادة بنجاح. الشيء الرئيسي هو أنه يعرف أنه بحاجة إلى العثور عليه.

شكرا لكم على اهتمامكم.

Source: https://habr.com/ru/post/ar414811/


All Articles