Mensajes de WhatsApp iniciados por el agente desde Amazon Connect

Published: (February 25, 2026 at 08:44 PM EST)
7 min read
Source: Dev.to

Source: Dev.to

Aprende a permitir que los agentes de atención al cliente envíen mensajes de plantilla de WhatsApp con un solo clic desde el Agent Workspace. Ideal para equipos que buscan automatizar y simplificar la comunicación saliente por WhatsApp sin salir de la consola de Amazon Connect.

¿Por qué hacerlo?

  • Proactividad: los agentes pueden contactar al cliente directamente desde su escritorio.
  • Sin errores: elimina la necesidad de copiar‑pegar números o usar plantillas manuales.
  • Integración completa: todo orquestado por Contact Flows, funciones Lambda y un formulario (Connect View).

Flujo general

  1. Contact Flow invoca la Lambda get_customer_data para obtener la información del cliente (nombre, teléfono, etc.).
    • Opcional: usar el bloque Customer Profile para buscar datos en Customer Profiles.
  2. El flujo muestra un formulario (View) en el Agent Workspace con los datos pre‑llenados.
  3. El agente revisa/edita la información y pulsa Enviar.
  4. Una segunda Lambda (send_whatsapp_message) envía el mensaje de plantilla a través de AWS End User Messaging Social.

Requisitos previos

RequisitoDetalle
Cuenta WhatsApp Business (WABA)Crear una nueva o migrar una existente a AWS. Ver los pasos aquí.
Meta BusinessNecesario para vincular la cuenta a AWS End User Messaging Social.
Número de teléfonoDebe poder recibir verificación por SMS/voz y estar agregado a WhatsApp. ⚠️ No uses tu número personal.
Instancia Amazon ConnectSi no tienes una, sigue la guía oficial para crearla.
INSTANCE_IDLo encuentras en la consola o en el ARN: arn:aws:connect:::instance/INSTANCE_ID.
Plantilla de mensaje WhatsAppCreada en End User Messaging (misma región que tus números).
AWS CDKPara desplegar la infraestructura.
AWS Systems Manager Parameter StorePara almacenar la configuración de la plantilla.

Configuración inicial

  1. Edita config.py y coloca tu INSTANCE_ID

    INSTANCE_ID = ""
  2. Clona el repositorio

    git clone https://github.com/aws-samples/sample-whatsapp-end-user-messaging-connect-chat.git
    cd sample-whatsapp-end-user-messaging-connect-chat/agent-initiated-whatsapp
  3. Despliega con CDK
    Sigue la Guía de despliegue CDK incluida en el repositorio.

Parámetros en AWS Systems Manager (SSM)

Actualiza el parámetro /whatsapp_template/config con tu configuración:

{
  "message": {
    "messaging_product": "whatsapp",
    "to": "PHONE_NUMBER",
    "recipient_type": "individual",
    "type": "template",
    "template": {
      "name": "nombre_de_tu_plantilla",
      "language": { "code": "en_US" },
      "components": [
        {
          "type": "body",
          "parameters": []
        }
      ]
    }
  },
  "META_API_VERSION": "v23.0",
  "ORIGINATION_PHONE_NUMBER_ID": ""
}

Descripción de los campos

ParámetroDescripción
template.nameNombre de la plantilla de WhatsApp creada en End User Messaging.
template.language.codeCódigo de idioma (ej.: en_US).
ORIGINATION_PHONE_NUMBER_IDID del número de teléfono en AWS End User Messaging Social.
META_API_VERSIONVersión de la API de Meta (por defecto v23.0).

Configuración en Amazon Connect

Vista (Form)

Accede a: https://.my.connect.aws/views

  • Busca la vista enviarWhatsAppForm007.
  • Es el formulario que los agentes usarán para revisar los datos y enviar el mensaje.
  • El campo de WhatsApp está configurado como password para ocultar el número (puede también obtenerse vía atributos de contacto).

Contact Flow

  • Navega al flujo SendWhatsAppGuideFlow007.

a) Primer bloque Invoke AWS Lambda function

  • Selecciona la Lambda que contiene GetCustomerData.

  • Ejemplo de función mock (reemplázala con tu lógica real):

    def lambda_handler(event, context):
        return {
            "fullName": "Juan Pérez",
            "phoneNumber": "+XXXXXXXX",
            "input4": "Entregado",
            "input3": "Puzzle 1000 piezas",
            "input2": "P12345",
            "input1": "Juan",
        }
  • Reemplaza este mock por tu fuente de datos (Customer Profiles, DynamoDB, API externa, etc.).

  • Pulsa Confirm.

b) Bloque Show view

  • Selecciona la vista enviarWhatsAppForm007.

  • Mapeo de valores (de la Lambda a los campos del formulario):

    Campo del formularioMapeo JSON
    fullName$.External.fullName
    whatsappNumber$.External.phoneNumber
    input1input4$.External.input1$.External.input4
  • Pulsa Confirm.

