

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exemplos do Amazon SNS usando a versão 3 AWS SDK para PHP
<a name="sns-examples"></a>

O Amazon Simple Notification Service (Amazon SNS) é um serviço web que coordena e gerencia a entrega ou o envio de mensagens para endpoints ou clientes assinantes.

No Amazon SNS, há dois tipos de clientes: os publicadores (também chamados de produtores) e os assinantes (também chamados de consumidores). Os editores se comunicam de maneira assíncrona com os inscritos produzindo e enviando uma mensagem para um tópico, que é um canal de comunicação e um ponto de acesso lógico. Os assinantes (servidores web, endereços de e-mail, filas do Amazon SQS, AWS Lambda funções) consomem ou recebem a mensagem ou notificação por meio de um dos protocolos suportados (Amazon SQS, HTTP/HTTPS URLs e-mail, AWS SMS Lambda) quando estão inscritos no tópico.

Todo o código de exemplo para a AWS SDK para PHP versão 3 está disponível [aqui em GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Gerenciamento de tópicos](sns-examples-managing-topics.md)
+ [Como gerenciar assinaturas](sns-examples-subscribing-unsubscribing-topics.md)
+ [Envio de mensagens SMS do Amazon](sns-examples-sending-sms.md)

# Gerenciar tópicos no Amazon SNS com o AWS SDK para PHP versão 3
<a name="sns-examples-managing-topics"></a>

Para enviar notificações para Amazon Simple Queue Service (Amazon SQS), URLs de HTTP/HTTPS, e-mail, AWS SMS ou AWS Lambda, primeiramente é necessário criar um tópico que gerencie a entrega de mensagens a todos os assinantes desse tópico.

Em relação ao padrão de design do observador, o tópico é semelhante ao assunto. Após a criação do tópico, adicione assinantes que serão notificados automaticamente quando uma mensagem for publicada no tópico.

Saiba mais sobre como assinar tópicos em [Gerenciamento de assinaturas no Amazon SNS com o AWS SDK para PHP versão 3](sns-examples-subscribing-unsubscribing-topics.md).

