En este documento, se muestra cómo configurar una instancia única del cliente de la API de WhatsApp Business en producción.
Si todavía no lo hiciste, te recomendamos que configures una instancia única del cliente de la API de WhatsApp Business en una máquina de desarrollo. Para ello, sigue las instrucciones indicadas en Configuración de desarrollador: instancia única para probar tu configuración, Luego, puedes seguir este documento para configurar el cliente de la API de WhatsApp Business en producción.
Para completar la configuración inicial, consulta nuestros requisitos y sigue estos pasos:
biz
para almacenar los scripts de configuraciónWA_API_VERSION
Una vez que hayas configurado por completo tu instancia, podrás optar por actualizarla. Para desinstalar el cliente, sigue estos pasos.
Si ya ejecutaste una configuración de desarrollador y quieres reutilizar el número de teléfono durante la producción, consulta la Guía de migración antes de continuar con el resto de este documento.
El contenido de este documento se basa en la suposición de que se realizará una instalación desde cero con un nuevo número de teléfono.
Necesitarás lo siguiente:
Se requiere MySQL 5.7.xx o PostgreSQL 13.x/12.x/11.x.
La contraseña de tu base de datos no debe contener ninguno de estos caracteres: ?{}&~!()^=
Si se incumplen estas condiciones, es posible que la configuración no se complete correctamente.
También existe un problema conocido de compatibilidad con MySQL 8. Evita usar esta versión por ahora hasta que encontremos una solución.
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 almacenar los scripts de configuraciónEjecuta el siguiente código en tu ubicación preferida para el cliente de la API de WhatsApp Business:
mkdir ~/biz; cd ~/biz;
Clona los archivos de configuración prod-docker-compose.yml
y db.env
del directorio Instalación del repositorio de GitHub WhatsApp-Business-API-Setup-Scripts al directorio ~/biz
que creaste en el paso 1.
WA_API_VERSION
La variable de entorno WA_API_VERSION
debería configurarse con la versión actual mediante lo siguiente:
export WA_API_VERSION=current-whatsapp-version
Cambia las variables de entorno de la base de datos en el archivo db.env
, en el directorio ~/biz
, de modo que reflejen tu configuración de 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
El volumen del contenido multimedia local (de manera predeterminada, whatsappMedia:/usr/local/wamedia
) definido en el archivo prod-docker-compose.yml
se utiliza para almacenar archivos multimedia. De manera predeterminada, el volumen se monta en un directorio de la máquina Docker. Como alternativa, puedes montarlo en un directorio de host. Para cambiar el punto de montaje del volumen del contenido multimedia, modifica la definición del volumen dentro de la sección services
, de whatsappMedia
a la ruta del directorio host que estás utilizando.
services: wacore: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ... waweb: ... volumes: - /your-local-media-volume-path:/usr/local/wamedia ...
Para iniciar el cliente de la API de WhatsApp Business con 1 contenedor de app web y 1 contenedor de app principal, ejecuta lo siguiente:
docker-compose -f prod-docker-compose.yml up -d
El resultado se verá como en el siguiente ejemplo:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
Para comprobar si todos los contenedores tienen el estado UP, ejecuta lo siguiente:
docker-compose -f prod-docker-compose.yml ps
El resultado se verá como en el siguiente ejemplo:
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
De manera predeterminada, el contenedor de la aplicación web se ejecutará en el puerto 9090
.
Puedes descargar y configurar nuestra colección de Postman para interactuar con la API de WhatsApp Business si no quieres utilizar la línea de comandos.
Puedes ejecutar una comprobación de estado en el cliente de la API de WhatsApp Business mediante una llamada a la API enviada al nodo health
.
El resultado se verá como en el siguiente ejemplo:
{ "health": { "gateway_status": "unregistered" } }
La respuesta muestra un gateway_status
de unregistered
como gateway_status
porque el cliente de la API de WhatsApp Business aún no está registrado.
Puedes registrar tu cliente de la API de WhatsApp Business mediante una llamada a la API enviada al nodo account
.
Ejecuta otra comprobación de estado en el cliente de la API de WhatsApp Business mediante una llamada a la API enviada al nodo health
después de completar el proceso de registro.
El resultado se verá como en el siguiente ejemplo:
{ "health": { "gateway_status": "connected" } }
El estado gateway_status
de connected
significa que el contenedor de la app principal puede conectarse al servidor de WhatsApp para verificar contactos y enviar mensajes.
Te recomendamos configurar la supervisión del cliente de la API de WhatsApp Business de producción.
Habrá tiempo de inactividad durante el proceso de actualización.
Se recomienda crear una copia de seguridad de la configuración actual de la app antes de actualizarla; eso te permitirá asegurarte de que puedas volver a ponerte en marcha rápidamente. Sigue los pasos de la documentación sobre copias de seguridad y restauración.
Se recomienda siempre realizar las actualizaciones durante las horas de menos actividad.
WA_API_VERSION
por la nueva versiónLa variable de entorno WA_API_VERSION
debe actualizarse a la nueva versión mediante lo siguiente:
export WA_API_VERSION=new-whatsapp-version
Reinicia los contenedores Docker ejecutando lo siguiente:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
o a una superiorAhora puedes utilizar un servicio de actualización de versión de base de datos que te permite actualizar la base de datos con la app en ejecución y así evitar tiempo de inactividad.
El archivo dbupgrade-compose.yml tiene campos que indican la versión del contenedor.
Ejemplo:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Para actualizar la versión de una instalación, inicia el contenedor dbupgrade-service con la variable de entorno WA_API_VERSION
configurada con el valor de la versión más reciente:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Nota: Si utilizas una orquestación que reinicia el contenedor al salir, independientemente del código de salida, inicia el servicio con la variable de entorno EXIT_ON_SUCCESS
configurada en FALSE
para evitar salir del contenedor cuando el código de salida sea 0
.
Si la base de datos se actualiza con éxito, el código del contenedor al salir será 0
. Puedes utilizar el siguiente comando Docker para hacer un seguimiento del estado:
docker wait your-database-upgrade-container-name
El resultado devuelto será el código de salida del contenedor dbupgrade-service.
Reinicia el contenedor Docker de la app web y el de la app principal con la variable de entorno WA_API_VERSION
configurada con la versión más reciente:
WA_API_VERSION=new-whatsapp-version docker-compose -f prod-docker-compose.yml up -d
2.29.3
y versiones posterioresSi vas a actualizar desde v2.29.1
o v2.29.2
, o si tienes problemas durante el proceso de actualización a esas versiones y debiste volver a una versión anterior para mantener la estabilidad, te recomendamos que actualices a v2.29.3
y, luego, ejecutes el siguiente comando en el contenedor Docker de la aplicación web:
chown -R root your-media-directory/incoming your-media-directory/outgoing your-media-directory/shared
A menos que lo hayas cambiado, el directorio predeterminado del contenido es /usr/local/wamedia
.
Nota:
v2.29.1
y v2.29.2
.Te recomendamos que, antes de la instalación, realices una copia de seguridad de la configuración actual de tu aplicación. Sigue los pasos de la documentación sobre copias de seguridad y restauración.
Si debes eliminar todos los contenedores para restablecer el entorno de desarrollo, ejecuta el siguiente comando desde el directorio que contiene el archivo prod-docker-compose.yml
:
docker-compose -f prod-docker-compose.yml down
El resultado se verá como en el siguiente ejemplo:
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
Si, además de los contenedores, quieres eliminar todos los volúmenes definidos en el archivo prod-docker-compose.yml
, ejecuta el comando down
con el parámetro -v
:
docker-compose -f prod-docker-compose.yml down -v
Para solucionar problemas de forma más eficaz, recomendamos utilizar WADebug. WADebug es una herramienta de línea de comandos que sirve para buscar posibles problemas en la configuración de la API de WhatsApp Business y para pedir ayuda a la asistencia de WhatsApp con mayor facilidad.
En los casos en que no se pueda utilizar WADebug o cuando al ejecutar la herramienta se devuelvan errores, ejecuta el siguiente comando para recopilar registros de todos los contenedores:
docker-compose -f prod-docker-compose.yml logs > debug_output.txt
Para recopilar los registros de un servicio específico, agrega el nombre del servicio (waweb
o wacore
) al comando docker-compose logs
:
docker-compose -f prod-docker-compose.yml logs waweb > debug_output.txt
Puedes encontrar los registros en el archivo debug_output.txt
en el directorio actual.
Este software utiliza código de FFmpeg con licencia de LGPLv2.1, y puedes descargar el código fuente aquí.