Este documento mostra como configurar uma instância única do cliente da WhatsApp Business API na produção.
Caso ainda não tenha feito isto, configure a instância única do cliente da WhatsApp Business API em uma máquina do desenvolvedor seguindo as instruções descritas em Configuração do desenvolvedor: instância única para testar a sua configuração antes de seguir as etapas deste documento.
Para concluir a configuração inicial, consulte os nossos requisitos e siga estas etapas:
biz
para os scripts de configuraçãoWA_API_VERSION
Depois de concluir a configuração da sua instância, você pode atualizá-la. Para desinstalar o cliente, siga estas etapas.
Se já tiver realizado a configuração do desenvolvedor e quiser reutilizar o número de telefone na produção, consulte o guia de migração antes de prosseguir com este documento.
O conteúdo deste documento parte do pressuposto de que há uma atualização recente em um novo número de telefone.
Você precisará do seguinte:
É necessário MySQL 5.7.xx ou PostgreSQL 13.x/12.x/11.x.
A senha do banco de dados não deve conter nenhum destes caracteres: ?{}&~!()^=
Se você não seguir essa instrução, poderá haver uma falha na configuração.
Há também um problema de compatibilidade conhecido como MySQL 8. Evite usar a versão mais recente por enquanto. Estamos trabalhando para corrigir o erro.
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
para os scripts de configuraçãoNa localização que você preferir, execute o seguinte código do cliente da WhatsApp Business API:
mkdir ~/biz; cd ~/biz;
Clone os arquivos de configuração prod-docker-compose.yml
e db.env
do diretório Instalação do repositório do GitHub WhatsApp-Business-API-Setup-Scripts para o diretório ~/biz
que você criou na Etapa 1.
WA_API_VERSION
A variável de ambiente WA_API_VERSION
precisa ser definida como a versão mais recente por meio de:
export WA_API_VERSION=current-whatsapp-version
Altere as variáveis de ambiente do banco de dados no arquivo db.env
do diretório ~/biz
para refletir a sua configuração 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
O volume de mídia local (whatsappMedia:/usr/local/wamedia
por padrão) definido no arquivo prod-docker-compose.yml
é usado para armazenar arquivos de mídia. Por padrão, o volume é montado em um diretório na máquina do Docker. Como alternativa, você pode montar o volume de mídia em um diretório de host. Para alterar o ponto de montagem do volume de mídia, modifique a definição do volume dentro da seção services
de whatsappMedia
para o caminho do diretório de host usado por você.
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
Para iniciar o cliente da WhatsApp Business API com 1 contêiner do Webapp e 1 contêiner do Coreapp, execute:
docker-compose -f prod-docker-compose.yml up -d
A saída terá aparência semelhante a esta:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
É possível verificar se todos os contêineres têm um estado UP executando:
docker-compose -f prod-docker-compose.yml ps
A saída terá aparência semelhante a esta:
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
Por padrão, o contêiner do Webapp será executado na porta 9090
.
Caso você não queira usar a linha de comando, baixe e configure a nossa coleção do Postman para interagir com a WhatsApp Business API.
É possível fazer a verificação de integridade na WhatsApp Business API do cliente por meio de uma chamada de API para o nó health
.
A saída terá aparência semelhante a esta:
{ "health": { "gateway_status": "unregistered" } }
A resposta mostra um gateway_status
de unregistered
como o gateway_status
porque o cliente da WhatsApp Business API ainda não foi registrado.
Você pode registrar o cliente da WhatsApp Business API por meio de uma chamada de API para o nó account
.
Faça outra verificação de integridade no cliente da WhatsApp Business API usando uma chamada de API para o nó health
após concluir o registro.
A saída terá aparência semelhante a esta:
{ "health": { "gateway_status": "connected" } }
Um gateway_status
de connected
significa que o contêiner do Coreapp é capaz de se conectar ao servidor do WhatsApp para verificar contatos e enviar mensagens.
É recomendável configurar o monitoramento para o seu cliente da WhatsApp Business API na produção.
Haverá um período de inatividade durante o processo de atualização.
Recomendamos que você faça backup das configurações do aplicativo antes de atualizar para garantir que você possa voltar a usá-lo rapidamente. Siga as instruções na documentação sobre backup e restauração.
É recomendado que as atualizações sejam feitas em horários com menor movimentação.
WA_API_VERSION
para a nova versãoA variável de ambiente WA_API_VERSION
precisa ser atualizada para a versão mais recente por meio de:
export WA_API_VERSION=new-whatsapp-version
Reinicie os contêineres do Docker ao executar:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
e posterioresAgora você pode usar um serviço de atualização do banco de dados para atualizar o banco de dados enquanto o app continua em execução, evitando o tempo de inatividade.
O arquivo dbupgrade-compose.yml tem campos que indicam a versão do contêiner.
Exemplo:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Para atualizar uma instalação, inicialize o contêiner dbupgrade-service com a variável de ambiente WA_API_VERSION
definida como a versão mais recente:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Observação: se você estiver usando uma orquestração que reinicia o contêiner na saída independentemente do código de saída, inicialize o serviço com a variável de ambiente EXIT_ON_SUCCESS
definida como FALSE
. Isso evitará a saída do contêiner quando o código de saída for 0
.
Se a atualização do banco de dados for bem-sucedida, o contêiner sairá com o código 0
. É possível usar o seguinte comando do Docker para acompanhar o status:
docker wait your-database-upgrade-container-name
Com isso, o código de saída do contêiner dbupgrade-service será criado.
Reinicie os contêineres do Docker do Coreapp e do Webapp com a variável de ambiente WA_API_VERSION
definida como a versão mais recente:
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
ou versão superiorSe estiver atualizando v2.29.1
, v2.29.2
ou tiver encontrado problemas durante a atualização para essas versões e teve que reverter para estabilidade, recomendamos que você atualize para v2.29.3
. Depois, execute o seguinte comando no contêiner do Docker do Webapp:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
A menos que você o tenha alterado, o diretório de mídia padrão será /usr/local/wamedia
.
Observação:
v2.29.1
e v2.29.2
.Recomendamos fazer backup das configurações do seu app antes da desinstalação. Siga as instruções na documentação sobre backup e restauração.
Se você precisar redefinir o ambiente de desenvolvimento removendo todos os contêineres, execute o seguinte comando no diretório que contém o arquivo prod-docker-compose.yml
:
docker-compose -f prod-docker-compose.yml down
A saída terá aparência semelhante a esta:
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
Para eliminar todos os volumes definidos no arquivo prod-docker-compose.yml
além dos contêineres, execute o comando down
com o parâmetro -v
:
docker-compose -f prod-docker-compose.yml down -v
Recomendamos o uso do WADebug para solucionar os problemas de modo mais eficaz. WADEbug é uma ferramenta de linha de comando para ajudar a encontrar possíveis problemas com a configuração da WhatsApp Business API e tornar a solicitação de suporte ao WhatsApp mais eficaz.
Se o WADebug não puder ser usado ou a execução da ferramenta retornar erros, execute o seguinte comando para coletar registros de todos os contêineres:
docker-compose -f prod-docker-compose.yml logs > debug_output.txt
Para coletar os registros de um serviço específico, anexe o nome do serviço (waweb
ou wacore
) ao comando docker-compose logs
:
docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt
Os registros podem ser encontrados no arquivo debug_output.txt
no diretório atual.
Esse software usa código de FFmpeg licenciado como LGPLv2.1. Baixe a fonte aqui.