قم بإنشاء WhatsApp Chatbot ، وليس تطبيقًا
نشرت: 2022-03-11منذ فترة طويلة ، أنشأت تطبيق ويب لمؤسسة (أكثر من 200 ألف موظف). دفعتني التعليقات على تطبيق الويب لإجراء تجربة. ماذا سيحدث إذا قمت بإنشاء chatbot WhatsApp لحل حالة الاستخدام المحددة ، بدلاً من تطبيق الويب؟ هل سيحبها الناس بشكل أفضل؟ هل سيكون أكثر فائدة؟
لكن القصة أكبر من ذلك بكثير. روبوتات الدردشة لديها الكثير من الإمكانات! في هذا البرنامج التعليمي لبرنامج WhatsApp chatbot ، أردت مشاركة رحلتي التعليمية وأفضل الممارسات التي اكتشفتها وتوقعاتي على التطبيق مقابل سؤال chatbot. وما بعده: هل ستحل روبوتات المحادثة يومًا ما محل جميع التطبيقات التقليدية؟
كان للشركة التي عملت بها مكتبًا يضم حوالي 2000 موظف في وسط مدينة تل أبيب. مساحة وقوف السيارات محدودة للغاية ، لذلك يقوم الناس بركن سياراتهم في أماكن مصممة عن قصد لوقوف مزدوج ، حيث تحجب إحدى السيارات الأخرى. في كل موقف مزدوج ، يوقف السائق الأول بالداخل ، ويتوقف الثاني بالخارج.
من لوح المعلومات إلى تطبيق ويب
قبل أن يكون هناك تطبيق ، كان هناك لوحة كبيرة. حدد جميع السائقين مكان وقوفهم وأسمائهم وأرقام هواتفهم. قبل مغادرة المكتب ، كان على السائق التحقق مما إذا كان أي شخص قد حظر سيارته. إذا كان الأمر كذلك ، فسيتعين عليهم الاتصال بالسائق الآخر على أمل ألا يكونوا في منتصف الاجتماع حتى يتمكنوا من الذهاب ونقل سيارتهم بعيدًا عن الطريق.
لجعل العملية أفضل ، قمت بإنشاء تطبيق ويب.
كان الأمر بسيطا. لا يوجد نهاية خلفية. لا خادم استضافة. لا توجد صيانة لقاعدة البيانات. ولا حتى أي إطار عمل لواجهة المستخدم. لا حزم ويب ولا حزم JS على الإطلاق! فقط فانيلا جافا سكريبت.
تمت استضافته باستخدام استضافة الصفحات الثابتة المجانية من GitHub. كانت قاعدة البيانات عبارة عن FireBase ، لذلك كان لدينا دعم في الوقت الفعلي ودعم JSON ، ولا داعي لوجود نهاية خلفية.
كانت واجهة المستخدم مباشرة. يمكن للمستخدمين رؤية جميع أماكن وقوف السيارات والنقر على واحدة فارغة لملء التفاصيل الخاصة بهم. إذا كانت متوقفة بالفعل ، فستأخذ البيانات من التخزين المحلي للمتصفح. إذا نقروا على خانة مسجلة ، سيرون تفاصيل الاتصال ذات الصلة ويمكنهم اختيار الاتصال بالسائق.
كانت تعمل بشكل رائع لمدة عام تقريبًا. أقل من يوم واحد من التطوير ساعد ووفر الوقت لكثير من الناس - وهو استثمار جيد.
من تطبيق الويب إلى Chatbot
في أحد الأيام ، أعلن Facebook أنهم سيصدرون واجهة برمجة تطبيقات لـ WhatsApp. في اليوم التالي ، اشترى أخي جهاز أمازون إيكو ، يضم أليكسا. في ذلك الوقت تقريبًا ، بدأت أيضًا في رؤية مساعد Google في كل مكان.
بدأت أفكر أنه ربما كان العالم يتجه نحو روبوتات الدردشة ، لذلك يجب أن أجرب. هل يفضل المستخدمون استخدام روبوتات المحادثة؟ هل سأحتاج إلى تقديم دعم أقل؟ هل ستقدم أي ميزات وصفية جديدة ببساطة عن طريق الاستفادة من البنية التحتية المختلفة؟
تلقيت بعض التعليقات حول تطبيق الويب العادي ، وأعتقد أنه قد يعالجها إذا كنت سأقوم بإنشاء chatbot على WhatsApp:
- التطبيق لا يعمل بشكل جيد على بعض الهواتف المحمولة القديمة.
- لم يعمل تحت الأرض (حيث يوجد موقف السيارات - لا توجد إشارة جيدة للهاتف المحمول هناك).
- يرغب السائقون في إرسال رسائل إلى أدوات الحظر بدلاً من فتح طالب الهاتف.
- أراد السائقون تلقي إشعارات فورية إذا كان شخص ما يحظرهم ، بدلاً من فتح تطبيق الويب في كل مرة قبل المغادرة.
من المهم أن تتذكر أن مطوري منصات الدردشة مثل Telegram أو WhatsApp قد عملوا أيامًا وليالٍ لسنوات لضمان استقرار تطبيقاتهم. باستخدام مواردهم وتطوير محرك صغير فقط للإجابة على الأسئلة ، فإن ذلك من شأنه أن يترك العمل الشاق المتمثل في إمكانية الصيانة لمطوري منصات الدردشة. كل ما كان عليّ فعله هو البحث في كيفية إنشاء روبوت محادثة WhatsApp.
مباشرة بعد أن بدأت في تطوير روبوت المحادثة الجديد لمساعد وقوف السيارات ، أدركت مدى روعة الفكرة. لقد كانت إضافة ميزات جديدة سهلة وسريعة للغاية ، ولم أكن بحاجة إلى إجراء اختبار شامل.
لا توجد تغطية؟ لا مشكلة.
سقسقة
ليس هذا فقط ، لم أعد بحاجة إلى عملية CI / CD معقدة. إذا كان يعمل في محاكي الدردشة ، فسيعمل في كل مكان. لا. .apk
ولا Xcode ولا متجر التطبيقات ولا Google Play. كان chatbot قادرًا على إرسال رسائل إلى المستخدمين دون الحاجة إلى تسجيل الأجهزة ، أو استخدام PubSub أو خدمات مماثلة لإشعارات الدفع ، أو حفظ الرموز المميزة للمستخدم. لا حاجة لنظام مصادقة - كنت أستخدم رقم هاتف المستخدم لتعريف.
لا توجد تغطية؟ لا مشكلة. لم أكن بحاجة إلى إضافة دعم في وضع عدم الاتصال باستخدام ملفات البيان: أعطاها WhatsApp لي من خارج الصندوق. ستنطلق الرسالة قريبًا بما فيه الكفاية ، عندما ينتقل المستخدم إلى مستوى أعلى حيث كان wifi أفضل.
ثم أدركت أنه في كل مرة تقدم فيها منصة الدردشة ميزة جديدة ، سيستفيد تطبيقي منها على الفور. رائع - الآن هذا استثمار جيد حقًا. (لكي نكون منصفين ، هناك أيضًا خطر يتمثل في أن الميزات الجديدة قد تحد من الوظائف أو تُحدث تغييرات عاجلة تتطلب مزيدًا من جهود التطوير ، لذا فكر جيدًا قبل تنفيذ المهام الحاسمة للأعمال).
مساعد كتابة المواقف ، نموذج WhatsApp Chatbot
لإنشاء روبوت دردشة WhatsApp ، يتمثل التحدي الأول في إرسال رسائل من WhatsApp إلى برنامجك. أبسط حل وجدته هو استخدام رقم هاتف Twilio مشترك. إنه من أجل التطوير فقط - عند الانتقال إلى الإنتاج ، سيرغب المطورون في استخدام رقم هاتف مخصص.
تتم مشاركة أرقام Twilio المجانية عبر العديد من مستخدمي Twilio. للتمييز بين المستخدمين النهائيين للتطبيق ومستخدمي تطبيقات Twilio الأخرى ، يتعين على المستخدمين النهائيين إرسال رسالة محددة مسبقًا إلى chatbot.
بعد أن يرسل المستخدم رسالة خاصة إلى الرقم المشترك ، سيتم توجيه جميع الرسائل من رقمه إلى حساب Twilio الخاص بك وخطافات الويب. هذا هو سبب الحاجة إلى رقم مخصص في الإنتاج - ليس هناك ما يضمن أن مستخدمًا معينًا سيرغب فقط في استخدام تطبيق واحد على رقم مشترك معين.
إرسال رسائل WhatsApp
في Twilio's "Programmable SMS Dashboard" ، يوجد رابط "WhatsApp Beta" في شريط التنقل الأيسر:
بالنقر فوق ذلك ، سيرى المطورون صفحة بها خيار "Sandbox".
لربط المستخدمين ، سيحتاجون إلى إرسال رسالة خاصة واحدة إلى الرقم الذي يوفره Twilio. بمجرد قيام المستخدمين بذلك ، يمكننا البدء في إرسال الرسائل إليهم ومعالجة الرسائل منهم عبر Twilio.
فيما يلي مثال على إرسال رسالة باستخدام cURL:
curl 'https://api.twilio.com/2010-04-01/Accounts/{user_account}/Messages.json' -X POST \ --data-urlencode 'To=whatsapp:+{to_phone_number}' \ --data-urlencode 'From=whatsapp:+{from_phone_number}' \ --data-urlencode 'Body={escaped_message_body}' \ -u {user_account}:user_token
هذه رسالة نصية بسيطة. ولكن يمكنك أيضًا إرفاق وسائط (صور ، إلخ) برسائلك. هذا مثال على Node.js:
function sendWhatsApp(to, body, media) { const auth = "twilio_clientid:twilio_api" const sendURL = "https://api.twilio.com/2010-04-01/Accounts/{account_id}/Messages.json" const res = await fetch(sendURL, { headers: { Authorization: "Basic " + Buffer.from(auth).toString("base64"), }, method: "POST", body: objToFORM( JSONRemoveUndefined({ To: "whatsapp:+972" + to.replace(/-/g, "").replace(/^0/, ""), From: "whatsapp:+18454069614", Body: body, MediaUrl: media, }), ), }) } function objToFORM(obj) { const params = new URLSearchParams() for (var a in obj) { params.append(a, obj[a]) } return params } function JSONRemoveUndefined(obj) { return JSON.parse(JSON.stringify(obj)) }
هذا كل شيء: الآن يمكننا البدء في إرسال الرسائل إلى العملاء! لكن من المهم أن تتذكر أهم حددين تقنيين في رسائل WhatsApp:

