การตั้งค่าการผลิต: อินสแตนซ์เดี่ยว

เอกสารฉบับนี้จะแสดงวิธีตั้งค่าอินสแตนซ์เดี่ยวของไคลเอ็นต์ WhatsApp Business API ในการผลิต

หากคุณยังไม่ได้ดำเนินการดังกล่าว เราขอแนะนำให้คุณตั้งค่าอินสแตนซ์เดี่ยวของไคลเอ็นต์ WhatsApp Business API ในอุปกรณ์ของผู้พัฒนาตามคำแนะนำเกี่ยวกับการตั้งค่าสำหรับผู้พัฒนา: อินสแตนซ์เดี่ยวเพื่อทดสอบการตั้งค่าของคุณก่อนทำตามเอกสารนี้เพื่อตั้งค่าไคลเอ็นต์ WhatsApp Business API ในการผลิต

ก่อนเริ่มต้น

หากคุณเรียกใช้การตั้งค่าของผู้พัฒนาแล้วและต้องการนำหมายเลขโทรศัพท์กลับมาใช้ในการผลิต โปรดดูคู่มือการย้ายก่อนดำเนินการต่อตามข้อมูลที่เหลือในเอกสารนี้

เนื้อหาในเอกสารนี้จัดทำขึ้นโดยใช้สมมติฐานว่าเป็นการติดตั้งแบบใหม่หมดโดยใช้หมายเลขโทรศัพท์ใหม่

คุณจำเป็นต้องมีสิ่งต่อไปนี้:

ต้องใช้ MySQL 5.7.xx หรือ PostgreSQL 10.6/9.6.x/9.5.x

รหัสผ่านของฐานข้อมูลไม่ควรมีอักขระต่อไปนี้: ?{}&~!()^=

หากไม่ปฏิบัติตาม จะตั้งค่าไม่ได้

นอกจากนี้ยังมีปัญหาที่ทราบกันเกี่ยวกับความเข้ากันได้กับ MySQL 8 โปรดหลีกเลี่ยงการใช้เวอร์ชั่นล่าสุดในขณะนี้ เนื่องจากเรากำลังดำเนินการแก้ไขอยู่

การตั้งค่าเบื้องต้นของไคลเอ็นต์ WhatsApp Business API

ขั้นตอนที่ 1: สร้างไดเรกทอรี biz สำหรับสคริปต์การตั้งค่า

เรียกใช้โค้ดต่อไปนี้ในตำแหน่งที่คุณต้องการสำหรับไคลเอ็นต์ WhatsApp Business API:

mkdir ~/biz; cd ~/biz;

ขั้นตอนที่ 2: รับไฟล์การกำหนดค่าไคลเอ็นต์ WhatsApp Business API

คัดลอกไฟล์การกำหนดค่า prod-docker-compose.yml และ db.env จากไดเรกทอรีการติดตั้งของที่เก็บ Github WhatsApp-Business-API-Setup-Scripts ไปยังไดเรกทอรี ~/biz ที่คุณสร้างในขั้นตอนที่ 1

ขั้นตอนที่ 3: กำหนดตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION

ควรกำหนดตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION ให้เป็นเวอร์ชั่นปัจจุบันโดยใช้:

export WA_API_VERSION=current-whatsapp-version

ขั้นตอนที่ 4: กำหนดตัวแปรสภาพแวดล้อมการใช้งานของฐานข้อมูล

เปลี่ยนตัวแปรสภาพแวดล้อมการใช้งานของฐานข้อมูลในไฟล์ 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

ขั้นตอนที่ 5: ตั้งค่าไดรฟ์ข้อมูลสื่อในเครื่อง

ไดรฟ์ข้อมูลสื่อในเครื่อง (whatsappMedia:/usr/local/wamedia ตามค่าเริ่มต้น) ที่กำหนดในไฟล์ prod-docker-compose.yml มีไว้ใช้สำหรับจัดเก็บไฟล์สื่อ ไดรฟ์ข้อมูลจะติดตั้งไว้ในไดเรกทอรีบนอุปกรณ์ Docker ตามค่าเริ่มต้น นอกจากนี้ คุณยังสามารถเลือกติดตั้งไดรฟ์ข้อมูลสื่อในไดเรกทอรีโฮสต์ได้อีกด้วย หากต้องการเปลี่ยนแปลงจุดติดตั้งไดรฟ์ข้อมูลสื่อ ให้แก้ไขการกำหนดไดรฟ์ข้อมูลในส่วน services จาก whatsappMedia ไปยังเส้นทางของไดเรกทอรีโฮสต์ที่คุณกำลังใช้

services:
  wacore:
    ...
    volumes:
      - /your-local-media-volume-path:/usr/local/wamedia
    ...          
  waweb:
    ...
    volumes:
      - /your-local-media-volume-path:/usr/local/wamedia
    ... 

ขั้นตอนที่ 6: เริ่มใช้งานไคลเอ็นต์ WhatsApp Business API

