نحن بصدد إنهاء API داخل المواقع. راجع مستند حالة إنهاء API داخل المواقع للحصول على التفاصيل، والتعرف على كيفية الترحيل إلى API السحابة من الجيل القادم.
يوضح هذا المستند كيفية إعداد مجموعة التوفّر العالي في مرحلة الإنتاج. كما يوفر إرشادات حول كيفية تمكين الاتصال المتعدد أولاً، وكذلك التغييرات المطلوبة لمجموعة الاتصال المتعدد ذات التوفّر العالي.
إذا لم تقم بالفعل بذلك، فيوصى بإعداد التوفّر العالي/الاتصال المتعدد لعميل API الخاصة بواتساب للأعمال على جهاز المطوّر باتباع إرشادات إعداد المطوّر: المثيل الفردي لاختبار الإعداد قبل اتباع هذا المستند لإعداد عميل API الخاصة بواتساب للأعمال في مرحلة الإنتاج.
قبل بدء أي من هذه الإعدادات، تحقق من المتطلبات.
لإعداد مجموعة التوفّر العالي:
biz
للبرامج النصية للإعدادلإعداد مجموعة الاتصال المتعدد ذي التوفّر العالي:
بمجرد إكمال إعداد المثيل، يمكنك اختيار ترقيته. لإلغاء تثبيت العميل، اتبع هذه الخطوات.
إذا قمت بالفعل بتشغيل إعداد المطوّر وكنت تريد استخدام رقم الهاتف في الإنتاج، فيرجى الرجوع إلى دليل الترحيل قبل متابعة بقية محتوى هذا المستند.
يعتمد المحتوى في هذا المستند على افتراض التثبيت الحديث باستخدام رقم هاتف جديد.
ستحتاج إلى ما يلي:
يلزم توفير الإصدار MySQL 5.7.xx/8.0.xx أو PostgreSQL 13.x/12.x/11.x.
يجب ألا تتضمن كلمة السر الخاصة بقاعدة البيانات الحروف التالية: ?{}&~!()^=
ربما سيتسبب عدم الامتثال بذلك في فشل الإعداد.
755
كوضع الملف في مسار التثبيت وكل النطاقات الفرعية. mkdir your-local-media-volume-path mount -t nfs nfs_server_IP_addr:/shared_directory /your-local-media-volume-path
To install Docker Desktop on your developer machine:
The remaining steps are based on macOS and should be very similar for Linux or Windows 10.
To install Docker using macOS:
Docker Compose is a plugin that is bundled with Docker Desktop and should have installed automatically. For more information about using or Docker Compose, see Overview of Docker Compose. If for some reason Docker Compose was not installed, you can install it by following the instructions located at Install Docker Compose.
biz
للبرامج النصية للإعدادقم بتشغيل الرمز التالي في موقعك المفضل لعميل API الخاصة بواتساب للأعمال:
mkdir ~/biz; cd ~/biz;
انسخ ملفي التكوين prod-multiconnect-compose.yml
وdb.env
من دليل التثبيت في مستودع WhatsApp-Business-API-Setup-Scripts GitHub إلى دليل ~/biz
الذي أنشأته في الخطوة الأولى.
يمكنك تغيير متغيرات بيئة قاعدة البيانات في الملف db.env
ضمن الدليل ~/biz
لعرض تكوين MySQL/PostgreSQL.
WA_DB_ENGINE=MYSQL | PGSQL WA_DB_HOSTNAME=your-database-server WA_DB_PORT=your-database-server-port WA_DB_USERNAME=your-database-username WA_DB_PASSWORD=your-database-password
يتم استخدام وحدة تخزين الوسائط المحلية (whatsappMedia:/usr/local/wamedia
بشكل افتراضي) المحددة في ملف prod-docker-compose.yml
لتخزين ملفات الوسائط. يتم افتراضيًا تثبيت وحدة التخزين على الدليل في جهاز Docker. بدلاً من ذلك، يمكنك اختيار تثبيت وحدة تخزين الوسائط في دليل المضيف. لتغيير نقطة التثبيت في وحدة تخزين الوسائط، يمكنك تعديل تعريف وحدة التخزين داخل القسم services
من whatsappMedia
إلى مسار دليل المضيف الذي تستخدمه.
services: waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... master: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia
لبدء عميل API الخاصة بواتساب للأعمال بحاوية Webapp واحدة وحاويتي Master وحاويتي Coreapp مشابهة لمخطط تقديم التوّفر العالي، استخدم الأوامر التالية بتغييرات ضرورية للبيئة (أي أسماء المضيف وأسماء مستخدم المضيف والمسارات المحلية):
# copy configuration scripts to each Webapp host, ssh to each Webapp host, execute scripts to install Webapp on the host for host in your-webapp-hostname; do scp db.env prod-multiconnect-compose.yml username@$host:/local/path/ cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd waweb done # copy configuration scripts to each Master host, ssh to each Master host, execute scripts to install Master on the host for host in your-master1-hostname your-master2-hostname; do scp db.env prod-multiconnect-compose.yml username@$host:/local/path/ cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd master done # copy configuration scripts to each Coreapp host, ssh to each Coreapp host, execute scripts to install Coreapp on the host for host in your-coreapp1-hostname your-coreapp2-hostname; do scp db.env prod-multiconnect-compose.yml username@$host:/local/path/ cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd wacore done
باختصار، ستعمل الأوامر أعلاه على ما يلي:
prod-multiconnect-compose.yml
وdb.env
لكل مضيفي Webapp (your-webapp-hostname
في هذا المثال) وابدأ الخدمة waweb
في هؤلاء المضيفين؛prod-multiconnect-compose.yml
وdb.env
إلى كل مضيفي Master (your-master1-hostname
وyour-master2-hostname
في هذا المثال) وتشغيل الخدمة Master على هؤلاء المضيفين؛prod-multiconnect-compose.yml
وdb.env
إلى كل مضيفي في Coreapp (your-coreapp1-hostname
وyour-coreapp2-hostname
في هذا المثال) وتشغيل الخدمة wacore
على هؤلاء المضيفين.يمكنك التحقق من أن كل الحاويات متوفرة بالحالة RUNNING عن طريق تشغيل:
EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f prod-multiconnect-compose.yml ps
يمكنك تنزيل مجموعة Postman التي نوفرها وتكوينها للتفاعل مع API الخاصة بواتساب للأعمال إذا كنت لا تريد استخدام سطر الأوامر.
يمكنك إجراء التحقق من سلامة الأداء في عميل API الخاصة بواتساب للأعمال باستخدام استدعاء API إلى العقدة health
.
يجب أن يبدو الإخراج الناتج كما يلي:
{ "health": { "your-master1-hostname:85cdd51506fd": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] }, "your-master2-hostname:8dd3f5bea27d": { "gateway_status": "unregistered", "role": "primary_master" }, "your-coreapp1-hostname:753efb1cf72c": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] }, "your-coreapp2-hostname:75d7355eaaaa": { "errors": [ { "code": 1011, "title": "Service not ready", "details": "Wacore is not instantiated. Please check wacore log for details." } ] } } } 200
تعرض الاستجابة gateway_status
لـ unregistered
نظرًا إلى أنه لم يتم تسجيل عميل API الخاصة بواتساب للأعمال بعد.
يمكنك تسجيل عميل API الخاصة بواتساب للأعمال باستخدام استدعاء API في العقدة account
.
قم بإجراء التحقق من سلامة الأداء مرة أخرى بعميل API الخاصة بواتساب للأعمال باستخدام استدعاء API إلى العقدة health
بعد إكمال التسجيل، والتأكد من أن إحدى حاويات Coreapp تتوفر بالحالة gateway_status
لـ connected
.
يجب أن يبدو الإخراج الناتج كما يلي:
{ "health": { "your-master1-hostname:85cdd51506fd": { "gateway_status": "disconnected", "role": "secondary_master" }, "your-master2-hostname:8dd3f5bea27d": { "gateway_status": "disconnected", "role": "primary_master" }, "your-coreapp1-hostname:753efb1cf72c": { "gateway_status": "connected", "role": "coreapp" }, "your-coreapp2-hostname:75d7355eaaaa": { "gateway_status": "disconnected", "role": "coreapp" } } } 200
ملاحظة: في وضع التوفّر العالي، لن يتم سوى ربط عقدة Coreapp واحدة فقط (your-coreapp1-hostname:753efb1cf72c
في هذا المثال) بخادم واتساب، وستتمتع جميع العُقد الأخرى بما في ذلك عقدة Master الرئيسية بالحالة gateway_status
لـ disconnected
. إذا تعطلت your-coreapp1-hostname:753efb1cf72c
، فسيتم استبدالها بـ your-coreapp2-hostname:75d7355eaaaa
وربطها بخادم واتساب للحفاظ على التوفّر العالي.
يوصى بإعداد التحقق في عميل API الخاصة بواتساب للأعمال للإنتاج.
لقد انتهيت الآن من إعداد عميل API الخاصة بواتساب للأعمال في وضع التوفّر العالي. عند التعيين على هذا الوضع، لن تتمكّن سوى حاوية Coreapp من الربط بخادم واتساب وإرسال الرسائل في أي وقت. إذا كنت تريد توفر العديد من حاويات Coreapp لإرسال الرسائل في الوقت نفسه من أجل زيادة معدل نقل الرسائل، فاتبع الخطوات الواردة في قسم إعداد مجموعة الاتصال المتعدد ذات التوفّر العالي الموضح أدناه.
استخدم نقطة نهاية الأقسام لإعداد قسمين. يجب أن تظهر لك استجابة HTTP بالحالة 201 Created
.
يمكنك إجراء التحقق من سلامة الأداء في عميل API الخاصة بواتساب للأعمال باستخدام استدعاء API إلى العقدة health
للتحقق من تشغيل كل العُقد بشكل سليم.
يجب أن يبدو الإخراج الناتج كما يلي:
{ "health": { "your-master1-hostname:85cdd51506fd": { "gateway_status": "disconnected", "role": "secondary_master" }, "your-master2-hostname:8dd3f5bea27d": { "gateway_status": "connected", "role": "primary_master" }, "your-coreapp1-hostname:753efb1cf72c": { "gateway_status": "connected", "role": "coreapp" }, "your-coreapp2-hostname:75d7355eaaaa": { "gateway_status": "connected", "role": "coreapp" } } } 200
ملاحظة: في وضع الاتصال المتعدد ذي القسمين، سيتم ربط عقدتي Coreapp (your-coreapp1-hostname:753efb1cf72c
وyour-coreapp2-hostname:75d7355eaaaa
في هذا المثال) بخادم واتساب، كما سيتم ربط عقدة Master الرئيسية (your-master2-hostname:8dd3f5bea27d
في هذا المثال) بالخادم.
في هذا المثال حتى الآن، تتوفر لديك حاويتا Coreapp وتم تقسيم عمليات تحميل الرسائل بينهما. مع ذلك، إذا تعطلت إحدى حاويتي Coreapp، فستفشل نصف عمليات إرسال الرسائل لديك. للحفاظ على التوّفر العالي في إعداد الاتصال المتعدد الجديد، يمكنك بدء حاوية Coreapp ثالثة في مضيف Coreapp جديد (
your-coreapp3-hostname
في هذا المثال) لتجاوز فشل حاوية Coreapp واحدة، وهو مشابه للمخطط المعروض في تقديم الاتصال المتعدد.
لتشغيل حاوية Coreapp الثالثة، قم بتشغيل الأمر التالي:
# copy configuration scripts to the 3rd Coreapp host, ssh to the Coreapp host, execute scripts to install Coreapp on the host for host in your-coreapp3-hostname; do scp db.env prod-multiconnect-compose.yml username@$host:/local/path/ cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd wacore done
قم بإجراء التحقق من سلامة الأداء مرة أخرى للتأكد من أن جميع العُقد تعمل بشكل صحيح باستخدام استدعاء API إلى العقدة health
.
يجب أن يبدو الإخراج الناتج كما يلي:
{ "health": { "your-master1-hostname:85cdd51506fd": { "gateway_status": "disconnected", "role": "secondary_master" }, "your-master2-hostname:8dd3f5bea27d": { "gateway_status": "disconnected", "role": "primary_master" }, "your-coreapp1-hostname:753efb1cf72c": { "gateway_status": "connected", "role": "coreapp" }, "your-coreapp2-hostname:75d7355eaaaa": { "gateway_status": "connected", "role": "coreapp" }, "your-coreapp3-hostname:23b50199bec2": { "gateway_status": "disconnected", "role": "coreapp" } } } 200
تعمل حاوية Coreapp الجديدة (your-coreapp3-hostname
:23b50199bec2
في هذا المثال) الآن باعتبارها حاوية احتياطية، ولكن لم يتم ربطها حاليًا بخادم واتساب. إذا توقفت إحدى حاويتي Coreapp المرتبطتين عن العمل، فسيتم ربط الحاوية الثالثة بخادم واتساب للحفاظ على العدد الكلي للأقسام وهو 2.
لدعم 100 إلى 150 رسالة/الثانية، يوصى باستخدام حاويتي Webapp على الأقل. إذا كنت تريد تحقيق التوفّر العالي لحاوية Webapp، فيمكنك تشغيل حاويات Webapp على أكثر من مضيفين واستضافتها بتجاوز موازن التحميل، مثل HAProxy أو Nginx أو ELB. بدلاً من الوصول إلى نقاط النهاية لعميل API الخاصة بواتساب للأعمال النشاط التجاري من خلال https://your-webapp-hostname:your-webapp-port/
، يجب أن تستخدم https://your-load-balancer-name:your-load-balancer-port/
.
يوصى بتشغيل 3 حاويات Master على أجهزة مضيفة مختلفة. لا يوجد سبب لتوفر أكثر من 3 حاويات Master في الإنتاج بغض النظر عن عدد الأقسام المتوفرة لديك. تكون عمليات التحميل على حاويات Master خفيفة ويمكنك تحديد مواقعها مع حاويات Coreapp.
يوصى بتشغيل عدد shard_number + X
من حاويات Coreapp بأجهزة مضيفة مختلفة لتجاوز بعدد X
من حالات فشل المضيف.
ستواجه مشكلة زمن التوقف أثناء عملية الترقية.
يوصى بشدة بإجراء نسخ احتياطي لإعدادات التطبيق الحالية لديك قبل الترقية للتأكد من أنه يمكنك نسخ الإعدادات احتياطيًا وتشغيلها سريعًا. يُرجى اتباع وثائق النسخ الاحتياطي والاستعادة.
نوصي دائمًا بتنفيذ الترقيات خلال الساعات الأقل نشاطًا.
يجب تحديث المتغير البيئي WA_API_VERSION
إلى رقم الإصدار الجديد. قم بتشغيل الأوامر التالية بالتغييرات الضرورية للبيئة (أي أسماء المضيف وأسماء مستخدم المضيف والمسارات المحلية):
# ssh to each Webapp host, execute scripts with new WA_API_VERSION to upgrade Webapp on the host for host in your-webapp-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.x docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd waweb done # ssh to each Master host, execute scripts with new WA_API_VERSION to upgrade Master on the host for host in your-master1-hostname your-master2-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.x docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd master done # ssh to each Coreapp host, execute scripts with new WA_API_VERSION to upgrade Coreapp on the host for host in your-coreapp1-hostname your-coreapp2-hostname your-coreapp3-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.x docker-compose -f /local/path/prod-multiconnect-compose.yml up -d" ssh username@$host $cmd wacore done
2.23.x
والإصدارات الأحدثيمكنك الآن الاستفادة من خدمة ترقية قاعدة البيانات التي ستتيح لك ترقية قاعدة البيانات بينما لا يزال تطبيقك قيد التشغيل لتجنب زمن التوقف.
يتضمن الملف dbupgrade-compose.yml حقولاً تشير إلى إصدار الحاوية.
المثال:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
لترقية عملية تثبيت، يمكنك بدء تشغيل الحاوية dbupgrade-service مع تعيين متغير البيئة WA_API_VERSION
على أحدث إصدار:
EXTERNAL_HOSTNAME=$host_to_upgradedb WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
ملاحظة: إذا كنت تستخدم تزامنًا يعيد تشغيل الحاوية عند الخروج بغض النظر عن الرمز للخروج، فيمكنك بدء تشغيل الخدمة من خلال تعيين متغير البيئة EXIT_ON_SUCCESS
على القيمة FALSE
لتجنب الخروج من الحاوية عندما يكون الرمز للخروج بالقيمة 0
.
إذا تمت ترقية قاعدة البيانات بنجاح، فستخرج الحاوية بالرمز 0
. يمكنك استخدام أمر Docker التالي لتتبع الحالة:
docker wait your-database-upgrade-container-name
سيؤدي ذلك إلى عرض رمز الخروج الخاص بحاوية dbupgrade-service.
أعد تشغيل حاويات Docker في Coreapp وWebapp مع تعيين متغير البيئة WA_API_VERSION
إلى أحدث إصدار:
EXTERNAL_HOSTNAME=$host_to_upgradedb WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
2.29.3
والإصدارات الأحدثإذا كنت تقوم بالترقية من v2.29.1
وv2.29.2
أو واجهت مشكلات أثناء الترقية إلى هذه الإصدارات وكان عليك الرجوع إلى إصدار قديم من للحصول على أداء ثابت، فنوصي بالترقية إلى v2.29.3
ثم تشغيل الأمر التالي في حاوية Webapp Docker:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
ما لم تقم بتغييره، فإن دليل الوسائط الافتراضي هو /usr/local/wamedia
.
ملاحظة:
v2.29.1
وv2.29.2
.إذا كنت تحتاج إلى إعادة تعيين بيئة التطوير من خلال إزالة كل الحاويات، فاستخدم الأوامر التالية بالتغييرات الضرورية للبيئة (أي أسماء المضيف وأسماء مستخدم المضيف والمسارات المحلية):
# ssh to each Webapp host, execute scripts to uninstall Webapp on the host for host in your-webapp-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-docker-compose.yml down" ssh username@$host $cmd waweb done # ssh to each Master host, execute scripts to uninstall Master on the host for host in your-master1-hostname your-master2-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-docker-compose.yml down" ssh username@$host $cmd master done # ssh to each Coreapp host, execute scripts to uninstall Coreapp on the host for host in your-coreapp1-hostname your-coreapp2-hostname your-coreapp3-hostname; do cmd="EXTERNAL_HOSTNAME=$host WA_API_VERSION=2.23.4 docker-compose -f /local/path/prod-docker-compose.yml down" ssh username@$host $cmd wacore done
لتجميع السجلات من جميع الحاويات في المضيف، قم بتشغيل الأمر التالي:
EXTERNAL_HOSTNAME=$host_to_collect_logs docker-compose -f /local/path/prod-multiconnect-compose.yml logs > debug_output.txt
لتجميع سجلات خدمة معينة، قم بإلحاق اسم الخدمة (مثل waweb
أو master1
أو wacore1
) بالأمر docker-compose logs
.
EXTERNAL_HOSTNAME=$host_to_collect_logs docker-compose -f /local/path/prod-multiconnect-compose.yml logs waweb > debug_output.txt
يمكنك العثور على السجلات في الملف debug_output.txt
في الدليل الحالي.
يستخدم هذا البرنامج الرمز FFmpeg المُرخص بموجب رخصة جنو العمومية الصغرى (LGPL) بالإصدار 2.1 ويمكن تنزيل مصدره من هنا.