

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Destinos de mensajes y eventos en AWS End User Messaging Social
<a name="managing-event-destinations"></a>

El destino de un evento es un tema de Amazon SNS o una instancia de Amazon Connect a la que se envían WhatsApp los eventos. Al activar la publicación de eventos, todos los eventos de envío y recepción se envían al destino del mensaje y del evento. Utilice los eventos para supervisar, rastrear y analizar el estado de los mensajes salientes y las comunicaciones entrantes con los clientes.

Cada cuenta WhatsApp empresarial (WABA) puede tener un destino para el evento. Todos los eventos de todos los recursos asociados a la WABA se registran en el destino de ese evento. Por ejemplo, puede tener una WABA con tres números de teléfono asociados y todos los eventos de esos números de teléfono se registren en el único destino del evento.

**Topics**
+ [Agregue un mensaje y un destino de evento a AWS End User Messaging Social](managing-event-destinations-add.md)
+ [Formato de mensaje y evento en AWS End User Messaging Social](managing-event-destination-dlrs.md)
+ [WhatsApp estado del mensaje](managing-event-destinations-status.md)

# Agregue un mensaje y un destino de evento a AWS End User Messaging Social
<a name="managing-event-destinations-add"></a>

Al activar la publicación de mensajes y eventos, todos los eventos generados por tu cuenta WhatsApp empresarial (WABA) se envían al tema Amazon SNS. Esto incluye los eventos de cada número de teléfono asociado a una WABA. Su WABA puede tener un tema de Amazon SNS asociado. 

## Requisitos previos
<a name="managing-event-destinations-add_prerequisite"></a>

Antes de empezar, se deben cumplir los siguientes requisitos para utilizar un tema de Amazon SNS o una instancia de Amazon Connect como destino de mensajes y eventos.