หากต้องการเริ่มใช้งานไคลเอ็นต์ WhatsApp Business API โดยมีคอนเทนเนอร์ Webapp 1 รายการ และคอนเทนเนอร์ Coreapp 1 รายการ ให้เรียกใช้:

docker-compose -f prod-docker-compose.yml up -d

เอาต์พุตผลลัพธ์ควรมีลักษณะดังต่อไปนี้:

Creating biz_wacore_1 ... done
Creating biz_waweb_1  ... done

ขั้นตอนที่ 7: ตรวจสอบยืนยันว่าคอนเทนเนอร์กำลังทำงานอยู่

คุณสามารถตรวจสอบได้ว่าทุกคอนเทนเนอร์มีสถานะเป็น UP โดยเรียกใช้:

docker-compose -f prod-docker-compose.yml  ps

เอาต์พุตผลลัพธ์ควรมีลักษณะดังต่อไปนี้:

     Name                    Command               State                   Ports
-------------------------------------------------------------------------------------------------
biz_wacore_1   /opt/whatsapp/bin/wait_on_ ...   Up      6250/tcp, 6251/tcp, 6252/tcp, 6253/tcp
biz_waweb_1    /opt/whatsapp/bin/wait_on_ ...   Up      0.0.0.0:9090->443/tcp

ตามค่าเริ่มต้น คอนเทนเนอร์ Webapp จะทำงานบนพอร์ต 9090

ขั้นตอนที่ 8: ดำเนินการตรวจสอบระบบ

คุณสามารถดาวน์โหลดและกำหนดค่าคอลเลกชั่น Postman ของเราเพื่อโต้ตอบกับ WhatsApp Business API หากคุณไม่ต้องการใช้บรรทัดคำสั่ง

คุณสามารถดำเนินการตรวจสอบไคลเอ็นต์ WhatsApp Business API โดยใช้การเรียก API ไปยังโหนด health

เอาต์พุตผลลัพธ์ควรมีลักษณะดังต่อไปนี้:

{
    "health": {
        "gateway_status": "unregistered"
    }
}

การตอบกลับจะแสดง gateway_status ของ unregistered ว่าเป็น gateway_status เนื่องจากยังไม่ได้ลงทะเบียนไคลเอนต์ WhatsApp Business API

ขั้นตอนที่ 9: ลงทะเบียนไคลเอ็นต์ WhatsApp Business API

คุณสามารถลงทะเบียนไคลเอ็นต์ WhatsApp Business API ของคุณได้โดยใช้การเรียก API ไปยังโหนด account

ขั้นตอนที่ 10: ดำเนินการตรวจสอบระบบครั้งที่สอง

ดำเนินการตรวจสอบไคลเอ็นต์ WhatsApp Business API อีกครั้งโดยใช้การเรียก API ไปยังโหนด health หลังจากลงทะเบียนเสร็จสิ้น

เอาต์พุตผลลัพธ์ควรมีลักษณะดังต่อไปนี้:

{
    "health": {
        "gateway_status": "connected"
    }
}

gateway_status ของ connected หมายความว่า คอนเทนเนอร์ Coreapp สามารถเชื่อมต่อกับเซิร์ฟเวอร์ WhatsApp เพื่อตรวจสอบผู้ติดต่อและส่งข้อความได้

เราขอแนะนำให้คุณตั้งค่าการติดตามไคลเอ็นต์ WhatsApp Business API การผลิตของคุณ

การอัพเกรดไคลเอ็นต์ WhatsApp Business API

ระบบจะหยุดทำงานในระหว่างกระบวนการอัพเกรด

ขอแนะนำเป็นอย่างยิ่งให้สำรองข้อมูลการตั้งค่าแอพพลิเคชั่นปัจจุบันของคุณก่อนอัพเกรดเพื่อให้มั่นใจว่าคุณจะกลับมาทำงานได้ตามปกติอย่างรวดเร็ว โปรดปฏิบัติตามเอกสารประกอบเกี่ยวกับการสำรองและกู้คืนข้อมูล

เราขอแนะนำให้อัพเกรดเป็นประจำในช่วงเวลาที่มีปริมาณงานน้อยที่สุด

ขั้นตอนที่ 1: เปลี่ยนแปลงตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION เป็นเวอร์ชั่นใหม่

ควรอัพเดตตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION เป็นหมายเลขเวอร์ชั่นใหม่โดยใช้:

export WA_API_VERSION=new-whatsapp-version

ขั้นตอนที่ 2: รีสตาร์ทคอนเทนเนอร์ Docker

รีสตาร์ทคอนเทนเนอร์ Docker โดยเรียกใช้:

docker-compose -f prod-docker-compose.yml up -d

สำหรับผู้ใช้ฐานข้อมูล MySQL ที่จะอัพเกรดเป็น v2.23.x ขึ้นไป

ตอนนี้คุณสามารถใช้บริการอัพเกรดฐานข้อมูลที่ทำให้คุณสามารถอัพเกรดฐานข้อมูลได้ขณะที่แอพพลิเคชั่นยังคงทำงานอยู่เพื่อหลีกเลี่ยงการหยุดทำงาน

ขั้นตอนที่ 1: ดาวน์โหลดไฟล์การกำหนดค่า

ไฟล์ dbupgrade-compose.yml มีช่องที่ระบุเวอร์ชั่นของคอนเทนเนอร์

ตัวอย่าง:

services:
  dbupgrade:
    image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}

ขั้นตอนที่ 2: เริ่มใช้งานคอนเทนเนอร์

หากต้องการอัพเกรดการติดตั้ง ให้เริ่มใช้งานคอนเทนเนอร์ dbupgrade-service โดยตั้งค่าตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION เป็นเวอร์ชั่นล่าสุด:

WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d

หมายเหตุ: หากคุณกำลังใช้กระบวนการปฏิบัติที่รีสตาร์ทคอนเทนเนอร์เมื่อออก โดยไม่ว่าจะใช้รหัสการออกใดก็ตาม ให้เริ่มต้นบริการโดยกำหนดตัวแปรสภาพแวดล้อมการใช้งาน EXIT_ON_SUCCESS เป็น FALSE เพื่อหลีกเลี่ยงการออกจากคอนเทนเนอร์เมื่อรหัสการออกเป็น 0

ขั้นตอนที่ 3: รอให้การอัพเกรดเสร็จสิ้น

หากการอัพเกรดฐานข้อมูลสำเร็จ คอนเทนเนอร์จะออกโดยใช้รหัส 0 คุณสามารถใช้คำสั่ง Docker ต่อไปนี้เพื่อติดตามสถานะได้:

docker wait your-database-upgrade-container-name

ขั้นตอนนี้จะส่งเอาต์พุตรหัสการออกของคอนเทนเนอร์ dbupgrade-service

ขั้นตอนที่ 4: รีสตาร์ทคอนเทนเนอร์ Coreapp และ Webapp

รีสตาร์ทคอนเทนเนอร์ Docker ของ Coreapp และ Webapp โดยกำหนดตัวแปรสภาพแวดล้อมการใช้งาน WA_API_VERSION เป็นเวอร์ชั่นล่าสุด:

WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d

สำหรับผู้ใช้ไคลเอนต์ WhatsApp Business API ที่จะอัพเกรดเป็นเวอร์ชั่น 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

การถอนการติดตั้งไคลเอ็นต์ WhatsApp Business API

ขอแนะนำเป็นอย่างยิ่งให้สำรองข้อมูลการตั้งค่าแอพพลิเคชั่นในปัจจุบันของคุณไว้ก่อนที่จะถอนการติดตั้ง โปรดปฏิบัติตามเอกสารประกอบเกี่ยวกับการสำรองและเรียกคืนข้อมูล

หากคุณต้องการรีเซ็ตสภาพแวดล้อมการพัฒนาของคุณโดยการลบคอนเทนเนอร์ทั้งหมด ให้เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีที่มีไฟล์ prod-docker-compose.yml:

docker-compose -f prod-docker-compose.yml down

เอาต์พุตผลลัพธ์ควรมีลักษณะดังต่อไปนี้:

Stopping biz_waweb_1  ... done
Stopping biz_wacore_1 ... done
Removing biz_waweb_1  ... done
Removing biz_wacore_1 ... done

เพื่อกำจัดปริมาณข้อมูลทั้งหมดที่กำหนดไว้ในไฟล์ prod-docker-compose.yml นอกเหนือจากคอนเทนเนอร์ ให้เรียกใช้คำสั่ง down ด้วยพารามิเตอร์ -v:

docker-compose -f prod-docker-compose.yml down -v

การแก้ไขปัญหา

เราขอแนะนำให้ใช้ WADebug เพื่อการแก้ไขปัญหาที่มีประสิทธิภาพมากขึ้น WADebug คือเครื่องมือบรรทัดคำสั่งเพื่อช่วยในการค้นหาปัญหาที่อาจเกิดขึ้นกับการตั้งค่า WhatsApp Business API และช่วยทำให้การส่งคำขอรับความช่วยเหลือจากฝ่ายสนับสนุนของ WhatsApp มีประสิทธิภาพมากขึ้น

ในกรณีที่ไม่สามารถใช้ WADebug ได้หรือการเรียกใช้เครื่องมือทำให้ได้ข้อผิดพลาดกลับมา ให้เรียกใช้คำสั่งต่อไปนี้เพื่อจะรวบรวมบันทึกจากคอนเทนเนอร์ทั้งหมด:

docker-compose -f prod-docker-compose.yml logs > debug_output.txt

หากต้องการรวบรวมบันทึกของบริการใดบริการหนึ่งโดยเฉพาะ ให้ใส่ชื่อของบริการนั้นๆ (waweb หรือ wacore) ต่อท้ายคำสั่ง docker-compose logs:

docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt

คุณสามารถหาบันทึกได้ในไฟล์ debug_output.txt ในไดเรกทอรีปัจจุบัน


ซอฟต์แวร์นี้จะใช้รหัสของ FFmpeg ซึ่งได้รับสิทธิ์การใช้งานภายใต้ LGPLv2.1 และคุณสามารถดาวน์โหลดแหล่งที่มาได้ที่นี่