В этом документе рассказывается, как настроить один экземпляр рабочей версии клиента WhatsApp Business API.
В целях тестирования рекомендуем сначала настроить один экземпляр клиента WhatsApp Business API на устройстве для разработки, следуя инструкциям из этого руководства, а затем переходить к настройке рабочей версии.
Если вы уже настроили клиент для среды разработки и хотите использовать тот же номер телефона в рабочей версии, сначала обратитесь к руководству по миграции.
В этом документе предполагается, что вы выполняете новую установку с новым номером телефона.
Вам понадобятся:
Требуется MySQL 5.7.xx или PostgreSQL 10.6/9.6.x/9.5.x.
Пароль базы данных не должен содержать следующих символов: ?{}&~!()^=
В случае несоблюдения этого требования выполнить настройку, скорее всего, не удастся.
Также имеется известная проблема совместимости с MySQL 8. В настоящее время использовать последнюю версию не рекомендуется. Мы работаем над исправлением.
biz
для скриптов настройки.Выполните следующий код в каталоге, где будет установлен клиент WhatsApp Business API:
mkdir ~/biz; cd ~/biz;
Скопируйте файлы конфигурации prod-docker-compose.yml
и db.env
из каталога установкирепозитория GitHub WhatsApp-Business-API-Setup-Scripts в каталог ~/biz
, созданный на шаге 1.
WA_API_VERSION
.Укажите в переменной среды WA_API_VERSION
текущую версию, выполнив следующую команду:
export WA_API_VERSION=current-whatsapp-version
Измените значения переменных среды для базы данных в файле 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. При желании его можно переместить в каталог хоста. Чтобы изменить местоположение тома медиафайлов, замените определение тома whatsappMedia
в разделе services
путем к используемому каталогу хоста.
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
Чтобы запустить клиент WhatsApp Business API с одним контейнером Webapp и одним контейнером Coreapp, выполните следующую команду:
docker-compose -f prod-docker-compose.yml up -d
Ответ должен выглядеть так:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
Вы можете убедиться в том, что все контейнеры имеют статус 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
.
Если вы не хотите использовать командную строку для работы с WhatsApp Business API, скачайте и настройте нашу коллекцию Postman.
Проверить работоспособность клиента WhatsApp Business API можно с помощью вызова API к узлу health
.
Ответ должен выглядеть так:
{ "health": { "gateway_status": "unregistered" } }
В ответе gateway_status
имеет значение unregistered
, так как клиент WhatsApp Business API ещё не зарегистрирован.
Зарегистрировать клиент WhatsApp Business API можно с помощью вызова API к узлу account
.
После регистрации ещё раз проверьте работоспособность клиента WhatsApp Business API, выполнив вызов API к узлу health
.
Ответ должен выглядеть так:
{ "health": { "gateway_status": "connected" } }
Статус gateway_status
connected
означает, что контейнер Coreapp может подключаться к серверу WhatsApp, проверять контакты и отправлять сообщения.
Рекомендуется настроить контроль рабочего клиента WhatsApp Business API.
Во время обновления будьте готовы к простою.
Перед обновлением настоятельно рекомендуем создать резервную копию текущих настроек приложения, чтобы их можно было быстро восстановить. Следуйте инструкциям из раздела Резервное копирование и восстановление.
Поэтому рекомендуется выполнять все обновления в периоды наименьшей активности.
WA_API_VERSION
.В переменной среды WA_API_VERSION
нужно указать новую версию, выполнив следующую команду:
export WA_API_VERSION=new-whatsapp-version
Перезапустите контейнеры Docker, выполнив следующую команду:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
или вышеВы можете воспользоваться сервисом обновления базы данных без остановки приложения.
В файле dbupgrade-compose.yml есть поля, в которых указана версия контейнера.
Пример:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Чтобы обновить установленную базу данных, запустите контейнер dbupgrade-service, указав в значении переменной среды WA_API_VERSION
последнюю версию базы:
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
.
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
или вышеЕсли вы выполняете обновление с версии v2.29.1
или v2.29.2
либо если обновление до этих версий прошло с проблемами и вам пришлось откатить версию, чтобы обеспечить стабильность, мы рекомендуем произвести обновление до версии v2.29.3
, а затем выполнить следующую команду в контейнере Docker Webapp:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
Каталог медиафайлов по умолчанию — /usr/local/wamedia
(если вы не меняли его).
Примечания.
v2.29.1
и v2.29.2
.Перед удалением настоятельно рекомендуем создать резервную копию текущих настроек приложения. Следуйте инструкциям из раздела Резервное копирование и восстановление.
Чтобы сбросить среду разработки и удалить все контейнеры, выполните следующую команду из каталога, в котором находится файл 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. Это инструмент командной строки для поиска проблем в конфигурации 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. Скачать его можно здесь.