c) Segundo bloque Invoke AWS Lambda function

  • Selecciona la Lambda que contiene SendWhatsappMessage (usa el ARN).

  • Esta Lambda lee la configuración del parámetro SSM, extrae los valores del formulario y envía el mensaje:

    import json
    import boto3
    
    ssm = boto3.client('ssm')
    eums = boto3.client('eums')   # End User Messaging Social client (pseudocódigo)
    
    def lambda_handler(event, context):
        # 1️⃣ Obtener configuración de la plantilla desde SSM
        param = ssm.get_parameter(Name='/whatsapp_template/config')
        config = json.loads(param['Parameter']['Value'])
    
        # 2️⃣ Extraer datos del contacto (atributos)
        contact_attrs = event['Details']['ContactData']['Attributes']
        config['message']['to'] = contact_attrs.get('whatsappNumber')
        # rellenar parámetros del cuerpo si los hay
        # ...
    
        # 3️⃣ Enviar mensaje vía EUMS
        response = eums.send_message(**config['message'])
        return response
  • Pulsa Confirm.

Paso a paso final

  1. Despliega la infraestructura con CDK.
  2. Actualiza el parámetro SSM con la configuración de tu plantilla.
  3. Configura la vista enviarWhatsAppForm007 en Amazon Connect.
  4. Modifica las Lambdas (GetCustomerData y SendWhatsappMessage) según tu lógica de negocio.
  5. Asocia las Lambdas a los bloques correspondientes del Contact Flow SendWhatsAppGuideFlow007.
  6. Prueba: abre el Agent Workspace, inicia un contacto y verifica que el formulario se pre‑llene y que el mensaje se envíe con un clic.

Recursos útiles

  • Repositorio GitHub
  • Documentación AWS End User Messaging Social
  • Guía de creación de plantillas de WhatsApp (en la consola de EUMS)
  • AWS CDK – Getting Started

Código Lambda

def da_handler(event, context):
    # Carga la configuración de la plantilla desde SSM Parameter Store
    config = get_ssm_parameter(CONFIG_PARAM_NAME)
    message_payload = config["message"]

    # Extrae los valores del formulario desde los atributos de contacto
    attributes = event["Details"]["ContactData"]["Attributes"]
    phone_number = attributes.get("phoneNumber")

    # Construye los parámetros de la plantilla desde input1..input4
    template_params = build_template_parameters(
        attributes, ["input1", "input2", "input3", "input4"]
    )

    # Envía usando AWS End User Messaging Social
    response = social_client.send_whatsapp_message(
        originationPhoneNumberId=origination_phone_number_id,
        message=bytes(json.dumps(message_payload), "utf-8"),
        metaApiVersion=meta_api_version,
    )
    return {"result": "OK", "messageId": response.get("messageId", "")}

Nota: Presiona Confirm para guardar. Luego Save y Publish el flujo de contacto.

Configuración de la vista en Amazon Connect

  1. Navega a las vistas de Amazon Connect
    https://.my.connect.aws/views

  2. Crea una nueva vista de tipo Guide.

  3. Arrastra un componente Connect Application al canvas.

    • Establece el contactFlowId con el flujo de contacto desplegado SendWhatsAppGuideFlow007.
  4. Dale un nombre a la vista y haz clic en Publish.

Creación del Workspace

  1. Navega a los workspaces de Amazon Connect
    https://.my.connect.aws/workspaces

  2. Haz clic en Add new workspace y completa:

    • Nombre
    • Descripción
    • Título
  3. Asigna este workspace a los usuarios o perfiles de enrutamiento que necesites.

  4. Agrega una nueva página

    • Usa Set page with custom page slug
    • Selecciona la vista creada en el paso anterior (la que tiene el componente Connect Application).
    • Usa un slug personalizado, por ejemplo:
    /page/send_whatsapp
  5. Guarda la página.

  6. Selecciona tu workspace personalizado desde la barra de navegación superior en el Agent Workspace.

Ahora el agente puede navegar a la página personalizada y usar la guía para enviar mensajes de plantilla de WhatsApp a los clientes.

Flujo de trabajo del agente

  • Al abrir la página personalizada, se muestra un Connect Application que ejecuta el flujo de contacto.
  • El flujo muestra un formulario con los valores pre‑cargados desde la Lambda de datos del cliente.
  • El agente revisa, modifica y envía el formulario.
  • Al enviarlo, la Lambda de envío de WhatsApp se invoca con todos los parámetros del formulario para entregar el mensaje final.

Ideas para extender la solución

  • Conectar la Lambda de datos del cliente a Amazon Connect Customer Profiles o DynamoDB.
  • Agregar validaciones adicionales en el formulario.
  • Soportar múltiples plantillas de WhatsApp seleccionables por el agente.
  • Incorporar dinámicamente la cantidad de inputs, dependiendo del número de variables en la plantilla.

Recursos adicionales

  • [Repositorio del proyecto]
  • [Guía de creación de plantillas]
  • [Guía de prerrequisitos]
  • [Guía de despliegue CDK]
0 views
Back to Blog

Related posts

Read more »