在 Amazon SNS 中发送 SMS 消息Amazon适 SDK for PHP 版本 3 - Amazon适用于 PHP 的开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon SNS 中发送 SMS 消息Amazon适 SDK for PHP 版本 3

您可以使用 Amazon Simple Notification Service (Amazon SNS) 将文本消息或 SMS 消息发送到支持 SMS 的设备上。您可以直接向电话号码发送消息,也可以使用多个电话号码订阅主题,然后通过向该主题发送消息来一次向这些电话号码发送消息。

使用 Amazon SNS 指定发送 SMS 消息的首选项,例如如何优化消息传输(在成本或可靠传输方面)、您的每月支出限额、如何记录消息传输以及是否要订阅每日 SMS 使用率报告。这些首选项通过检索得到,并设置为 Amazon SNS 的 SMS 属性。

在发送 SMS 消息时,请使用 E.164 格式指定电话号码。E.164 是国际电信的标准电话号码结构。遵循此格式的电话号码最多可包含 15 位,并以加号 (+) 和国家/地区代码作为前缀。例如,E.164 格式的美国电话号码将显示为 +1001XXX5550100。

以下示例演示如何:

  • 使用 GetSMSAttributes 检索从您账户发送 SMS 消息的默认设置。

  • 使用 SetSMSAttributes 更新从您账户发送 SMS 消息的默认设置。

  • 使用 CheckIfPhoneNumberISOptedOut 确定指定电话所有者是否已选择不接收来自您账户的 SMS 消息。

  • 使用 ListPhoneNumberOptedOut 列出其所有者已选择不接收来自您账户的 SMS 消息的电话号码。

  • 使用 Publish 直接将文本消息(SMS 消息)发送到电话号码。

有关使用 Amazon SNS 的更多信息,请参阅将 Amazon SNS 用于将手机号码作为订阅者的用户通知(发送 SMS)

所有示例代码Amazon适用 SDK for PHP 开发工具包版本 3(位于 GitHub 上)

Credentials

运行示例代码之前,请配置Amazon凭证,如的凭证Amazon适 SDK for PHP 版本 3。然后导入AmazonSDK for PHP,如的基本使用模式Amazon适 SDK for PHP 版本 3

获取 SMS 属性

要检索 SMS 消息的默认设置,请使用 GetSMSAttributes 操作。

此示例获取 DefaultSMSType 属性。此属性控制 SMS 消息是作为 Promotional 发送(这将优化消息传送以尽可能降低成本)还是作为 Transactional 发送(这将优化消息传送以实现最高的可靠性)。

导入

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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

设置 SMS 属性

要更新 SMS 消息的默认设置,请使用 SetSMSAttributes 操作。

此示例将 DefaultSMSType 属性设置为 Transactional,这会优化消息传送以实现最高的可靠性。

导入

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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

检查电话号码是否已选择不接收消息

要确定指定电话所有者是否已选择不接收来自您账户的 SMS 消息,请使用 CheckIfPhoneNumberIsOptedOut 操作。

在此示例中,电话号码为 E.164 格式,这是国际电信的标准。

导入

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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

列出选择不接收消息的电话号码

要检索其所有者已选择不接收来自您账户的 SMS 消息的电话号码列表,请使用 ListPhoneNumbersOptedOut 操作。

导入

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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

发布到文本消息(SMS 消息)

要将文本消息(SMS 消息)直接传送到电话号码,请使用 Publish 操作。

在此示例中,电话号码为 E.164 格式,这是国际电信的标准。

SMS 消息最多可以包含 140 个字节。单个 SMS 发布操作的大小限制为 1600 字节。

有关发送 SMS 消息的更多详细信息,请参阅发送 SMS 消息

导入

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException;

示例代码

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