Настройка рабочей версии. Один экземпляр.

В этом документе рассказывается, как настроить один экземпляр рабочей версии клиента WhatsApp Business API.

В целях тестирования рекомендуем сначала настроить один экземпляр клиента WhatsApp Business API на устройстве для разработки, следуя инструкциям из этого руководства, а затем переходить к настройке рабочей версии.

Прежде чем начать

Если вы уже настроили клиент для среды разработки и хотите использовать тот же номер телефона в рабочей версии, сначала обратитесь к руководству по миграции.

В этом документе предполагается, что вы выполняете новую установку с новым номером телефона.

Вам понадобятся:

  • Docker Compose
  • Сервер для работы клиента WhatsApp Business API
    • Требования к серверу можно найти в этом разделе часто задаваемых вопросов.
  • Полностью независимый сервер базы данных с MySQL или PostgreSQL
    • Допустимая задержка при передаче данных между этим сервером и сервером клиента 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. При желании его можно переместить в каталог хоста. Чтобы изменить местоположение тома медиафайлов, замените определение тома whatsappMedia в разделе services путем к используемому каталогу хоста.

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 и одним контейнером Coreapp, выполните следующую команду:

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. Проверка работоспособности.

Если вы не хотите использовать командную строку для работы с WhatsApp Business API, скачайте и настройте нашу коллекцию Postman.

Проверить работоспособность клиента WhatsApp Business API можно с помощью вызова API к узлу health.

Ответ должен выглядеть так:

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

В ответе gateway_status имеет значение unregistered, так как клиент WhatsApp Business API ещё не зарегистрирован.

Шаг 9. Регистрация клиента WhatsApp Business API.

Зарегистрировать клиент WhatsApp Business API можно с помощью вызова API к узлу account.

Шаг 10. Повторная проверка работоспособности.

После регистрации ещё раз проверьте работоспособность клиента WhatsApp Business API, выполнив вызов API к узлу health.

Ответ должен выглядеть так:

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

Статус gateway_statusconnected означает, что контейнер 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, а затем выполнить следующую команду в контейнере 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.

Удаление клиента 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. Это инструмент командной строки для поиска проблем в конфигурации 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. Скачать его можно здесь.