Os exemplos a seguir mostram como:
+ Crie um tópico para publicar notificações com o [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic).
+ Obtenha uma lista de tópicos do solicitante com o [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Exclua um tópico e todas as suas assinaturas com o [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Obtenha todas as propriedades de um tópico com o [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Permita que o proprietário de um tópico defina um atributo do tópico como um novo valor com o [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Para obter mais informações sobre o uso do Amazon SNS, consulte [Atributos de tópico do Amazon SNS para status de entrega de mensagens](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html).

O código de exemplo completo do AWS SDK para PHP está disponível [aqui no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em [Autenticando com o AWS uso da AWS SDK para PHP versão 3](credentials.md). Em seguida, importe o AWS SDK para PHP, conforme descrito em [Instalando a AWS SDK para PHP versão 3](getting-started_installation.md).

## Criar um tópico
<a name="create-a-topic"></a>

Para criar um tópico, utilize a operação [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html).

Cada nome de tópico presente na Conta da AWS deve ser exclusivo.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Listar seus tópicos
<a name="list-your-topics"></a>

Para listar até 100 tópicos existente na região da AWS atual, utilize a operação [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html).

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Excluir um tópico
<a name="delete-a-topic"></a>

Para remover um tópico existente e todas as suas assinaturas, utilize a operação [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html).

Todas as mensagens que ainda não tiverem sido entregues aos assinantes também serão excluídas.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Obter atributos de tópicos
<a name="get-topic-attributes"></a>

Para recuperar as propriedades de um único tópico existente, utilize a operação [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html).

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Definir atributos de tópicos
<a name="set-topic-attributes"></a>

Para atualizar as propriedades de um único tópico existente, utilize a operação [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html).

É possível definir apenas os atributos `Policy`, `DisplayName` e `DeliveryPolicy`.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

# Gerenciando assinaturas no Amazon SNS com a versão 3 AWS SDK para PHP
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Use tópicos do Amazon Simple Notification Service (Amazon SNS) para enviar notificações para o Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, endereços de e-mail, () ou. AWS Server Migration Service AWS SMS AWS Lambda

As assinaturas são anexadas a um tópico que gerencia o envio de mensagens aos assinantes. Saiba mais sobre a criação de tópicos em [Gerenciando tópicos no Amazon SNS com a AWS SDK para PHP versão 3](sns-examples-managing-topics.md).

Os exemplos a seguir mostram como:
+ Inscreva-se em um tópico existente com a função [Assinar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Verifique uma assinatura usando [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Liste as assinaturas existentes usando. [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic)
+ Exclua uma assinatura com a opção [Cancelar assinatura](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Enviar uma mensagem para todos os assinantes de um tópico com a função [Publicar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Para obter mais informações sobre o uso do Amazon SNS, consulte [Usando o Amazon System-to-System SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html) para mensagens.

Todo o código de exemplo do AWS SDK para PHP está disponível [aqui em GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Antes de executar o código de exemplo, configure suas AWS credenciais, conforme descrito em[Autenticando com o AWS uso da AWS SDK para PHP versão 3](credentials.md). Em seguida, importe o AWS SDK para PHP, conforme descrito em[Instalando a AWS SDK para PHP versão 3](getting-started_installation.md).

## Inscrever um endereço de e-mail em um tópico
<a name="subscribe-an-email-address-to-a-topic"></a>

Para iniciar a inscrição em um endereço de e-mail, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Neste exemplo, o endpoint é um endereço de e-mail. Um token de confirmação é enviado para este e-mail. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Inscrever um endpoint de aplicação em um tópico
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Para iniciar a inscrição em uma aplicação web, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Nesse exemplo, o endpoint é uma URL. Um token de confirmação é enviado para este endereço da web. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Inscrever uma função do Lambda em um tópico
<a name="subscribe-a-lam-function-to-a-topic"></a>

Para iniciar a assinatura de uma função do Lambda, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Nesse exemplo, o endpoint é uma função do Lambda. Um token de confirmação é enviado para essa função do Lambda. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Inscrever mensagens SMS de texto em um tópico
<a name="subscribe-a-text-sms-to-a-topic"></a>

Para enviar mensagens SMS a vários números de telefone ao mesmo tempo, inscreva cada número em um tópico.

Para iniciar a inscrição em um número de telefone, utilize a operação [Assinar](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

O método de assinatura pode ser utilizado para inscrever vários endpoints em um tópico do Amazon SNS, dependendo dos valores adotados para os parâmetros passados. Isso é mostrado em outros exemplos deste tópico.

Neste exemplo, o endpoint é um número de telefone no formato E.164, um padrão para telecomunicações internacionais.

Um token de confirmação é enviado para este número de telefone. Dentro do prazo de três dias de recebimento, verifique a assinatura com esse token de confirmação.

Para obter uma alternativa de envio de mensagens SMS com o Amazon SNS, consulte [Envio de mensagens SMS no Amazon SNS com o AWS SDK para PHP versão 3](sns-examples-sending-sms.md).

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Confirmar inscrição em um tópico
<a name="confirm-subscription-to-a-topic"></a>

Para criar uma assinatura, o proprietário do endpoint deve confirmar a intenção de receber mensagens do tópico por meio de um token enviado mediante o estabelecimento da inscrição, conforme descrito anteriormente. Os tokens de confirmação são válidos por três dias. Após três dias, você pode reenviar um token ao criar uma nova assinatura.

Para confirmar uma assinatura, use a [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)operação.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Listar assinaturas em um tópico
<a name="list-subscriptions-to-a-topic"></a>

Para listar até 100 assinaturas existentes em uma determinada AWS região, use a [ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)operação.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Cancelar a assinatura de um tópico
<a name="unsubscribe-from-a-topic"></a>

Para excluir um endpoint inscrito em um tópico, utilize a operação [Cancelar assinatura](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Se a assinatura exigir autenticação para exclusão, somente o proprietário da assinatura ou o proprietário do tópico poderá cancelar a assinatura, e uma AWS assinatura será necessária. Se a chamada de cancelamento da assinatura não exigir autenticação e o solicitante não for proprietário da assinatura, uma mensagem de cancelamento final será entregue ao endpoint.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Publique uma mensagem em um tópico do Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

Para enviar uma mensagem a cada endpoint inscrito em um tópico do Amazon SNS, utilize a operação [Publicar](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Crie um objeto que contenha os parâmetros para publicar uma mensagem, incluindo o texto da mensagem e o nome do recurso da Amazon (ARN) do tópico do Amazon SNS.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

# Envio de mensagens SMS no Amazon SNS com o AWS SDK para PHP versão 3
<a name="sns-examples-sending-sms"></a>

Você pode usar o Amazon Simple Notification Service (Amazon SNS) para enviar mensagens de texto ou mensagens SMS para dispositivos habilitados para SMS. Você pode enviar uma mensagem diretamente para um número de telefone ou enviar uma mensagem para vários números de telefone de uma só vez inscrevendo esses números em um tópico e enviando sua mensagem para o tópico.

Use o Amazon SNS para especificar as preferências para o uso de mensagens SMS, por exemplo, como suas entregas serão otimizadas (para fins de custo ou confiabilidade), o limite de gastos mensais, como as entregas de mensagens serão registradas e a assinatura em relatórios diários de uso de SMS. Essas preferências são recuperadas e definidas como atributos de SMS para Amazon SNS.

Ao enviar uma mensagem SMS, especifique o número de telefone usando o formato E.164. E.164 é um padrão para a estrutura de número de telefone usada para telecomunicações internacionais. Os números de telefone que seguem esse formato podem conter 15 dígitos, no máximo, e são prefixados com o caractere de mais (\$1) e o código do país. Por exemplo, um número de telefone dos EUA no formato E.164 seria exibido como \$11001XXX5550100.

Os exemplos a seguir mostram como:
+ Recupere as configurações padrão para o envio de mensagens SMS de sua conta com o [GetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes).
+ Atualize as configurações padrão para o envio de mensagens SMS de sua conta com o [SetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes).
+ Descubra se um proprietário de número de telefone determinado cancelou o recebimento de mensagens com o [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout).
+ Liste os números de telefone para os quais o proprietário desativou o recebimento de mensagens SMS de sua conta com o [ListPhoneNumberOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout).
+ Envie uma mensagem de texto (SMS) diretamente a um número de telefone com a função [Publicar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Para obter mais informações sobre como usar o Amazon SNS, consulte [Uso do Amazon SNS para notificações ao usuário com um número de celular como assinante (envio por SMS)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html).

O código de exemplo completo do AWS SDK para PHP está disponível [aqui no GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em [Autenticando com o AWS uso da AWS SDK para PHP versão 3](credentials.md). Em seguida, importe o AWS SDK para PHP, conforme descrito em [Instalando a AWS SDK para PHP versão 3](getting-started_installation.md).

## Obter atributos de SMS
<a name="get-sms-attributes"></a>

Para recuperar as configurações padrão para mensagens SMS, utilize a operação [GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html).

Este exemplo obtém o atributo `DefaultSMSType`. Este atributo controla se serão enviadas mensagens SMS como `Promotional`, que otimiza a entrega de mensagens para gerar custos mais baixos, ou como `Transactional`, que otimiza a entrega de mensagens para gerar a mais alta confiabilidade.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

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

Para atualizar as configurações padrão para mensagens SMS, utilize a operação [SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html).

Este exemplo define o atributo `DefaultSMSType` para `Transactional`, que otimiza a entrega de mensagens para gerar a mais alta confiabilidade.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Verificar se um número de telefone cancelou o recebimento
<a name="check-if-a-phone-number-has-opted-out"></a>

Para estabelecer se determinado proprietário de número de telefone cancelou o recebimento de mensagens de sua conta, utilize a operação [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html).

Neste exemplo, o número de telefone está no formato E.164, um padrão para telecomunicações internacionais.

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Listar números de telefone que saíram
<a name="list-opted-out-phone-numbers"></a>

Para recuperar uma lista de números de telefone para os quais o proprietário desativou o recebimento de mensagens SMS de sua conta, utilize a operação [ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html).

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```

## Publicar em uma mensagem de texto (mensagem SMS)
<a name="publish-to-a-text-message-sms-message"></a>

Para enviar uma mensagem de texto (mensagem SMS) diretamente a um número de telefone, utilize a operação [Publicar](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Neste exemplo, o número de telefone está no formato E.164, um padrão para telecomunicações internacionais.

As mensagens SMS podem conter até 140 bytes. O limite do tamanho de uma única ação de publicação de SMS é de 1.600 bytes.

Para obter mais informações sobre o envio de mensagens SMS, consulte [Como enviar uma mensagem SMS](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html).

 **Importações** 

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

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

 **Código de exemplo** 

```
$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());
}
```