使用第 3 AWS SDK for PHP 版在 Amazon SNS 中發送短信 - AWS SDK for PHP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用第 3 AWS SDK for PHP 版在 Amazon SNS 中發送短信

您可以使用 Amazon Simple Notification Service (Amazon SNS) 將文字訊息或簡訊傳送至啟用 SMS 的裝置。您可以直接傳送訊息至一組電話號碼,或一次傳送一則訊息至多組電話號碼,只要訂閱那些電話號碼到主題並且傳送您的訊息到該主題即可。

使用 Amazon SNS 指定 SMS 簡訊的偏好設定,例如如何優化交付 (基於成本或可靠交付)、每月支出限制、訊息傳遞的記錄方式,以及是否訂閱每日 SMS 使用量報告。系統會擷取這些偏好設定,並將其設定為 Amazon SNS 的 SMS 屬性。

當您傳送簡訊時,請指定使用 E.164 格式的電話號碼。E.164 是國際電信通訊所採用的電話號碼結構的標準。遵循此格式的電話號碼最多可以有 15 位數,前面加上加號 (+) 字元和國碼。例如,E.164 格式的美國電話號碼顯示為 +1001XXX5550100。

下列範例示範如何:

如需有關使用 Amazon SNS 的詳細資訊,請參閱使用 Amazon SNS 接收使用行動電話號碼作為訂閱者的使用者通知 (傳送簡訊)

所有的範例程式碼都可以AWS SDK for PHP在這裡取得 GitHub。

登入資料

在執行範例程式碼之前,請依照中的說明設定您的AWS認證憑證。然後匯入AWS SDK for PHP,如中所述基本使用

獲取短信屬性

若要擷取簡訊的預設設定,請使用 GetSMSAttributes 操作。

本範例將取得 DefaultSMSType 屬性。此屬性控制著簡訊的傳送方式,Promotional 會將訊息交付最佳化為產生最低的成本,而 Transactional 會將訊息交付最佳化為達成最高的可靠性。

匯入

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

範例程式碼

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

設定簡訊屬性

若要更新簡訊的預設設定,請使用 SetSMSAttributes 操作。

此範例將 DefaultSMSType 屬性設為 Transactional,藉此將訊息交付最佳化為達成最高的可靠性。

匯入

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

範例程式碼

$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\Exception\AwsException; use Aws\Sns\SnsClient;

範例程式碼

$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\Exception\AwsException; use Aws\Sns\SnsClient;

範例程式碼

$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 訊息)

若要直接交付文字訊息 (簡訊) 至電話號碼,請使用 Publish 操作。

本範例指定 E.164 格式的電話號碼,此為國際電信通訊所採用的標準。

每則簡訊最多可包含 140 個位元組。單次簡訊發佈動作的大小上限為 1,600 個位元組。

如需有關傳送簡訊的詳細資訊,請參閱傳送簡訊

匯入

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

範例程式碼

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