

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.

# Ejemplos de Amazon SNS con la versión 3 AWS SDK para PHP
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) es un servicio web que coordina y gestiona la entrega o el envío de mensajes a los puntos de conexión o clientes suscritos.

En Amazon SNS, existen dos tipos de clientes: los editores (también conocidos como productores) y los suscriptores (también conocidos como consumidores). Los publicadores se comunican de forma asíncrona con los suscriptores generando y enviando un mensaje a un tema, que es un punto de acceso lógico y un canal de comunicación. Los suscriptores (servidores web, direcciones de correo electrónico, colas de Amazon SQS, AWS Lambda funciones) consumen o reciben el mensaje o la notificación a través de uno de los protocolos compatibles (Amazon SQS, HTTP/HTTPS URLs correo electrónico, AWS SMS Lambda) cuando se suscriben al tema.

[Todo el código de ejemplo de la AWS SDK para PHP versión 3 está disponible aquí. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Administración de temas](sns-examples-managing-topics.md)
+ [Administración de suscripciones](sns-examples-subscribing-unsubscribing-topics.md)
+ [Envío de mensajes SMS en Amazon](sns-examples-sending-sms.md)

# Administración de temas en Amazon SNS con la versión 3 de AWS SDK para PHP
<a name="sns-examples-managing-topics"></a>

Para enviar notificaciones a Amazon Simple Queue Service (Amazon SQS), URL HTTP/HTTPS, correo electrónico, AWS SMS, o AWS Lambda, primero debe crear un tema que administre la entrega de los mensajes a los suscriptores de ese tema

En lo relativo al patrón de diseño de observador, un tema es como el asunto. Una vez que se crea un tema, se añaden los suscriptores que reciben notificaciones automáticas cuando se publica un mensaje en el tema.

Obtenga más información sobre la suscripción a temas en [Administración de suscripciones en Amazon SNS con la versión 3 de AWS SDK para PHP](sns-examples-subscribing-unsubscribing-topics.md).

