Tài liệu này hướng dẫn cách thiết lập một phiên bản của ứng dụng API WhatsApp Business trong môi trường chính thức.
Trước khi thiết lập API WhatsApp Business trong môi trường chính thức, bạn nên thiết lập một phiên bản của ứng dụng API WhatsApp Business trên máy của nhà phát triển theo hướng dẫn Thiết lập dành cho nhà phát triển: Một phiên bản nhằm thử nghiệm bản thiết lập trước khi làm theo tài liệu này để thiết lập ứng dụng API WhatsApp Business trong môi trường chính thức.
Nếu bạn đã chạy một bản thiết lập dành cho nhà phát triển và muốn dùng lại một số điện thoại trong môi trường chính thức, vui lòng tham khảo Hướng dẫn chuyển trước khi tiếp tục phần còn lại của tài liệu này.
Nội dung trong tài liệu này dựa trên giả định về hoạt động cài đặt mới bằng số điện thoại mới.
Bạn cần có:
Bạn phải có MySQL 5.7.xx hoặc PostgreSQL 10.6/9.6.x/9.5.x.
Mật khẩu cơ sở dữ liệu của bạn không được chứa bất kỳ ký tự nào sau đây: ?{}&~!()^=
Nếu không tuân thủ yêu cầu này, có thể bạn sẽ không thiết lập được.
Ngoài ra, còn một sự cố đã biết về khả năng tương thích với MySQL 8. Hiện tại, vui lòng tránh sử dụng phiên bản mới nhất, chúng tôi đang nỗ lực khắc phục sự cố này.
biz
cho các tập lệnh thiết lậpChạy mã sau ở vị trí bạn muốn cho ứng dụng API WhatsApp Business:
mkdir ~/biz; cd ~/biz;
Sao chép các file cấu hình prod-docker-compose.yml
và db.env
từ thư mục Cài đặt của kho lưu trữ WhatsApp-Business-API-Setup-Scripts GitHub vào thư mục ~/biz
mà bạn đã tạo ở Bước 1.
WA_API_VERSION
Bạn nên đặt biến môi trường WA_API_VERSION
thành phiên bản hiện tại bằng:
export WA_API_VERSION=current-whatsapp-version
Thay đổi các biến môi trường cơ sở dữ liệu trong file db.env
thuộc thư mục ~/biz
để phản ánh cấu hình 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
Dung lượng file phương tiện trên hệ thống (whatsappMedia:/usr/local/wamedia
theo mặc định) đã xác định trong file prod-docker-compose.yml
dùng để lưu trữ file phương tiện. Theo mặc định, dung lượng được liên kết với thư mục trên máy Docker. Ngoài ra, bạn có thể chọn liên kết dung lượng file phương tiện với thư mục lưu trữ. Để thay đổi điểm liên kết dung lượng file phương tiện, hãy sửa đổi định nghĩa về dung lượng trong phần services
từ whatsappMedia
thành đường dẫn của thư mục lưu trữ mà bạn đang sử dụng.
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
Để khởi động ứng dụng API WhatsApp Business với 1 vùng chứa Webapp và 1 vùng chứa Coreapp, hãy chạy:
docker-compose -f prod-docker-compose.yml up -d
Phản hồi sẽ tương tự như sau:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
Bạn có thể kiểm tra để đảm bảo rằng tất cả vùng chứa đều có trạng thái UP bằng cách chạy:
docker-compose -f prod-docker-compose.yml ps
Phản hồi sẽ tương tự như sau:
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
Theo mặc định, vùng chứa Webapp sẽ chạy trên cổng 9090
.
Bạn có thể tải xuống và cấu hình Bộ sưu tập Postman của chúng tôi để tương tác với API WhatsApp Business nếu không muốn sử dụng dòng lệnh.
Bạn có thể tiến hành kiểm tra sự cố trên ứng dụng API WhatsApp Business bằng cách dùng lệnh gọi API đến nút health
.
Phản hồi sẽ tương tự như sau:
{ "health": { "gateway_status": "unregistered" } }
Phản hồi sẽ hiển thị gateway_status
là unregistered
dưới dạng gateway_status
vì chưa đăng ký ứng dụng API WhatsApp Business.
Bạn có thể đăng ký ứng dụng API WhatsApp Business bằng lệnh gọi API đến nút account
.
Tiến hành kiểm tra sự cố một lần nữa trên ứng dụng API WhatsApp Business bằng lệnh gọi API đến nút health
sau khi hoàn tất quá trình đăng ký.
Phản hồi sẽ tương tự như sau:
{ "health": { "gateway_status": "connected" } }
gateway_status
là connected
nghĩa là vùng chứa Coreapp có thể kết nối với máy chủ WhatsApp để kiểm tra danh bạ và gửi tin nhắn.
Bạn nên thiết lập tính năng giám sát ứng dụng API WhatsApp Business trong môi trường chính thức.
Thời gian ngừng hoạt động sẽ xảy ra trong quá trình nâng cấp.
Bạn nên sao lưu các cài đặt ứng dụng hiện tại trước khi nâng cấp để đảm bảo có thể nhanh chóng sao lưu và chạy. Vui lòng xem Tài liệu hướng dẫn sao lưu và khôi phục.
Vì vậy, bạn nên thực hiện nâng cấp vào những lúc rảnh nhất.
WA_API_VERSION
thành phiên bản mớiBạn phải cập nhật biến môi trường WA_API_VERSION
thành số phiên bản mới bằng:
export WA_API_VERSION=new-whatsapp-version
Khởi động lại các vùng chứa Docker bằng cách chạy:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
trở lênGiờ bạn có thể sử dụng dịch vụ nâng cấp cơ sở dữ liệu để nâng cấp cơ sở dữ liệu của mình trong khi ứng dụng vẫn đang chạy nhằm tránh trường hợp ngừng hoạt động.
File dbupgrade-compose.yml có các trường thông tin cho biết phiên bản vùng chứa.
Ví dụ:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Để nâng cấp bản cài đặt, hãy khởi động vùng chứa dbupgrade-service khi đặt biến môi trường WA_API_VERSION
thành phiên bản mới nhất:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Lưu ý: Nếu bạn sử dụng một tổ hợp sẽ khởi động lại vùng chứa khi thoát, bất kể mã thoát là gì, hãy khởi động dịch vụ sau khi đặt biến môi trường EXIT_ON_SUCCESS
thành FALSE
để tránh thoát khỏi vùng chứa khi mã thoát là 0
.
Nếu nâng cấp cơ sở dữ liệu thành công, vùng chứa sẽ thoát với mã 0
. Để theo dõi trạng thái, bạn có thể sử dụng lệnh Docker sau:
docker wait your-database-upgrade-container-name
Lệnh này sẽ trả về mã thoát của vùng chứa dbupgrade-service.
Khởi động lại các vùng chứa Coreapp và Webapp Docker khi đặt biến môi trường WA_API_VERSION
thành phiên bản mới nhất:
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
trở lênNếu đang nâng cấp từ v2.29.1
, v2.29.2
hoặc gặp phải vấn đề trong khi nâng cấp lên các phiên bản đó và phải quay về phiên bản cũ để đạt được sự ổn định, bạn nên nâng cấp lên v2.29.3
, sau đó chạy lệnh sau trên vùng chứa Webapp Docker:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
Thư mục file phương tiện mặc định là /usr/local/wamedia
, trừ khi bạn thay đổi.
Lưu ý:
v2.29.1
và v2.29.2
.Bạn nên sao lưu các lựa chọn cài đặt ứng dụng hiện tại của mình trước khi gỡ cài đặt. Vui lòng xem Tài liệu hướng dẫn sao lưu và khôi phục.
Nếu bạn cần gỡ tất cả các vùng chứa để đặt lại môi trường phát triển, hãy chạy lệnh sau từ thư mục chứa file prod-docker-compose.yml
:
docker-compose -f prod-docker-compose.yml down
Phản hồi sẽ tương tự như sau:
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
Để loại bỏ tất cả dung lượng được xác định trong file prod-docker-compose.yml
ngoài vùng chứa, hãy chạy lệnh down
bằng thông số -v
:
docker-compose -f prod-docker-compose.yml down -v
Bạn nên sử dụng WADebug để khắc phục sự cố hiệu quả hơn. WADebug là công cụ dòng lệnh dùng để phát hiện sự cố tiềm ẩn khi thiết lập API WhatsApp Business, đồng thời để việc yêu cầu trợ giúp từ dịch vụ hỗ trợ WhatsApp trở nên hiệu quả hơn.
Trong trường hợp không thể sử dụng WADebug hoặc thao tác chạy công cụ này trả về lỗi, để thu thập nhật ký từ mọi vùng chứa, hãy chạy lệnh sau:
docker-compose -f prod-docker-compose.yml logs > debug_output.txt
Để thu thập nhật ký của một dịch vụ cụ thể, hãy thêm tên dịch vụ (waweb
hoặc wacore
) vào lệnh docker-compose logs
:
docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt
Bạn có thể tìm nhật ký trong file debug_output.txt
ở thư mục hiện tại.
Phần mềm này sử dụng mã FFmpeg được cấp phép theo LGPLv2.1 và bạn có thể tải xuống nguồn của mã này tại đây.