Publicación de un tema - Amazon Simple Notification Service

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.

Publicación de un tema

Puede publicar un único mensaje SMS en muchos números de teléfono a la vez mediante la suscripción de dichos números de teléfono a un tema de Amazon SNS. Un tema de SNS es un canal de comunicación al que puede agregar suscriptores y publicar mensajes para todos ellos. Un suscriptor recibe todos los mensajes que se publiquen en el tema hasta que usted cancele la suscripción o el suscriptor cancele la recepción de mensajes SMS de su cuenta de AWS.

Envío de un mensaje a un tema (consola)

Creación de un tema

Ejecute los pasos siguientes si todavía no tiene un tema al que quiera enviar mensajes SMS.

  1. Inicie sesión en la consola de Amazon SNS.

  2. En el menú de la consola, elija una región que admita la mensajería SMS de AWS.

  3. En el panel de navegación, elija Temas.

  4. En la página Temas, elija Crear tema.

  5. En la página Crear tema, en Detalles, haga lo siguiente:

    1. En Tipo, seleccione Estándar.

    2. En Nombre, ingrese un nombre para el tema.

    3. (Opcional) En Nombre de visualización, ingrese un prefijo personalizado para los mensajes SMS. Cuando envía un mensaje al tema, Amazon SNS anexa delante el nombre de visualización seguido de un corchete angular de cierre (>) y un espacio. Los nombres de visualización no distinguen entre mayúsculas y minúsculas, y Amazon SNS convierte los nombres de visualización en caracteres en mayúsculas. Por ejemplo, si el nombre de visualización de un tema es MyTopic y el mensaje es Hello World!, el mensaje aparecerá de la siguiente manera:

      MYTOPIC> Hello World!
  6. Elija Crear nuevo tema. El nombre del tema y el nombre de recurso de Amazon (ARN) aparecen en la página Temas.

Para crear una suscripción de SMS, siga estos pasos:

Puede utilizar las suscripciones para enviar un mensaje SMS a varios destinatarios al publicar el mensaje una sola vez en su tema.

nota

Cuando comience a utilizar Amazon SNS para enviar mensajes SMS, su cuenta de AWS se encuentra en el entorno de pruebas de SMS. El entorno de pruebas de SMS proporciona un entorno seguro para que pruebe las características de Amazon SNS sin arriesgar su reputación como remitente de SMS. Mientras su cuenta se encuentre en el entorno de pruebas de SMS, puede utilizar todas las características de Amazon SNS, pero solo puede enviar mensajes SMS a números de teléfono de destino verificados. Para obtener más información, consulte Entorno de pruebas de SMS.

  1. Inicie sesión en la consola de Amazon SNS.

  2. En el panel de navegación, seleccione Subscriptions.

  3. En la página Subscriptions (Suscripciones), elija Create subscription (Crear suscripción).

  4. En la página Crear suscripción, en Detalles, haga lo siguiente:

    1. En ARN de tema, ingrese o elija el nombre de recurso de Amazon (ARN) del tema al que desea enviar mensajes SMS.

    2. En Protocolo, elija SMS.

    3. En Punto de enlace, ingrese el número de teléfono al que desea suscribirse al tema.

  5. Seleccione Crear una suscripción. La información de la suscripción aparece en la página Suscripciones.

    Para agregar más números de teléfono, repita estos pasos. También puede agregar otros tipos de suscripciones, como el correo electrónico.

Para enviar un mensaje