- عندما يتلقى الروبوت رسالة ، يمكنك إرسال رد نصي واحد مجانًا. أكثر من ذلك يكلف المال.
- يمكن للروبوت إرسال رسائل إلى المستخدمين فقط خلال نافذة الـ 24 ساعة التي تبدأ عندما يتلقى رسالة من المستخدم. خارج هذه النافذة ، يمكن للبوت إرسال الرسائل فقط باستخدام القوالب المعتمدة ، كما سنرى لاحقًا.
استقبال رسائل WhatsApp
كان إرسال الرسائل أمرًا سهلاً إلى حد ما ، ولكن تلقي الرسائل ومعالجتها أصبح أسهل.
في صفحة "وضع الحماية" في Twilio ، يمكن للمطورين تحديد المكان الذي يجب أن يرسل فيه Twilio الرسائل التي يتلقاها على رقم WhatsApp المشترك. أثناء التطوير ، يمكن لخدمات مثل Ngrok أو Serveo توفير عناوين URL العامة التي توجه إلى أجهزة المطورين المحليين.
تبدو رسائل Twilio WhatsApp كما يلي:
{ "NumMedia": "0", "SmsSid": "{sms_id}", "SmsStatus": "received", "Body": "Example Message from user", "To": "whatsapp:+{phone_number}", "NumSegments": "1", "MessageSid": "{message_sid}", "AccountSid": "{account_sid}", "From": "whatsapp:+{phone_number}", "ApiVersion": "2010-04-01" }
وهذا هو كل ما نحتاج إليه. يمكننا استخدام أي لغة برمجة للحصول على هذه الرسالة وتحليلها ومحاولة فهم ما يطلبه المستخدمون. من المحتمل أن ينتج عن ذلك بعض عمليات CRUD على قاعدة بيانات ، وبعد ذلك يمكن للروبوت تسليم المعلومات المناسبة (أو رسالة النجاح / الفشل) إلى المستخدم في رده. هذه هي أساسيات كيفية إنشاء روبوت دردشة WhatsApp.
قوالب الرسائل
كما ذكرنا ، يمكن لروبوتات الدردشة إرسال رسائل حرة فقط للمستخدمين الذين يتفاعلون معهم "حاليًا" ، أي خلال نافذة الـ 24 ساعة. ولكن إذا كنت ترغب في إرسال رسائل إلى مستخدمين جدد ، أو خارج النافذة ، فيجب عليك استخدام قوالب الرسائل المعتمدة مسبقًا. هاذا لمنع التجسس.
في حالة الاستخدام الخاصة بي ، كنت أرغب في تحديث برامج التشغيل عندما يقوم شخص ما بحظرها ، حتى لو لم يكونوا من مستخدمي برنامج chatbot. في Twilio ، انقر على "المرسل" و "التكوين".
هذا هو النموذج الذي اخترته:
{{1}} is blocking your exit from the parking lot. I will notify you when they leave.
بعد عدة أيام ، وافق Facebook على القالب الخاص بي ، ويمكنني البدء في إرسال هذه الرسائل إلى كل شخص لديه WhatsApp ، وليس فقط السائقين الذين أرسلوا رسالة إلى chatbot.
إرسال رسالة من قالب يشبه تمامًا إرسال رسالة عادية باستخدام نفس واجهة برمجة التطبيقات. يرى WhatsApp تلقائيًا أنه يطابق قالبًا ويوافق على الرسالة.
ليس فقط لمساعد وقوف السيارات
هذه الإستراتيجية مثيرة بالنسبة لي عندما أتخيل متجرًا عبر الإنترنت: ربما في يوم من الأيام سيتمكن الناس من شراء أي شيء باستخدام روبوتات المحادثة. سيكون الأمر سهلاً مثل إرسال رسائل WhatsApp وإرفاق الصور. فقط تخيل ما إذا كان المستخدمون قادرين على إرفاق أموال حقيقية بكل رسالة WhatsApp. سيكون من السهل جدًا شراء الأشياء. سيتمكن المستخدمون بسهولة من شراء أي شيء من خلال التحدث إلى روبوت الدردشة الخاص بالمورد.
تخيل روبوت محادثة يستبدل Waze أو خرائط Google. قمت بإرسال رسالة نصية لوجهتك. تتعقب منصة chatbot موقعك ، ويرسل لك chatbot رسالة مسجلة يتم تشغيلها تلقائيًا مع الاتجاه المنطوق في الوقت الفعلي للتنقل.
إنه ليس خيال. يدعم WhatsApp حاليًا مشاركة الموقع في الوقت الفعلي - كل ما يحتاجونه هو خيار التشغيل التلقائي للرسائل المستلمة ، وفويلا.
فكر في روبوت دردشة Waze أو روبوت محادثة سيارة أجرة بدلاً من تطبيقات Gett أو Uber. أنت ترسل رسالة تخبرك أين أنت ، ثم تصل سيارة الأجرة ، وتدفع باستخدام WhatsApp. بسيط جدا.
قد يفكر بعض القراء ، "ألا يفضل المستخدمون الواجهات الرسومية وليس الكتابة فقط؟" أعتقد أن منصات chatbot ستمنح مالك chatbot خيار إرسال الأزرار والصور ومربعات HTML الخالصة أثناء التحويل. يدعم Facebook بالفعل Webview لـ Messenger. لا يحتاج المستخدمون إلى تثبيت أي شيء ، فقط استخدم تطبيق المراسلة الفورية المفضل لديهم.
هذه المزايا هي السبب في أن المطورين يتطلعون إلى إنشاء روبوتات دردشة WhatsApp للتعامل مع المهام المهمة ، مثل تقديم إجابات فورية موثوقة حول جائحة فيروس كورونا ، للمساعدة في الحد من انتشار المعلومات المضللة.
TL ؛ DR: 7 استنتاجات حول ترحيل تطبيقات الويب إلى روبوتات المحادثة
باختصار:
- في كثير من الأحيان ، يمكن أن يؤدي تطوير روبوت الدردشة إلى تقليل وقت التطوير بشكل كبير ، لأنه لا توجد حاجة لتصميم وتخطيط واجهة مستخدم رسومية. (ومع ذلك ، يجدر النظر إلى أدق النقاط في تصميم chatbot UX قبل البدء ، للتعلم من أخطاء الآخرين).
- من الأسهل بكثير إضافة ميزات جديدة إلى روبوتات المحادثة. لا يحتاج المطورون إلى إعادة تصميم أو تغيير أي عناصر حالية. يحتاج برنامج chatbot فقط إلى البدء في فهم النوع الجديد من الرسائل.
- يمكن الوصول إلى روبوتات الدردشة بشكل أكبر بشكل افتراضي للأشخاص ذوي الاحتياجات الخاصة.
- لا حاجة لتخصيص حل عبر الأنظمة الأساسية. تقوم منصة chatbot بذلك بالفعل.
- يثق المستخدمون في روبوتات المحادثة أكثر بكثير لمشاركة المعلومات. لا تحتاج إلى طلب الإذن أو إظهار التحذيرات - على سبيل المثال ، يمكن للمستخدم ببساطة اختيار صورة من معرضه وإرسالها إلى برنامج الدردشة الآلي الخاص بك - يتم منح إذن الوصول إلى معرض الصور بالفعل إلى منصة الدردشة.
- تجعل منصات الدردشة من السهل التعامل مع دفع الإخطارات. الإشعارات الفورية هي ما يصنع الفرق بين التطبيقات التي ينساها المستخدمون والتطبيقات التي يتفاعل معها المستخدمون بانتظام.
- تتعامل منصات الدردشة مع التنقل بين الظروف المتصلة بالإنترنت وغير المتصلة.
كيفية بناء Chatbot WhatsApp: نصائح فراق وأفضل الممارسات
مزايا كتابة روبوت محادثة واضحة جدًا. يُنصح المطورون المستعدون لبناء واحد أن يبدأوا بخطوات صغيرة ، باستخدام روبوت محادثة يفهم رسالة واحدة. ويتعامل معها بشكل جيد.
يجب أن تلتزم روبوتات الدردشة بالرسائل القصيرة. لا يقرأ الناس الرسائل الطويلة. عندما يكون لديك شيء مهم لإرساله ولا يمكن التعبير عنه بإيجاز ، فمن الأفضل تقسيم الرسائل إلى عدة رسائل صغيرة.
يتم تلقي روبوتات المحادثة ذات الشخصية بشكل أفضل. حتى أن بعض "الكلام البشري" البسيط يقطع شوطًا طويلاً مقارنة بنهج "شكلي لرسالة النظام": "سوف أقوم بتحديث خريطة وقوف السيارات لك" ، بدلاً من "تم تحديث قاعدة البيانات". يجب أن يترك روبوت المحادثة للمستخدم إحساسًا بأنه آلة موجودة لخدمة المستخدم ، بدلاً من الصندوق الأسود الذي يقوم بعمليات فنية قد لا يكون في وضع يسمح له بفهمها.
لم يدخل برنامج WhatsApp chatbot التعليمي هذا في تفاصيل تحليل رسائل اللغة الطبيعية التي سيرسلها المستخدمون إلى روبوتات الدردشة. لكن مقدمي خدمات تطوير chatbot الطموحين مرحب بهم للاطلاع على الكود المصدري لروبوت WhatsApp Parking Assistant (خاصة hackparkDialogFlow.ts
، الذي يقبل الطلبات من المستخدم كإجراءات) للتعرف على كيفية عمل هذا الجانب.
للحصول على مقالة أكثر تفصيلاً حول كيفية اكتشاف أنواع مختلفة من رسائل المستخدم - أثناء اتباع أسلوب حقن التبعية في البرمجة أيضًا - راجع برنامج روبوت الدردشة Toptal's TypeScript.
حظًا موفقًا في تطوير روبوت الدردشة على WhatsApp!