Los siguientes ejemplos muestran cómo:
+ Crear un tema en el que publicar notificaciones mediante [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic).
+ Devolver una lista de los temas del solicitante con [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Eliminar un tema y todas sus suscripciones con [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Devolver todas las propiedades de un tema con [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Permitir a un propietario de tema establecer un atributo del tema en un nuevo valor mediante [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Para obtener más información sobre el uso de Amazon SNS, consulte [Atributos de temas de Amazon SNS para el estado de entrega de mensajes](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Crear un tema
<a name="create-a-topic"></a>

Para crear un tema, utilice la operación [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html).

Cada nombre de tema de su Cuenta de AWS debe ser exclusivo.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topicname = 'myTopic';

try {
    $result = $SnSclient->createTopic([
        'Name' => $topicname,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Lista de temas
<a name="list-your-topics"></a>

Para obtener una lista de hasta 100 temas existentes en la región de AWS actual, utilice la operación [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listTopics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminación de un tema
<a name="delete-a-topic"></a>

Para quitar un tema existente y todas sus suscripciones, utilice la operación [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html).

Todos los mensajes que no se han entregado a los suscriptores también se eliminarán.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->deleteTopic([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Obtener de atributos de los temas
<a name="get-topic-attributes"></a>

Para recuperar las propiedades de un solo tema existente, utilice la operación [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->getTopicAttributes([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Crear atributos de temas
<a name="set-topic-attributes"></a>

Para actualizar las propiedades de un solo tema existente, utilice la operación [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html).

Solo puede establecer los atributos `Policy`, `DisplayName` y `DeliveryPolicy`.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->setTopicAttributes([
        'AttributeName' => $attribute,
        'AttributeValue' => $value,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Administración de suscripciones en Amazon SNS con AWS SDK para PHP la versión 3
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Utilice los temas del Servicio de Notificación de Amazon Simple (Amazon SNS) para enviar notificaciones a Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, direcciones de correo electrónico, () o. AWS Server Migration Service AWS SMS AWS Lambda

Las suscripciones se adjuntan a un tema que administra el envío de mensajes a los suscriptores. Obtenga más información sobre la creación de temas en [Administrar temas en Amazon SNS con la AWS SDK para PHP versión 3](sns-examples-managing-topics.md).

Los siguientes ejemplos muestran cómo:
+ Suscribirse a un tema existente mediante [Subscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Verifique una suscripción mediante [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Enumere las suscripciones existentes utilizando [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic).
+ Eliminar una suscripción mediante [Unsubscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Enviar un mensaje a todos los suscriptores de un tema, mediante [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Para obtener más información sobre el uso de Amazon SNS, consulte [Uso de Amazon System-to-System SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html) para mensajería.

Todos los códigos de ejemplo para el AWS SDK para PHP están disponibles [aquí en. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus AWS credenciales, tal y como se describe en[Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe las AWS SDK para PHP, tal y como se describe en[Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Suscribir una dirección de correo electrónico a un tema
<a name="subscribe-an-email-address-to-a-topic"></a>

Para iniciar una suscripción a una dirección de correo electrónico, utilice la operación [Suscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puede utilizar el método de suscripción para suscribir a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es una dirección de correo electrónico. Se envía un token de confirmación a este correo electrónico. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepción.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'email';
$endpoint = 'sample@example.com';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Suscripción de un punto de conexión de aplicación a un tema
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Para iniciar una suscripción a una aplicación web, utilice la operación [Suscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es una URL. Se envía un token de confirmación a esta dirección web. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepción.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'https';
$endpoint = 'https://';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Suscripción de una función de Lambda a un tema
<a name="subscribe-a-lam-function-to-a-topic"></a>

Para iniciar una suscripción a una función de Lambda, utilice la operación [Suscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de conexión es una función de Lambda. Se envía un token de confirmación a esta función de Lambda. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepción.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'lambda';
$endpoint = 'arn:aws:lambda:us-east-1:123456789023:function:messageStore';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Suscripción de un mensaje SMS a un tema
<a name="subscribe-a-text-sms-to-a-topic"></a>

Para enviar mensajes SMS a varios números de teléfono al mismo tiempo, suscriba cada número a un tema.

Para iniciar una suscripción a un número de teléfono, utilice la operación [Suscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puede utilizar el método de suscripción para suscribirse a varios puntos de conexión diferentes a un tema de Amazon SNS, en función de los valores utilizados para los parámetros pasados. Esto se muestra en otros ejemplos en este tema.

En este ejemplo, el punto de enlace es un número de teléfono en formato E.164, un estándar utilizado para las telecomunicaciones internacionales.

Se envía un token de confirmación a este número de teléfono. Compruebe la suscripción con este token de confirmación en un plazo de tres días desde la recepción.

Para una conocer una manera alternativa de enviar mensajes SMS con Amazon SNS, consulte [Envío de mensajes SMS en Amazon SNS con la versión 3 de AWS SDK para PHP](sns-examples-sending-sms.md).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'sms';
$endpoint = '+1XXX5550100';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Confirmación de la suscripción a un tema
<a name="confirm-subscription-to-a-topic"></a>

Para crear una suscripción real, el propietario del punto de enlace debe reconocer la intención de recibir mensajes del tema utilizando un token enviado cuando se establece inicialmente una suscripción, tal y como se ha descrito anteriormente. Los tokens de confirmación son válidos durante tres días. Después de tres días, puede volver a enviar un token mediante la creación de una nueva suscripción.

Para confirmar una suscripción, utilice la [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)operación.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->confirmSubscription([
        'Token' => $subscription_token,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Lista de suscripciones a un tema
<a name="list-subscriptions-to-a-topic"></a>

Para enumerar hasta 100 suscripciones existentes en una AWS región determinada, utilice la [ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)operación.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listSubscriptions();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Cancelación de la suscripción a un tema
<a name="unsubscribe-from-a-topic"></a>

Para eliminar un punto de enlace suscrito a un tema, utilice la operación [Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Si la suscripción requiere autenticación para eliminarla, solo el propietario de la suscripción o el propietario del tema pueden cancelar la suscripción y se requiere una AWS firma. Si la llamada de cancelación de suscripción no requiere autenticación y el solicitante no es el propietario de la suscripción, se envía un último mensaje de cancelación al punto de enlace.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';

try {
    $result = $SnSclient->unsubscribe([
        'SubscriptionArn' => $subscription,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Publicación de mensajes en un tema de Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

Para entregar un mensaje a cada punto de conexión que está suscrito a un tema de Amazon SNS, utilice la operación [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Cree un objeto que contenga los parámetros para la publicación de un mensaje, incluido el texto del mensaje y el nombre de recurso de Amazon (ARN) del tema de Amazon SNS.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Envío de mensajes SMS en Amazon SNS con la versión 3 de AWS SDK para PHP
<a name="sns-examples-sending-sms"></a>

Puede utilizar Amazon Simple Notification Service (Amazon SNS) ara enviar mensajes de texto o mensajes SMS a dispositivos habilitados para recibir SMS. Dispone de la capacidad de enviar un mensaje directamente a un número de teléfono o de enviar un mensaje a varios números de teléfono a la vez suscribiendo dichos números de teléfono a un tema y enviando su mensaje al tema.

Utilice Amazon SNS para especificar las preferencias de mensajería SMS, como la forma en que se optimizan sus envíos (por coste o por fiabilidad de la entrega), su límite de gasto mensual, cómo se registran los envíos de mensajes y si desea suscribirse a informes de uso de SMS diarios. Estas preferencias se recuperan y se establecen como atributos SMS para Amazon SNS.

Cuando envíe un mensaje SMS, especifique el número de teléfono usando la formato E.164. E.164 es un estándar de estructura de número de teléfono utilizada para las telecomunicaciones internacionales. Los números de teléfono que aplican este formato pueden tener un máximo de 15 dígitos y van prefijados con el carácter (\$1) y el código de país. Por ejemplo, un número de teléfono de los EE. UU. en formato E.164 se mostraría como \$11001XXX5550100.

Los siguientes ejemplos muestran cómo:
+ Recupere la configuración predeterminada para el envío de mensajes SMS desde su cuenta con [GetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes).
+ Actualice la configuración predeterminada para el envío de mensajes SMS desde su cuenta con [SetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes).
+ Descubra si un determinado propietario de número de teléfono ha desactivado la recepción de mensajes SMS desde su cuenta con [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout).
+ Obtener una lista de los números de teléfono cuyo propietario ha desactivado la recepción de mensajes SMS desde su cuenta con [ListPhoneNumberOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout).
+ Envíe un mensaje de texto (mensaje SMS) directamente a un número de teléfono usando [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Para obtener más información sobre cómo utilizar Amazon SNS, consulte [Uso de Amazon SNS para notificaciones de usuario con un número de teléfono móvil como suscriptor (envío de SMS).](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Obtención de atributos de SMS
<a name="get-sms-attributes"></a>

Para recuperar la configuración predeterminada de mensajes SMS, utilice la operación [GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html).

Este ejemplo obtiene el atributo `DefaultSMSType`. Este atributo controla si se envían mensajes SMS como `Promotional`, que optimiza la entrega de mensajes para conseguir el costo más bajo, o como `Transactional`, que optimiza el envío de mensajes para conseguir la máxima fiabilidad.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->getSMSAttributes([
        'attributes' => ['DefaultSMSType'],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Establecimiento de atributos de SMS
<a name="set-sms-attributes"></a>

Para actualizar la configuración predeterminada de mensajes SMS, utilice la operación [SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html).

Este ejemplo establece el atributo `DefaultSMSType` en `Transactional`, que optimiza el envío de mensajes para conseguir la máxima fiabilidad.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->SetSMSAttributes([
        'attributes' => [
            'DefaultSMSType' => 'Transactional',
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Comprobación de si se ha desactivado un número de teléfono
<a name="check-if-a-phone-number-has-opted-out"></a>

Para determinar si un propietario de número de teléfono concreto ha desactivado la recepción de mensajes SMS desde su cuenta, use la operación [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html).

En este ejemplo, el número de teléfono está en formato E.164, un estándar utilizado para las telecomunicaciones internacionales.

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$phone = '+1XXX5550100';

try {
    $result = $SnSclient->checkIfPhoneNumberIsOptedOut([
        'phoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Lista de números de teléfono desactivados
<a name="list-opted-out-phone-numbers"></a>

Para recuperar una lista de números de teléfono en los que el propietario haya desactivado la recepción de mensajes SMS desde su cuenta, utilice la operación [ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listPhoneNumbersOptedOut();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Publicación en un mensaje de texto (mensaje SMS)
<a name="publish-to-a-text-message-sms-message"></a>

Para entregar un mensaje de texto (mensaje SMS) directamente a un número de teléfono, utilice la operación [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

En este ejemplo, el número de teléfono está en formato E.164, un estándar utilizado para las telecomunicaciones internacionales.

Los mensajes SMS puede contener hasta 140 bytes. El límite de tamaño de una sola acción de publicación SMS es de 1600 bytes.

Para obtener más información sobre cómo enviar mensajes SMS, consulte [Envío de un mensaje SMS](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html).

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Código de muestra** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$phone = '+1XXX5550100';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'PhoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```