使用Amazon SDK for PHP版本 3 在 Amazon SNS 中发送短信 - Amazon SDK for PHP
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用Amazon SDK for PHP版本 3 在 Amazon SNS 中发送短信

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

使用 Amazon SNS 指定短信首选项,例如如何优化传输以确保成本或可靠传输以确保成本或可靠传输报告。这些首选项被检索并设置为 Amazon SNS 的 SMS 属性。

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

以下示例演示如何:

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

的所有示例代码都可以在此Amazon SDK for PHP处获得GitHub。

凭证

在运行示例代码之前,请配置您的Amazon证书,如中所述凭证。然后导入Amazon SDK for PHP,如中所述基本用法

获取短信属性

要检索 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()); }