الطريقة الأسهل والأكثر بديهية للشركات والمطورين لبدء البناء على Whatsapp Cloud API .
إرسال رسالة نصية ذات تنسيق مجاني إلى المستلم
إرسال رسالة الموقع الجغرافي إلى المستلم
إرسال مستند إلى المستلم
إرسال صورة إلى المستلم
إرسال مقطع فيديو إلى المستلم
إرسال الصوت إلى المستلم
إرسال قائمة بالأزرار إلى المستلم (الحد الأقصى لعدد الأزرار المسموح بها هو 3)
إرسال قائمة بأزرار الاختيار إلى المستلم (الحد الأقصى لعدد أزرار الاختيار المسموح بها هو 10)
إرسال جهة اتصال إلى المستلم
قم بإنشاء رمز الاستجابة السريعة الذي يمكن للمستلم مسحه ضوئيًا
وضع علامة على الرسالة كمقروءة
تحليل الرسائل الواردة
ما هو WhatsApp Cloud API؟ شاهد هذا الفيديو الذي تبلغ مدته 60 ثانية أثناء إطلاق Whatsapp Cloud API.
ما هي هذه الحزمة؟ هذه الحزمة عبارة عن غلاف NodeJS غير رسمي ومفتوح المصدر حول واجهة برمجة تطبيقات WhatsApp Cloud الرسمية.
لماذا هذه الحزمة مفيدة؟ لأنه يسمح لك باستخدام WhatsApp Cloud API دون الحاجة إلى كتابة الكثير من التعليمات البرمجية.
هل يمكنني استخدام هذه الحزمة في مشروعي؟ نعم، يمكنك استخدامه كيفما تريد.
هل يمكنني المساهمة في هذه الباقة؟ نعم، يمكنك المساهمة في هذه الحزمة عن طريق إنشاء طلب سحب.
لتثبيت هذه الحزمة في مشروعك:
باستخدام NPM:
npm تثبيت whatsappcloudapi_wrapper
باستخدام الغزل:
غزل إضافة whatsappcloudapi_wrapper
قم أولاً باستيراد الحزمة كما يلي:
const WhatsappCloudAPI = require('whatsappcloudapi_wrapper');
ثم قم بتهيئة الفصل كما يلي:
const Whatsapp = new WhatsappCloudAPI({accessToken: 'رمز الوصول الخاص بك هنا',senderPhoneNumberId: 'معرف رقم هاتف المرسل هنا',WABA_ID: 'معرف حساب Whatsapp Business الخاص بك هنا',});
انتظار Whatsapp.sendText({message: 'Hello World',recipientPhone: 'رقم هاتف المستلم هنا'،});
> Quick Question: - How does a recipient phone number look like? > Quick Answer: - A recipient phone number is the international phone number of the recipient without the '+' prefix. - For example, where a Kenyan phone number is '+254712345678' we would send the message to a recipientPhone 254712345678. - For a phone number +15550253483 we would send the message to a recipientPhone 15550253483. - For an US phone number +1 555-555-5555 we would send the message to a recipientPhone 5555555555. Makes sense?
انتظر Whatsapp.sendLocation({recipientPhone: 'رقم هاتف المستلم هنا'،latitude: 'خط العرض الخاص بك هنا'،longitude: 'خط الطول الخاص بك هنا'،name: 'اسم موقعك هنا'،address: 'موقعك الشارع/العنوان هنا ',});
// أرسل مستندًا مستضافًا على عنوان URL عام، انتظر Whatsapp.sendDocument({recipientPhone: 'رقم هاتف المستلم هنا',caption: 'Invoice #123.',url: 'http://pdfkit.org/demo/out .pdf',});//أو// أرسل مستندًا موجودًا في نظام الملفات المحلي لديك (سيتم تحميل الملف على خادم WhatsApp أولاً قبل إرساله).انتظار Whatsapp.sendDocument({recipientPhone: 'رقم هاتف المستلم هنا',file_path: './output.pdf',caption: 'Invoice #123',});
// أرسل صورة مستضافة على عنوان URL عام، انتظر Whatsapp.sendImage({recipientPhone: 'رقم هاتف المستلم هنا',caption: 'Test',file_path: 'https://example.com/image.png',} );// OR// أرسل صورة موجودة في نظام الملفات المحلي لديك (سيتم تحميل الملف على خادم WhatsApp أولاً قبل إرساله).await Whatsapp.sendImage({recipientPhone: 'رقم هاتف المستلم هنا',caption: 'Test',file_path: './XEIDF3D5FTBDF1.png',});
// أرسل مقطع فيديو مستضافًا على عنوان URL عام، انتظر Whatsapp.sendVideo({recipientPhone: 'رقم هاتف المستلم هنا',caption: 'Test',url: 'https://test-videos.co.uk/vids/ bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4',});// أو// أرسل مقطع فيديو موجود في نظام الملفات المحلي الخاص بك (سيتم تحميل الملف على خادم WhatsApp أولاً قبل إرساله).await Whatsapp.sendVideo({recipientPhone: 'your RecipientPhone number here',caption: 'Test',file_path: './last. mp4',});
// أرسل مقطعًا صوتيًا مستضافًا على عنوان URL عام، انتظر Whatsapp.sendAudio({recipientPhone: 'رقم هاتف المستلم هنا',url: 'https://example.com/audio.mp3',});// OR/ / أرسل ملفًا صوتيًا موجودًا في نظام الملفات المحلي لديك (سيتم تحميل الملف على خادم WhatsApp أولاً قبل إرساله). انتظر Whatsapp.sendAudio({recipientPhone: 'رقم هاتف المستلم هنا',caption: 'Test',file_path: './last.mp3',});
انتظر Whatsapp.sendSimpleButtons({recipientPhone: 'رقم هاتف المستلم هنا',message: `كيف يمكنني مساعدتك اليوم`,listOfButtons: [{title: 'شاهد بعض المنتجات',id: 'see_categories',},{title: "أرسل فاتورتي"،المعرف: "print_invoice"،}،{العنوان: "التحدث إلى إنسان"،المعرف: 'talk_to_human',},],});
انتظار Whatsapp.sendRadioButtons({recipientPhone: 'رقم هاتف المستلم هنا',headerText: 'Black Friday Top 10 Products',bodyText:'Daggie لديه بعض المنتجات الرائعة المُصممة لك استنادًا إلى سجل التسوق السابق الخاص بك.nيرجى تحديد أحد المنتجات المنتجات أدناه.',footerText: 'تمت الموافقة عليه بواسطة Daggie Blanqx',listOfSections: [{title: 'أعلى 3 أزياء'، صفوف: [{title: 'Black LVX T-shirt',description: 'KES 2999.00nLVX is a Warm Cotton T-shirt',id: 'SKU12_black_lvx_tshirt',},{title: 'هوديي أرجواني'، الوصف: 'KES 1999.00n سترة بغطاء للرأس باللون الأرجواني مع شعار Logrocket'، الهوية: 'SKU13_purple_hoodie',},{title: 'Air Jordan 1',description:'KES 10999.00n نتحرك حيث لا يسافر الآخرون. هل تريد الطيران؟',id: 'SKU14_air_jordan_1',},],},{title: 'أفضل 3 الأدوات',rows: [{title: 'Apple Watch',description:'KES 75999.00nالوقت محدود، استمتع بكل ثانية منه',id: 'SKU15_apple_watch',},{title: 'Surface Pro',description: `KES 59999.00nلا تتصفح الويب فحسب، بل تصفح العالم`،id: 'SKU16_surface_pro ',},{title: 'Xiaomi Beats المتحدث'،description: `KES 45699n إنه يكمن في كيفية دقات قلبك، بالطريقة التي ينبض بها Xiaomi.',id: 'SKU17_xiaomi_beats_speaker',},],},{title: 'Top 3 Kitchen',rows: [{title: 'Portable Hand Mixer',description: ` KES7899n قم بإغراء براعمك الحلوة عن طريق خلط طعامك المفضل بشكل موحد. 'SKU18_portable_hand_mixer',},{title: 'صانعة الوافل غير اللاصقة',description: `KES7899nGreat Waffle مصنوعة من أفضل المكونات.',id: 'SKU19_non_stick_waffle_maker',},{title: '6 مجموعات ملاعق الطبخ' الوصف: `KES7899n حافظ على سعادتك بشكل صحيح.`،المعرف: 'SKU20_6_set_cooking_spoons',},],},{title: 'اختيار عشوائي واحد',rows: [{title: 'Nivea Icy Soap',description: `KES899nStay رطب ومنتعش. يغذي بشرتك.`,id: 'SKU21_nivea_icy_soap',},],},],});
انتظر Whatsapp.sendContact({recipientPhone: ReceiverPhone,contact_profile: {addresses: [{street: '1 Hacker Way',city: 'Menlo Park',state: 'CA',zip: '94025',country: 'United States' ,country_code: 'us',type: 'HOME',},{street: '200 Jefferson Dr'، المدينة: 'مينلو Park'، الولاية: 'CA'، الرمز البريدي: '94025'، البلد: 'الولايات المتحدة'، رمز_البلد: 'us'، النوع: 'WORK'،}،]، تاريخ الميلاد: '14-02-2002'، رسائل البريد الإلكتروني: [{البريد الإلكتروني: '[email protected]'، النوع: 'العمل'،}، {البريد الإلكتروني: '[email protected]'، النوع: 'HOME',},],name: {formatted_name: 'Daggie Blanqx',first_name: 'Daggie',last_name: 'Blanqx',middle_name: 'M.'، اللاحقة: 'Sr'، البادئة: 'Sw Engr'، },org: {الشركة: 'WhatsApp',القسم: 'التصميم',العنوان: 'المدير',},الهواتف: [{phone: '+1 (940) 555-1234'، النوع: 'HOME'، wa_id: '16505551234'، // اختياري}، {هاتف: '+1 (650) 555-1234'، النوع: 'WORK'، // Optionalwa_id: '16505551234', // اختياري},],urls: [{url: 'https://www.facebook.com',type: 'WORK',},{url: 'https://www.whatsapp.com',type: 'HOME',},],},});
Let result = wait Whatsapp.createQRCodeMessage({message: `رسالة رمز الاستجابة السريعة الخاصة بك هنا. أنا رسالة مخفية في رمز الاستجابة السريعة.`,imageType: 'png' || 'svg',});let urlOfImage = result.data .qr_image_url;
انظر الصورة أدناه لمعرفة كيفية عرض رمز الاستجابة السريعة:
انتظار Whatsapp.markMessageAsRead({message_id: 'معرف رسالتك هنا'،})؛// سيتم ظهور خطأ غير قابل لإعادة المحاولة إذا لم يتم العثور على الرسالة أو تمت قراءة الرسالة بالفعل.
يجب أن يتراوح طول معرف الزر بين 1 و256 حرفًا.
يجب أن يتراوح طول عنوان الزر بين حرف واحد و20 حرفًا.
قائمة العناصر تقتصر على 10.
يجب أن يتراوح طول وصف العناصر الموجودة في القائمة بين 1 و72 حرفًا.
يجب أن يتراوح طول عنوان القائمة بين 1 و24 حرفًا.
يجب أن يتراوح طول معرف القائمة بين 1 و200 حرف.
// req.body هو نص الطلب الذي يقوم بتنفيذ الأمر ping على خطاف الويب. ستؤدي الحمولات غير الصالحة إلى ظهور خطأ، ويجب عليك الرد بحالة HTTP 5** أو 4**، وليس 200.// تذكر الرد بحالة HTTP 200 في نهاية طلب وارد ناجح.let data = Whatsapp.parseMessage( req.body);/*data.isMessage سيكون صحيحًا إذا كانت رسالة من عميل، فسيكون خطأ وإلا.data.isNotificationMessage سيكون صحيحًا إذا كان كذلك إشعار من Meta (على سبيل المثال، إشعار تسليم الرسالة/قراءة الحالة)، سيكون كاذبًا وإلا ستؤدي البيانات إلى ظهور خطأ إذا كان نص طلب webhook غير صالح أو ليس من Meta.*/
إذا (بيانات؟.isMessage) {let incomingMessage = data.message;let ReceiverPhone = incomingMessage.from.phone; // استخراج رقم هاتف المستلم الخاص بالعميل = incomingMessage.from.name; // استخراج اسم العميل typeOfMsg = incomingMessage.type; // استخراج نوع الرسالة message_id = incomingMessage.message_id; // استخراج معرف الرسالة (typeOfMsg === 'simple_button_message') {let Button_id = incomingMessage.button_reply.id;if (button_id === 'book_appointment') {// نقر العميل على زر بسيط معرفه هو "book_appointment" '.// يمكنك الرد عليهم بإجراء صادر، على سبيل المثال، رسالة نصية في انتظار Whatsapp.sendText({message: `مرحبًا أيها العميل، لقد نقرت على زر "حجز موعد"`,recipientPhone: 'رقم هاتف المستلم هنا'،});};};
إذا (data?.isMessage) {let incomingMessage = data.message;let ReceiverPhone = incomingMessage.from.phone; // استخراج رقم هاتف المستلم الخاص بالعميل = incomingMessage.from.name; // استخراج اسم العميل typeOfMsg = incomingMessage.type; // استخراج نوع الرسالة message_id = incomingMessage.message_id; // استخراج معرف الرسالة (typeOfMsg === 'radio_button_message') {let SelectionId = incomingMessage.list_reply.id;if (selectionId === 'morning_session') {// حدد العميل زر الاختيار الخاص به معرف "morning_session" .// يمكنك الرد عليهم بإجراء صادر، على سبيل المثال، رسالة نصية في انتظار Whatsapp.sendText({message: `لقد حددت خيار 'الجلسة_الصباحية'`,recipientPhone: 'رقم هاتف المستلم هنا'});};};
إذا كانت لديك أي أسئلة، فاطرحها عبر منتديات مناقشة GitHub
إذا كان لديك أي اقتراحات أو تعليقات، يرجى فتح مشكلة أو إنشاء طلب سحب.
هذه الحزمة قيد التطوير النشط.
وهذا يعني أنه تتم إضافة ميزات جديدة بانتظام.
في حالة فقدان الميزة المفضلة لديك، يمكنك دائمًا إعادة الإصدار إلى الوراء أو إنشاء طلب سحب ستتم مراجعته ودمجه في الإصدار التالي.
شكرا لمساهمتك.
ترميز سعيد!
تابعني على تويتر: @daggieblanqx
أنا أيضًا موجود على LinkedIn، حيث يمكنك الإشارة إلى المشاريع الرائعة التي أنشأتها باستخدام هذه الحزمة: @daggieblanqx
منشورات المدونة: Logrocket/@Daggieblanqx