本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用Amazon SDK for PHP版本 3 在 Amazon SNS 中发送 SMS 消息
您可以使用亚马逊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 消息的默认设置。
-
了解给定电话的电话号码所有者是否已选择不接收来自您的账户CheckIfPhoneNumber的 SMS 消息OptedOut。
-
列出所有者选择不接收来自您的账户的 SMS 消息的电话号码ListPhoneNumberOptedOut。
-
使用 Publish 直接将文本消息(SMS 消息)发送到电话号码。
有关使用 Amazon SNS 的更多信息,请参阅 Amazon SNS 使用手机号码作为订阅者发送用户通知(发送 SMS)。
的所有示例代码都可以在此Amazon SDK for PHP处找到 GitHub
凭证
在运行示例代码之前,请配置您的Amazon证书,如中所述设置凭证。然后导入Amazon SDK for PHP,如中所述基本用法。
获取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()); }