Estamos retirando la API local. Consulta nuestro documento Retirada de la API local para obtener más información y aprender a migrar a nuestra API de nube de nueva generación.
En este documento se describe cómo usar Amazon Web Services (AWS) para implementar la API de WhatsApp Business. El proceso se puede dividir en dos pasos principales:
Una vez que hayas completado la configuración, puedes optar por actualizar el cliente. Si alguna vez necesitas reiniciar la aplicación web y la aplicación principal, sigue estos pasos.
En este documento, se presenta una nueva plantilla de AWS que hemos probado para obtener un rendimiento de mensajes mayor y más estable. Si buscas la plantilla anterior de AWS, consulta Archivo de AWS.
Antes de empezar, necesitarás hacer lo siguiente:
Debes configurar una cuenta de AWS válida y saber cómo funciona AWS. WhatsApp proporciona plantillas de CloudFormation para implementar el cliente de la API de WhatsApp Business fácilmente. Consulta el Centro de recursos introductorios de AWS para obtener más información.
Debes crear un nuevo par de claves para acceder a la instancia de EC2 creada mediante la plantilla de la API de WhatsApp Business. También puedes usar un par de claves creado anteriormente. Consulta la documentación sobre los pares de claves de Amazon EC2 para obtener información sobre la creación y el uso de pares de claves con una instancia de EC2.
El par de claves debe crearse con la región para la que vas a implementar la API de WhatsApp Business.
El cliente de la API de WhatsApp Business utiliza una imagen de CentOS 9 (disponible en AWS Marketplace). Los términos y condiciones se deben revisar y aceptar antes de usar la plantilla. Si no se aceptan las condiciones, no se puede crear la plantilla.
Para revisar y aceptar la imagen AMI de CentOS 9:
Las plantillas de la API de WhatsApp Business utilizan el tipo de recurso EFS, que no está disponible en todas las regiones de AWS. Por consiguiente, solo se admiten las siguientes regiones actualmente:
En función de las pruebas iniciales, WhatsApp determinará si podemos proporcionar una opción alternativa que esté disponible en todas las regiones.
No, no admitimos KOPS. Admitimos la solución de AWS basada en ECS. También disponemos de una guía de configuración de Kubernetes mediante Minikube.
La red de nube privada virtual (VPC) se crea, generalmente, al registrarse para obtener una cuenta de AWS. Además, puede haber varias personalizaciones y restricciones de control de accesos necesarias que sean específicas del negocio de una empresa.
Si la infraestructura de la red VPC ya se ha creado, puedes omitir este paso. De lo contrario, puedes usar la plantilla siguiente para crear la infraestructura de red en AWS.
La plantilla de red se proporciona únicamente como referencia. Puedes modificarla según tus necesidades específicas.
Para implementar la plantilla de red:
Nombre | Descripción |
---|---|
| Obligatorio Nombre de la pila que se va a crear. |
Nombre | Descripción |
---|---|
| Obligatorio Zonas de disponibilidad (AZ) para crear la VPC. |
| Obligatorio Número de zonas de disponibilidad seleccionadas. |
Nombre | Descripción |
---|---|
| Obligatorio Intervalo de direcciones IP (CIDR) para esta VPC. |
| Obligatorio El inquilino de la VPC. |
Nombre | Descripción |
---|---|
| Obligatorio El intervalo de direcciones IP (CIDR) para las subredes públicas. |
| Obligatorio El intervalo de direcciones IP (CIDR) para las subredes públicas. |
| Opcional Obligatorio si hay más de dos zonas de disponibilidad. |
| Opcional Obligatorio si hay más de tres zonas de disponibilidad. |
Nombre | Descripción |
---|---|
| Obligatorio Opciones: |
| Condicional. Obligatorio si la creación de la subred privada está definida en |
| Condicional. Obligatorio si la creación de la subred privada está definida en |
| Condicional. Obligatorio si la creación de la subred privada está definida en |
| Condicional. Obligatorio si la creación de la subred privada está definida en |
Antes de implementar la pila de la API de WhatsApp Business en AWS, tienes que subir los archivos de configuración de las subpilas indicadas a un contenedor de S3 para el que dispongas de acceso de lectura.
WhatsApp Enterprise es la plantilla principal y crea todos los recursos (excepto la red) necesarios para el cliente de la API de WhatsApp Business. Como se ha indicado anteriormente, esta plantilla también crea un recurso de base de datos, si es necesario.
Para implementar el cliente de la API de WhatsApp Business:
Nombre | Descripción |
---|---|
| Obligatorio Nombre de la pila que se va a crear. El nombre de la pila debe tener 22 caracteres como máximo. Nota: En el caso de las implementaciones en las regiones ap-southeast-1, ap-southeast-2, ap-northeast-1 o ap-northeast-2, el nombre de la pila debe tener ocho caracteres como máximo. Si el valor de |
Nombre | Descripción |
---|---|
| Opcional Activa la función de alta disponibilidad. Valor predeterminado: |
| Obligatorio Número de mensajes que quieres enviar por segundo. Junto con la opción |
| Obligatorio Tipo predominante de mensajes que quieres enviar y recibir. Junto con la opción |
| Opcional Instala node-exporter en cada host de la aplicación principal con fines de supervisión de instancias. Valor predeterminado: |
Nombre | Descripción |
---|---|
| Obligatorio Nombre de la pila de CloudFormation de la red creada mediante el paso de configuración de la red. |
| Obligatorio Número de subredes elegidas. Actualmente, solo se admiten dos subredes para la implementación a fin de distribuir las tareas de ECS de forma uniforme en todos los hosts. |
| Obligatorio Actualmente, solo se admiten equilibradores de carga accesibles desde Internet, que son visibles para el público. Modifica los grupos de seguridad una vez creada la pila de la API para bloquear el acceso innecesario. |
Nombre | Descripción |
---|---|
| Obligatorio El par de claves correspondiente para acceder a la instancia de EC2, si es necesario. |
| Opcional Esto es para prepararse para el futuro y admitir clientes de la API de WhatsApp Business experimentales. El valor predeterminado debería servir para la mayoría de casos. |
| Obligatorio Se recomienda usar siempre la versión estable más reciente (consulta el registro de cambios para ver la versión más reciente). La versión del cliente de la API de WhatsApp Business siempre empieza por "v", a menos que se indique lo contrario de forma explícita. El uso de una versión incorrecta provocará un error de creación de la pila. |
| Obligatorio Se recomienda elegir 32 GB o más para las cargas de trabajo de producción. |
Nombre | Descripción |
---|---|
| Opcional Activa el almacenamiento de la información de configuración en la base de datos. |
| Opcional Nombre de host de la base de datos existente. |
| Obligatorio El nombre del administrador para acceder a la base de datos. |
| Obligatorio La contraseña del administrador para acceder a la base de datos. La contraseña de la base de datos no puede contener ninguno de estos caracteres: ?{}&~!()^/"@ |
| Obligatorio Número de puerto para acceder al back-end de la base de datos. |
| Opcional Indica si la conexión de base de datos persiste para los contenedores web. Valor predeterminado: |
| Opcional Tiempo en milisegundos que debe pasar antes de que la instancia de base de datos cierre las conexiones inactivas. |
Nombre | Descripción |
---|---|
| Opcional Controlador de registros para los registros de contenedor. |
| Opcional Tamaño máximo de un archivo de registro de contenedor en MB antes de rotarse. Los valores permitidos están comprendidos entre 1 y 250 (ambos incluidos). Valor predeterminado: 50 |
| Opcional El número máximo de archivos de registro que se retendrán por contenedor. Los valores permitidos están comprendidos entre 1 y 30 (ambos incluidos). Valor predeterminado: 7 |
| Opcional Número de días que se retendrán los registros en CloudWatch. Valor predeterminado: |
Nombre | Descripción |
---|---|
| No se usa. Deja este parámetro en blanco. |
Nombre | Descripción |
---|---|
| Opcional De forma predeterminada, se usa la clave de servicio de AWS (la opción Default-Key) para cifrar los datos DB y EFS en reposo. Las otras opciones son:
|
| Opcional Puedes proporcionar un identificador de clave de KMS que se usará para cifrar los datos. Déjalo en blanco si no seleccionas la opción User-Provided-Key. |
| Opcional De forma predeterminada, se cifran los datos que están en tránsito hacia la base de datos. Actualmente, esto solo es aplicable para la aplicación principal. Todavía no se admite el cifrado de la aplicación web. Además, con un nuevo motor de base de datos, aunque esta opción esté desactivada, la aplicación principal realiza el cifrado, pero sin la verificación del certificado del servidor (identidad). |
| Opcional El valor predeterminado contiene el paquete de certificado RDS. Si utilizas una base de datos que no es de RDS, puedes proporcionar el paquete de certificado de CA correspondiente o dejarlo en blanco. El valor predeterminado es adecuado para activar una conexión segura con la base de datos. |
| Opcional El certificado de cliente para la conexión de base de datos. |
| Opcional Clave de cliente para la conexión de base de datos. |
Estos parámetros son obligatorios para que los paneles de Grafana recuperen las métricas de aplicaciones con fines de supervisión.
Nombre | Descripción |
---|---|
| Obligatorio Especifica el nombre de usuario de la API de WhatsApp Business. |
| Obligatorio Especifica la contraseña de |
Nombre | Descripción |
---|---|
| Obligatorio Especifica la contraseña que se usa como contraseña de inicio de sesión para el panel de Grafana cuando se crea la pila. |
| Opcional Indica si el protocolo SMTP está activado para configurar alertas de correo electrónico. Los valores válidos son: Valor predeterminado: |
| Opcional Host de SMTP que se utiliza en las alertas de correo electrónico. Por ejemplo, smtp.gmail.com:465. |
| Opcional Especifica el nombre de usuario de SMTP que se utiliza en las alertas de correo electrónico. |
| Opcional Especifica la contraseña de SMTP que se utiliza en las alertas de correo electrónico. |
Una vez creada la plantilla correctamente, se mostrarán los parámetros siguientes:
De forma predeterminada, las reglas de seguridad creadas por la pila permiten que todo el tráfico pueda alcanzar las instancias de EC2 mediante SSH, los extremos de la API y el panel de Grafana mediante HTTPS y los contenedores de Prometheus y cadvisor. Por motivos de seguridad, te recomendamos encarecidamente que bloquees el acceso innecesario. En esta sección se mostrarán los pasos de actualización de la regla de seguridad de SSH a modo de ejemplo. Siempre debes restringir el acceso de SSH a solo el tráfico en el que confíes.
"<stackName>-ms-xxx-EcsSecurityGroup"
a fin de restringir el acceso de SSH para la pila de supervisión.
Una vez implementado correctamente el cliente de la API de WhatsApp Business, debe configurarse para ponerse en funcionamiento.
Consulta la guía sobre números de teléfono para obtener información detallada acerca del registro de números de teléfono.
Descarga el certificado codificado mediante Base64 de tu cuenta de WhatsApp en Business Manager de Facebook en la pestaña Números de teléfono del Administrador de WhatsApp.
Cuando tengas el número de teléfono correcto seleccionado y el certificado codificado mediante Base64, debes registrar el cliente de la API de WhatsApp Business con el nodo account
. Para obtener más información, consulta la documentación sobre el registro.
Si el número de teléfono puede recibir mensajes de texto, utiliza el método de SMS para recuperar el código de registro.
Si ya has recibido el código de registro de WhatsApp, puedes omitir este paso.
Una vez creada la pila, debes utilizar la llamada a la API shards
para aumentar el número de instancias activas de la aplicación principal a fin de alcanzar el rendimiento deseado. El número de particiones se puede consultar en la sección Output (Salida) de la pila.
En la documentación sobre la configuración de la aplicación, se describen la configuración de las devoluciones de llamada web de la API de WhatsApp Business y otros parámetros. Para alcanzar un rendimiento estable, se recomienda la siguiente configuración de la aplicación.
{ "settings": { "application": { "callback_backoff_delay_ms": 3000, "callback_persist": true, "db_garbagecollector_enable": false, # change this to true when there are no ongoing messaging campaigns "heartbeat_interval": 5, "max_callback_backoff_delay_ms": 900000, "media": { "auto_download": [ "document", "image", "video", "voice", "sticker", "audio" ] }, "notify_user_change_number": true, "pass_through": false, "sent_status": true, "show_security_notifications": false, "skip_referral_media_download": false, "unhealthy_interval": 30, "wa_id": "12245552741", "webhooks": { "max_concurrent_requests": 24, "message": { "delivered": true, "read": true, "sent": true }, "url": "<YOUR_WEBHOOK_SERVER_URL>" } } }, "meta": { "api_status": "stable", "version": "2.41.3" } }
El cliente de la API de WhatsApp Business genera un certificado autofirmado de forma predeterminada en el momento de su creación. Es posible que el certificado de la autoridad de certificación (CA) usado para generar el certificado autofirmado sea necesario para verificar el extremo del cliente de la API de WhatsApp Business y evitar una advertencia de confianza de certificado.
Puedes descargar el certificado de CA y almacenarlo localmente para evitar la advertencia de confianza de certificado, o bien subir uno propio. Para obtener más información, consulta la documentación sobre el nodo certificate
.
En las implementaciones de AWS, el certificado de SSL se crea con el nombre de host del equilibrador de carga. Si se utiliza una dirección IP en lugar del nombre de host para el acceso, se seguirá mostrando la advertencia.
WhatsApp admitirá la configuración de certificados SSL proporcionados por el cliente en una versión futura.
Cuando hayas completado los pasos de configuración y registro, podrás enviar y recibir un mensaje para validar la funcionalidad básica del cliente de la API de WhatsApp Business. Este proceso se describe detalladamente en la documentación sobre los mensajes.
Cuando hayas recibido un mensaje correctamente, el cliente de la API de WhatsApp Business realizará una operación POST
del estado o los detalles del mensaje en el webhook configurado en el paso 3.
Si el mensaje se ha recibido correctamente, has terminado. Consulta la documentación de referencia para obtener más información acerca de los extremos de la API disponibles.
Para reiniciar el cliente de la API de WhatsApp Business, haz lo siguiente en la consola de ECS (por ejemplo, https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters):
Esto detendrá la aplicación web y la aplicación principal. Poco después, la infraestructura de AWS reiniciará la aplicación web y la aplicación principal.
Cabe esperar un periodo de inactividad de uno o dos minutos.
Si actualizas directamente una pila de CloudFormation, es posible que la base de datos se destruya y se vuelva a crear. Te recomendamos encarecidamente que sigas los pasos manuales descritos en la siguiente sección para actualizar el sistema a fin de evitar la pérdida de datos.
En esta sección, se describe el procedimiento para actualizar el cliente de la API de WhatsApp Business y la plantilla de CloudFormation (CFN). Si realizas una actualización, se producirá un periodo de inactividad, por lo que no deberías enviar mensajes durante este tiempo. Puedes volver a enviar mensajes una vez que se haya completado la actualización.
Para actualizar la plantilla de CFN y la versión del cliente de la API de WhatsApp Business a la vez, haz lo siguiente:
Verificación rápida de la actualización:Envía un mensaje de texto y verifica que la respuesta de la API contiene el número de versión correcto (es decir, la nueva versión). Verifica también si el destinatario ha recibido el mensaje.
Es habitual que las empresas quieran configurar un entorno de alto rendimiento para una campaña de duración limitada y mantener un entorno de bajo coste en ejecución durante el tiempo que no sea de campaña. En esta sección, se ofrecen sugerencias sobre cómo reducir manualmente la configuración de AWS para ahorrar costes.
Importante: Recuerda que habrá un tiempo de inactividad. El tiempo de inactividad estimado puede durar entre 5 y 15 minutos. Asegúrate de haber seguido todas las prácticas recomendadas de DevOps, como la creación de copias de seguridad de la configuración de la aplicación y la base de datos.
2
.c5.large
.
c5.large
y, a continuación, elige Create template version (Crear versión de plantilla).
r5.xlarge
.
3
.3
.2
.2
.2
.