**Tema de Amazon SNS**
+ Se ha [creado](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) un tema de Amazon SNS y se han [añadido permisos](#managing-event-destinations-sns-policies).
**nota**  
No se admiten los temas FIFO de Amazon SNS.
+ **(Opcional)** Para utilizar un tema de Amazon SNS cifrado con AWS KMS claves, debe conceder permisos de AWS End User Messaging Social a la política de [claves existente](#managing-event-destinations-topic-policies). 

**Instancia de Amazon Connect**
+ Se ha [creado](https://docs.aws.amazon.com/connect/latest/adminguide/tutorial1-set-up-your-instance.html) una instancia de Amazon Connect y se han añadido [permisos](#managing-event-destinations-amazon-connect-policies).

## Agrega un mensaje y un destino para el evento
<a name="managing-event-destinations-add_steps"></a>

1. Abra la consola social de mensajería para usuarios AWS finales en [https://console.aws.amazon.com/social-messaging/](https://console.aws.amazon.com/social-messaging/).

1. Elija una **cuenta empresarial** y, a continuación, una WABA.

1. En la pestaña **Destino del evento**, seleccione **Editar destino**.

1. Para activar el destino de un evento, selecciona **Activar.**

1. Para el **tipo de destino**, elija Amazon SNS o Amazon Connect

   1. **Para enviar sus eventos a un destino de Amazon SNS, introduzca un ARN de tema existente en el ARN del tema.** Para ver ejemplos de políticas de IAM, consulte [Políticas de IAM para temas de Amazon SNS](#managing-event-destinations-sns-policies).

   1. Para Amazon Connect

      1. Para la **instancia de Connect**, elija una instancia del menú desplegable.

      1. En **Rol de canal bidireccional**, elija una de las siguientes opciones:

         1. **Elija el rol de IAM existente**: elija una política de IAM existente en el menú desplegable de **roles de IAM existentes**. Para ver ejemplos de políticas de IAM, consulte [Políticas de IAM para Amazon Connect](#managing-event-destinations-amazon-connect-policies).

         1. **Introduzca el ARN del rol de IAM: introduzca el ARN** **de la política de IAM en Utilizar el ARN del rol de IAM existente.** Para ver ejemplos de políticas de IAM, consulte [Políticas de IAM para Amazon Connect](#managing-event-destinations-amazon-connect-policies).

1. Seleccione **Save changes (Guardar cambios)**.

## Políticas de temas cifrados de Amazon SNS
<a name="managing-event-destinations-topic-policies"></a>

Puede utilizar temas de Amazon SNS cifrados mediante AWS KMS claves para obtener un nivel de seguridad adicional. Esta seguridad adicional puede resultar útil si la aplicación maneja datos privados o confidenciales. Para obtener más información sobre el cifrado de temas de Amazon SNS AWS KMS mediante claves, [consulte Habilitar la compatibilidad entre las fuentes de eventos AWS de los servicios y los temas cifrados](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services) en la Guía para desarrolladores de *Amazon Simple Notification Service*.

**nota**  
No se admiten los temas FIFO de Amazon SNS.

La declaración de ejemplo utiliza las `SourceArn` condiciones, opcionales pero recomendadas, `SourceAccount` para evitar el confuso problema de los diputados y solo el propietario de la cuenta de AWS End User Messaging Social tiene acceso a ella. Para obtener información general sobre el problema del suplente confuso, consulte [El problema del suplente confuso](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) en la *[Guía del usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)*.

La clave que utilice debe ser *simétrica*. Los temas cifrados de Amazon SNS no admiten claves asimétricas AWS KMS .

La política de claves debe modificarse para permitir que AWS End User Messaging Social utilice la clave. Siga las instrucciones de la *Guía para AWS Key Management Service desarrolladores* sobre cómo [cambiar una política clave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html) para añadir los siguientes permisos a la política clave existente:

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": "social-messaging.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{ACCOUNT_ID}"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:{PARTITION}:social-messaging:{REGION}:{ACCOUNT_ID}:*"
        }
     }
}
```

## Políticas de IAM para temas de Amazon SNS
<a name="managing-event-destinations-sns-policies"></a>

Para usar una función de IAM existente o crear una nueva, adjunte la siguiente política a esa función para que AWS End User Messaging Social pueda asumirla. Para obtener información acerca de cómo modificar la relación de confianza de un rol, consulte [Modificación de un rol](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html) en la [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html).

Esta es la **política de permisos** para el rol de IAM. La política de permisos permite publicar temas en Amazon SNS.

En la siguiente política de permisos de IAM, realice los siguientes cambios:
+ *\$1PARTITION\$1*Sustitúyala por la AWS partición en la que utilizas AWS End User Messaging Social.
+ *\$1REGION\$1*Sustitúyala por la Región de AWS que utilizas AWS End User Messaging Social.
+ *\$1ACCOUNT\$1*Reemplácelo por el ID único de su Cuenta de AWS.
+ *\$1TOPIC\$1NAME\$1*Sustitúyalos por los temas de Amazon SNS que recibirán los mensajes.

```
{
    "Effect": "Allow",
    "Principal": {
        "Service": [
          "social-messaging.amazonaws.com"
        ]
       },
    "Action": "sns:Publish",
    "Resource": "arn:{PARTITION}:sns:{REGION}:{ACCOUNT}:{TOPIC_NAME}"
}
```

## Políticas de IAM para Amazon Connect
<a name="managing-event-destinations-amazon-connect-policies"></a>

Si desea que AWS End User Messaging Social utilice una función de IAM existente o si crea una nueva, adjunte las siguientes políticas a esa función para que AWS End User Messaging Social pueda asumirla. Para obtener información sobre cómo modificar una relación de confianza existente entre un rol, consulte [Modificación de un rol](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html) en la [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html). Esta función se utiliza tanto para enviar eventos como para importar números de teléfono de AWS End User Messaging Social a Amazon Connect.

Para crear nuevas políticas de IAM, haga lo siguiente:

1. Cree una nueva **política de permisos** siguiendo las instrucciones que se indican en [Creación de políticas mediante el editor JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) en la Guía del usuario de IAM.

   1. En el paso 5, utilice la **política de permisos** del rol de IAM para permitir la publicación en Amazon Connect.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "AllowOperationsForEventDelivery",
                 "Effect": "Allow",
                 "Action": [
                     "connect:SendIntegrationEvent"
                 ],
                 "Resource": "*"
             },
             {
                 "Sid": "AllowOperationsForPhoneNumberImport",
                 "Effect": "Allow",
                 "Action": [
                     "connect:ImportPhoneNumber",
                     "social-messaging:GetLinkedWhatsAppBusinessAccountPhoneNumber",
                     "social-messaging:TagResource"
                 ],
                 "Resource": "*"
             }
         ]
     }
     ```

------

1. Cree una nueva **política de confianza** siguiendo las instrucciones que se indican en la sección [Creación de un rol mediante políticas de confianza personalizadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) de la Guía del usuario de IAM.

   1. En el paso 4, utilice la **política de confianza** para el rol de IAM.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "social-messaging.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. En el paso 10, añada la **política de permisos** que creó en el paso anterior.

## Siguientes pasos
<a name="managing-event-destinations_next_steps"></a>

Una vez que haya configurado su tema de Amazon SNS, debe suscribir un punto final al tema. El punto final empezará a recibir los mensajes publicados en el tema asociado. Para obtener más información sobre la suscripción a un tema, consulte el tema [Suscribirse a un Amazon SNS](https://docs.aws.amazon.com//sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) en la Guía para desarrolladores de Amazon *SNS*.

# Formato de mensaje y evento en AWS End User Messaging Social
<a name="managing-event-destination-dlrs"></a>

El objeto JSON de un evento contiene el encabezado del AWS evento y la carga útil de WhatsApp JSON. Para obtener una lista de la carga útil y los valores de las WhatsApp notificaciones de JSON, consulte la referencia de la carga [útil de notificaciones de Webhooks y el [estado del mensaje](https://developers.facebook.com/docs/whatsapp/conversation-types#message-status) en la referencia](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) de la API de *WhatsApp Business Platform Cloud*.

## AWS Encabezado del evento social de mensajería para usuarios finales
<a name="managing-event-destination-dlrs_body"></a>

El objeto JSON de un evento contiene el encabezado del AWS evento y el WhatsApp JSON. El encabezado contiene los AWS identificadores y los ARNs de tu cuenta WhatsApp empresarial (WABA) y tu número de teléfono.

```
{
  "context": {
    "MetaWabaIds": [
      {
        "wabaId": "1234567890abcde",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:waba/fb2594b8a7974770b128a409e2example"
      }
    ],
    "MetaPhoneNumberIds": [
      {
        "metaPhoneNumberId": "abcde1234567890",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:phone-number-id/976c72a700aac43eaf573ae050example"
      }
    ]
  },
  "whatsAppWebhookEntry": "{\"...JSON STRING....",
  "aws_account_id": "123456789012",
  "message_timestamp": "2025-01-08T23:30:43.271279391Z",
  "messageId": "6d69f07a-c317-4278-9d5c-6a84078419ec"
}
//Decoding the contents of whatsAppWebhookEntry
{
//WhatsApp notification payload
}
```

En el caso del ejemplo anterior:
+ *1234567890abcde*es el identificador de WABA de Meta.
+ *abcde1234567890*es el identificador del número de teléfono de Meta.
+ *fb2594b8a7974770b128a409e2example*es el ID de la cuenta WhatsApp empresarial (WABA).
+ *976c72a700aac43eaf573ae050example*es el identificador del número de teléfono.

## Ejemplo de WhatsApp JSON para recibir un mensaje
<a name="managing-event-destination-dlrs-example-receive-text"></a>

A continuación se muestra el registro de eventos de un mensaje entrante de WhatsApp. El JSON recibido desde WhatsApp allí `whatsAppWebhookEntry` se recibe como una cadena JSON y se puede convertir a JSON. Para obtener una lista de los campos y su significado, consulte la referencia sobre la [carga útil de notificaciones de Webhooks en la referencia](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) de la *API de WhatsApp Business Platform Cloud*.

```
{
  "context": {
    "MetaWabaIds": [
      {
        "wabaId": "1234567890abcde",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:waba/fb2594b8a7974770b128a409e2example"
      }
    ],
    "MetaPhoneNumberIds": [
      {
        "metaPhoneNumberId": "abcde1234567890",
        "arn": "arn:aws:social-messaging:us-east-1:123456789012:phone-number-id/976c72a700aac43eaf573ae050example"
      }
    ]
  },
  "whatsAppWebhookEntry": "{\"...JSON STRING....",
  "aws_account_id": "123456789012",
  "message_timestamp": "2025-01-08T23:30:43.271279391Z",
  "messageId": "6d69f07a-c317-4278-9d5c-6a84078419ec"
}
```

Puedes usar una herramienta, como [jq, para convertir la cadena JSON](https://jqlang.org/) en JSON. Lo siguiente es `whatsAppWebhookEntry` en formato JSON:

```
{
  "id": "503131219501234",
  "changes": [
    {
      "value": {
        "messaging_product": "whatsapp",
        "metadata": {
          "display_phone_number": "14255550123",
          "phone_number_id": "46271669example"
        },
        "statuses": [
          {
            "id": "wamid.HBgLMTkxNzM5OTI3MzkVAgARGBJBMTM4NDdGRENEREI5Rexample",
            "status": "sent",
            "timestamp": "1736379042",
            "recipient_id": "01234567890",
            "conversation": {
              "id": "62374592e84cb58e52bdaed31example",
              "expiration_timestamp": "1736461020",
              "origin": {
                "type": "utility"
              }
            },
            "pricing": {
              "billable": true,
              "pricing_model": "CBP",
              "category": "utility"
            }
          }
        ]
      },
      "field": "messages"
    }
  ]
}
```

## Ejemplo de WhatsApp JSON para recibir un mensaje multimedia
<a name="managing-event-destination-dlrs-example-receive-media"></a>

A continuación se muestra el registro de eventos de un mensaje multimedia entrante. Para recuperar el archivo multimedia, utilice el comando de la GetWhatsAppMessageMedia API. Para ver una lista de los campos y su significado, consulta la referencia sobre la carga [útil de notificaciones de Webhooks](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components)

```
{
//AWS End User Messaging Social header
}
//Decoding the contents of whatsAppWebhookEntry
{
  "id": "365731266123456",
  "changes": [
    {
      "value": {
        "messaging_product": "whatsapp",
        "metadata": {
          "display_phone_number": "12065550100",
          "phone_number_id": "321010217760100"
        },
        "contacts": [
          {
            "profile": {
              "name": "Diego"
            },
            "wa_id": "12065550102"
          }
        ],
        "messages": [
          {
            "from": "14255550150",
            "id": "wamid.HBgLMTQyNTY5ODgzMDIVAgASGCBDNzBDRjM5MDU2ODEwMDkwREY4ODBDRDE0RjVGRkexample",
            "timestamp": "1723506230",
            "type": "image",
            "image": {
              "mime_type": "image/jpeg",
              "sha256": "BTD0xlqSZ7l02o+/upusiNStlEZhA/urkvKf143Uqjk=",
              "id": "530339869524171"
            }
          }
        ]
      },
      "field": "messages"
    }
  ]
}
```

# WhatsApp estado del mensaje
<a name="managing-event-destinations-status"></a>

Cuando envías un mensaje, recibes actualizaciones de estado sobre el mensaje. Debe activar el registro de eventos para recibir estas notificaciones, consulte[Destinos de mensajes y eventos en AWS End User Messaging SocialDestinos de mensajes y eventos](managing-event-destinations.md).

## Estados de los mensajes
<a name="managing-event-destinations-status_body"></a>

La siguiente tabla contiene los posibles estados de los mensajes.


****  

| Nombre del estado | Description (Descripción) | 
| --- | --- | 
| aceptada | El mensaje ha sido aceptado WhatsApp para su procesamiento. | 
| eliminado | El cliente ha eliminado el mensaje y tú también deberías eliminarlo si se ha descargado en tu servidor. | 
| entregado | El mensaje se ha entregado correctamente al cliente. | 
| error | No se pudo enviar el mensaje. | 
| El mensaje se vuelve a intentar agotado y se pierde el mensaje. | No se pudo transferir el mensaje durante el período de reintento de 180 minutos y se descartó. WhatsApp  | 
| lectura | El cliente leyó el mensaje. Este estado solo se envía si el cliente tiene activada la función de lectura de recibos. | 
| enviado | El mensaje se ha enviado pero aún está en tránsito. | 
| Advertencia | El mensaje contiene un elemento que no está disponible o que no existe. | 

## Recursos adicionales
<a name="managing-event-destinations-status_additional_resources"></a>

Para obtener más información, consulte el [estado del mensaje](https://developers.facebook.com/docs/whatsapp/conversation-types#message-status) en la *referencia de la API de WhatsApp Business Platform Cloud*.