Cuando publica un mensaje en un tema, Amazon SNS intenta entregar dicho mensaje a todos los números de teléfono que están suscritos al tema.

  1. En Consola de Amazon SNS, en la página Temas, elija el nombre del tema al que desea enviar mensajes SMS.

  2. En la página de detalles del tema, seleccione Publish message (Publicar mensaje).

  3. En la página Publicar mensaje en el tema, en Detalles del mensaje, haga lo siguiente:

    1. En Asunto, deje el campo en blanco a menos que el tema contenga suscripciones de correo electrónico y quiera publicar tanto en las suscripciones de correo electrónico como en las de SMS. Amazon SNS utiliza el asunto que ingresa como línea de asunto del correo electrónico.

    2. (Opcional) En Período de vida (TLL), ingrese un número de segundos que Amazon SNS tiene para enviar su mensaje SMS a los suscriptores de terminales de aplicaciones móviles.

  4. En Cuerpo del mensaje, haga lo siguiente:

    1. En Estructura del mensaje, elija Carga idéntica para todos los protocolos de entrega para enviar el mismo mensaje a todos los tipos de protocolo suscritos al tema. O bien, elija Carga personalizada para cada protocolo de entrega para personalizar el mensaje para suscriptores de diferentes tipos de protocolo. Por ejemplo, puede escribir un mensaje predeterminado para los suscriptores de números de teléfono y un mensaje personalizado para los suscriptores de correo electrónico.

    2. En Cuerpo del mensaje para enviar al punto de enlace, ingrese su mensaje o sus mensajes personalizados por protocolo de entrega.

      Si su tema tiene un nombre de visualización, Amazon SNS lo agrega al mensaje, lo que aumenta la longitud del mensaje. La longitud del nombre de visualización es el número de caracteres del nombre más dos caracteres para el corchete angular de cierre (>) y el espacio que Amazon SNS agrega.

      Para obtener información acerca de las cuotas de tamaño de los mensajes SMS, consulte Publicación en un teléfono móvil.

  5. (Opcional) En Atributos de mensajes, agregue metadatos de mensajes como marcas de tiempo, firmas e ID.

  6. Elija Publish message (Publicar mensaje). Amazon SNS envía el mensaje SMS y muestra un mensaje de confirmación.

Envío de un mensaje a un tema (SDK de AWS)

Para utilizar un SDK de AWS, debe configurarlo con sus credenciales. Para obtener más información, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y herramientas de AWS.

En el siguiente ejemplo de código, se muestra cómo:

  • Cree un tema de Amazon SNS.

  • Suscriba los números de teléfono al tema.

  • Publique mensajes SMS en el tema para que todos los números de teléfono suscritos reciban el mensaje a la vez.

Java
SDK para Java 2.x
nota

Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

Cree un tema y devuelva su ARN.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class CreateTopic { public static void main(String[] args) { final String usage = """ Usage: <topicName> Where: topicName - The name of the topic to create (for example, mytopic). """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String topicName = args[0]; System.out.println("Creating a topic with name: " + topicName); SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); String arnVal = createSNSTopic(snsClient, topicName); System.out.println("The topic ARN is" + arnVal); snsClient.close(); } public static String createSNSTopic(SnsClient snsClient, String topicName) { CreateTopicResponse result; try { CreateTopicRequest request = CreateTopicRequest.builder() .name(topicName) .build(); result = snsClient.createTopic(request); return result.topicArn(); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } }

Suscriba un punto de enlace a un tema.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.SubscribeRequest; import software.amazon.awssdk.services.sns.model.SubscribeResponse; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SubscribeTextSMS { public static void main(String[] args) { final String usage = """ Usage: <topicArn> <phoneNumber> Where: topicArn - The ARN of the topic to subscribe. phoneNumber - A mobile phone number that receives notifications (for example, +1XXX5550100). """; if (args.length < 2) { System.out.println(usage); System.exit(1); } String topicArn = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); subTextSNS(snsClient, topicArn, phoneNumber); snsClient.close(); } public static void subTextSNS(SnsClient snsClient, String topicArn, String phoneNumber) { try { SubscribeRequest request = SubscribeRequest.builder() .protocol("sms") .endpoint(phoneNumber) .returnSubscriptionArn(true) .topicArn(topicArn) .build(); SubscribeResponse result = snsClient.subscribe(request); System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }

Establezca atributos en el mensaje, como el ID del remitente, el precio máximo y su tipo. Los atributos de mensaje son opcionales.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest; import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse; import software.amazon.awssdk.services.sns.model.SnsException; import java.util.HashMap; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SetSMSAttributes { public static void main(String[] args) { HashMap<String, String> attributes = new HashMap<>(1); attributes.put("DefaultSMSType", "Transactional"); attributes.put("UsageReportS3Bucket", "janbucket"); SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); setSNSAttributes(snsClient, attributes); snsClient.close(); } public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) { try { SetSmsAttributesRequest request = SetSmsAttributesRequest.builder() .attributes(attributes) .build(); SetSmsAttributesResponse result = snsClient.setSMSAttributes(request); System.out.println("Set default Attributes to " + attributes + ". Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }

Publique un mensaje en un tema. El mensaje se envía a cada suscriptor.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class PublishTextSMS { public static void main(String[] args) { final String usage = """ Usage: <message> <phoneNumber> Where: message - The message text to send. phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String message = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); pubTextSMS(snsClient, message, phoneNumber); snsClient.close(); } public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) { try { PublishRequest request = PublishRequest.builder() .message(message) .phoneNumber(phoneNumber) .build(); PublishResponse result = snsClient.publish(request); System.out .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }