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 has hecho, te recomendamos que configures una instancia única del cliente de la API de WhatsApp Business en una máquina de desarrollador. Para ello, sigue las instrucciones de la documentación Configuración del desarrollador: instancia única a fin de probar la configuración antes de seguir este documento para configurar el cliente de la API de WhatsApp Business en producción.
Si ya has ejecutado una configuración de desarrollador y quieres volver a utilizar el número de teléfono en producción, consulta la guía de migración antes de continuar con el resto de este documento.
Para el contenido de este documento, se supone que realizarás una instalación nueva con un nuevo número de teléfono.
Necesitarás lo siguiente:
Se necesita MySQL 5.7.xx o PostgreSQL 10.6/9.6.x/9.5.x.
La contraseña de la base de datos no debe contener ninguno de los caracteres siguientes: ?{}&~!()^=.
Si se incumplen estas condiciones es posible que la configuración no se realice correctamente.
También existe un problema de compatibilidad conocido con MySQL 8. Evita utilizar la más reciente por ahora. Estamos trabajando en una corrección.
biz
para los scripts de configuraciónEjecuta el código siguiente 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 Installation del repositorio de GitHub WhatsApp-Business-API-Setup-Scripts al directorio ~/biz
que has creado en el Paso 1.
WA_API_VERSION
La variable de entorno WA_API_VERSION
debe establecerse en la versión actual con el comando siguiente:
export WA_API_VERSION=current-whatsapp-version
Cambia las variables de entorno de la base de datos en el archivo db.env
del directorio ~/biz
para que reflejen la 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 local de contenido multimedia (whatsappMedia:/usr/local/wamedia
de forma predeterminada) definido en el archivo prod-docker-compose.yml
se utiliza para almacenar archivos multimedia. De forma predeterminada, el volumen se monta en un directorio de la máquina con Docker. También puedes optar por montar el volumen de contenido multimedia en un directorio host. Para cambiar el punto de montaje del volumen de contenido multimedia, modifica la definición del volumen dentro de la sección services
de whatsappMedia
por la ruta de acceso del directorio host que utilices.
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 un contenedor de aplicación web y uno de aplicación principal, ejecuta el siguiente comando:
docker-compose -f prod-docker-compose.yml up -d
La respuesta resultante debería tener el aspecto siguiente:
Creating biz_wacore_1 ... done Creating biz_waweb_1 ... done
Para comprobar que todos los contenedores tienen el estado ACTIVADO, ejecuta el comando siguiente:
docker-compose -f prod-docker-compose.yml ps
La respuesta resultante debería tener el aspecto siguiente:
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 forma 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 usar la línea de comandos.
Para realizar una comprobación de estado en el cliente de la API de WhatsApp Business, haz una llamada a la API al nodo health
.
La respuesta resultante debería tener el aspecto siguiente:
{ "health": { "gateway_status": "unregistered" } }
La respuesta muestra gateway_status
como unregistered
para gateway_status
porque todavía no se ha registrado el cliente de la API de WhatsApp Business.
Para registrar el cliente de la API de WhatsApp Business, haz una llamada a la API al nodo account
.
Para realizar otra comprobación de estado en el cliente de la API de WhatsApp Business, haz una llamada a la API al nodo health
después de completar el registro.
La respuesta resultante debería tener el aspecto siguiente:
{ "health": { "gateway_status": "connected" } }
Si gateway_status
es connected
, significa que el contenedor de la aplicación principal puede conectarse al servidor de WhatsApp para consultar contactos y enviar mensajes.
Te recomendamos que configures la supervisión para el cliente de la API de WhatsApp Business de producción.
Se producirá un tiempo de inactividad durante el proceso de actualización.
Te recomendamos encarecidamente que realices una copia de seguridad de la configuración actual de la aplicación antes de actualizarla para asegurarte de que puedas volver a trabajar rápidamente. Sigue la documentación Copia de seguridad y restauración.
Se recomienda siempre llevar a cabo las actualizaciones durante las horas de menor actividad.
WA_API_VERSION
a la nueva versiónLa variable de entorno WA_API_VERSION
debe actualizarse al número de la nueva versión mediante el comando siguiente:
export WA_API_VERSION=new-whatsapp-version
Reinicia los contenedores de Docker ejecutando el comando siguiente:
docker-compose -f prod-docker-compose.yml up -d
v2.23.x
y posterioresAhora puedes utilizar un servicio de actualización de bases de datos que te permitirá actualizar la base de datos mientras la aplicación continúa ejecutándose. De este modo, evitarás el tiempo de inactividad.
El archivo dbupgrade-compose.yml contiene campos en los que se indica la versión del contenedor.
Ejemplo:
services: dbupgrade: image: docker.whatsapp.biz/coreapp:v${WA_API_VERSION:-2.21.3}
Para actualizar una instalación, inicia el contenedor dbupgrade-service con la variable de entorno WA_API_VERSION
establecida en la versión más reciente:
WA_API_VERSION=new-whatsapp-version docker-compose -f dbupgrade-compose.yml up -d
Nota: Si vas a utilizar una orquestación que reinicie el contenedor al cerrarlo (independientemente del código de salida), inicia el servicio con la variable de entorno EXIT_ON_SUCCESS
establecida en FALSE
para evitar que el contenedor se cierre cuando el código de salida sea 0
.
Si la actualización de la base de datos se realiza correctamente, el contenedor se cerrará con el código 0
. Puedes utilizar el siguiente comando de Docker para hacer un seguimiento del estado:
docker wait your-database-upgrade-container-name
Este comando devolverá el código de salida del contenedor dbupgrade-service.
Reinicia los contenedores de Docker de la aplicación principal y la aplicación web con la variable de entorno WA_API_VERSION
establecida en 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 posterioresSi realizas la actualización desde la versión v2.29.1
o v2.29.2
o encontraste problemas durante la actualización a esas versiones y tuviste que volver a una versión anterior por motivos de estabilidad, te recomendamos que actualices a la versión v2.29.3
y que ejecutes el comando siguiente en el contenedor de 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 de contenido multimedia predeterminado es /usr/local/wamedia
.
Nota:
v2.29.1
y v2.29.2
.Se recomienda realizar una copia de seguridad de la configuración actual de la aplicación antes de desinstalarla. Sigue la documentación de Copia de seguridad y restauración.
Si necesitas restablecer tu entorno de desarrollo mediante la eliminación de todos los contenedores, ejecuta el siguiente comando desde el directorio que contiene el archivo prod-docker-compose.yml
:
docker-compose -f prod-docker-compose.yml down
La respuesta resultante debería tener el aspecto siguiente:
Stopping biz_waweb_1 ... done Stopping biz_wacore_1 ... done Removing biz_waweb_1 ... done Removing biz_wacore_1 ... done
Si quieres deshacerte de todos los volúmenes definidos en el archivo prod-docker-compose.yml
además de los contenedores, ejecuta el comando down
con el parámetro -v
:
docker-compose -f prod-docker-compose.yml down -v
Recomendamos utilizar WADebug para solucionar problemas de una forma más efectiva. WADebug es una herramienta de línea de comandos que ayuda a detectar problemas potenciales con la configuración de la API de WhatsApp Business y mejora la eficacia al pedir ayuda al servicio de asistencia de WhatsApp.
En los casos en que no se puede usar WADebug o se obtienen errores al ejecutar la herramienta, ejecuta el comando siguiente para recopilar los 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, añade 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
del directorio actual.
Este software utiliza código de FFmpeg con licencia de LGPLv2.1, y el código fuente se puede descargar aquí.