在 Amazon 中設定SMS訊息偏好設定 SNS - Amazon Simple Notification Service

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

在 Amazon 中設定SMS訊息偏好設定 SNS

使用 Amazon SNS 來指定SMS傳訊的偏好設定。例如,您可以指定是否針對成本或可靠性最佳化交付、您的每月支出限制、交付記錄方式,以及是否訂閱每日SMS用量報告。

這些偏好設定會針對您從 帳戶傳送的每個SMS訊息生效,但您可以在傳送個別訊息時覆寫其中一些訊息。如需詳細資訊,請參閱使用 Amazon 將SMS訊息發佈至行動電話 SNS

使用 設定SMS訊息偏好設定 AWS Management Console

  1. 登入 Amazon SNS主控台

  2. 選擇支援SMS傳訊 的區域

  3. 在導覽面板上,選擇行動,然後選擇簡訊 (SMS)

  4. 行動簡訊 (SMS) 頁面的簡訊偏好設定區段中,選擇編輯

  5. Edit text messaging preferences (編輯簡訊喜好設定) 頁面上,在 Details (詳細資訊) 中,執行以下作業:

    1. 針對 Default message type (預設訊息類型),選擇以下其中一個項目:

      • 行銷活動 - 非關鍵訊息 (例如行銷)。Amazon SNS最佳化訊息傳遞,以產生最低成本。

      • 交易 (預設) - 支援客戶交易的重要訊息,例如多重要素驗證用的一次性密碼。Amazon SNS最佳化訊息傳遞,以達到最高的可靠性。

      如需促銷和交易訊息的定價資訊,請參閱 Global SMS Pricing

    2. (選用) 對於帳戶支出限制 ,輸入您想要在每個日曆月在SMS訊息上花費的金額 (以 表示USD)。

      重要
      • 根據預設,支出配額會設為 1.00 USD。如果您想要提高服務配額,請提交請求

      • 如果主控台中設定的金額超過您的服務配額,Amazon 會SNS停止發佈SMS訊息。

      • 由於 Amazon SNS 是分散式系統,因此會在超出支出配額的幾分鐘內停止SMS傳送訊息。在此間隔期間,如果您繼續SMS傳送訊息,可能會產生超出配額的成本。

  6. (選用) 針對 Default sender ID (預設寄件者 ID),輸入自訂 ID (例如您的商業品牌),該 ID 會顯示為接收裝置的寄件者。

    注意

    對寄件者的支援因國家/地區IDs而異。

  7. (選用) 輸入Amazon S3 儲存貯體用量報告名稱

    注意

    S3 儲存貯體政策必須授予 Amazon 的寫入存取權SNS。

  8. 選擇 Save changes (儲存變更)。

設定偏好設定 (AWS SDKs)

若要使用其中一個 設定您的SMS偏好設定 AWS SDKs,請使用 中與 Amazon SNS 中SetSMSAttributes請求SDK對應的動作API。透過此請求,您可以將值指派給不同的SMS屬性,例如每月支出配額和預設SMS類型 (促銷或交易)。如需所有SMS屬性,請參閱 Amazon Simple Notification Service API參考 中的 SetSMSAttributes

下列程式碼範例示範如何使用 SetSMSAttributes

C++
SDK 適用於 C++
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

如何使用 Amazon SNS設定 D efaultSMSType 屬性。

//! Set the default settings for sending SMS messages. /*! \param smsType: The type of SMS message that you will send by default. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::setSMSType(const Aws::String &smsType, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::SetSMSAttributesRequest request; request.AddAttributes("DefaultSMSType", smsType); const Aws::SNS::Model::SetSMSAttributesOutcome outcome = snsClient.SetSMSAttributes( request); if (outcome.IsSuccess()) { std::cout << "SMS Type set successfully " << std::endl; } else { std::cerr << "Error while setting SMS Type: '" << outcome.GetError().GetMessage() << "'" << std::endl; } return outcome.IsSuccess(); }
  • 如需API詳細資訊,請參閱AWS SDK for C++ API參考 中的 SetSMSAttributes

CLI
AWS CLI

設定SMS訊息屬性

下列set-sms-attributes範例會將SMS訊息的預設寄件者 ID 設定為 MyName

aws sns set-sms-attributes \ --attributes DefaultSenderID=MyName

此命令不會產生輸出。

  • 如需API詳細資訊,請參閱 AWS CLI 命令參考 中的 SetSMSAttributes

Java
SDK 適用於 Java 2.x
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest; import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse; import software.amazon.awssdk.services.sns.model.SnsException; import java.util.HashMap; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SetSMSAttributes { public static void main(String[] args) { HashMap<String, String> attributes = new HashMap<>(1); attributes.put("DefaultSMSType", "Transactional"); attributes.put("UsageReportS3Bucket", "janbucket"); SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); setSNSAttributes(snsClient, attributes); snsClient.close(); } public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) { try { SetSmsAttributesRequest request = SetSmsAttributesRequest.builder() .attributes(attributes) .build(); SetSmsAttributesResponse result = snsClient.setSMSAttributes(request); System.out.println("Set default Attributes to " + attributes + ". Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • 如需API詳細資訊,請參閱AWS SDK for Java 2.x API參考 中的 SetSMSAttributes

JavaScript
SDK 適用於 JavaScript (v3)
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

在單獨的模組中建立用戶端並將其匯出。

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

匯入 SDK和 用戶端模組,然後呼叫 API。

import { SetSMSAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {"Transactional" | "Promotional"} defaultSmsType */ export const setSmsType = async (defaultSmsType = "Transactional") => { const response = await snsClient.send( new SetSMSAttributesCommand({ attributes: { // Promotional – (Default) Noncritical messages, such as marketing messages. // Transactional – Critical messages that support customer transactions, // such as one-time passcodes for multi-factor authentication. DefaultSMSType: defaultSmsType, }, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '1885b977-2d7e-535e-8214-e44be727e265', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
PHP
適用於 PHP 的 SDK
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

$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的訊息偏好設定

您可以僅將訊息傳送至特定目的地國家,藉此管理和控制SMS流量。這可確保您的訊息只會傳送至核准的國家/地區,避免不必要的SMS費用。下列指示使用 Amazon Pinpoint 的 Protect 組態來指定您要允許或封鎖的國家/地區。

  1. 在 開啟 AWS SMS 主控台https://console.aws.amazon.com/sms-voice/

  2. 在導覽窗格中的概觀 下,於快速啟動區段中選擇建立保護組態

  3. 保護組態詳細資訊 下,輸入保護組態的易用名稱 (例如) Allow-Only-AU。

  4. SMS國家/地區規則 下,選取區域/國家/地區核取方塊,以封鎖傳送訊息至所有支援的國家/地區。

  5. 取消選取您要傳送訊息之國家/地區的核取方塊。例如,若要僅允許傳送訊息至澳洲,請取消選取澳洲 的核取方塊。

  6. 保護組態關聯區段的關聯類型 下,選取帳戶預設 。這將確保 AWS End User Messaging SMS 保護組態會影響透過 Amazon SNS、Amazon Cognito和 Amazon Pinpoint SendMessagesAPI呼叫傳送的所有訊息。

  7. 選擇建立保護組態以儲存您的設定。

    會顯示下列確認訊息:

    Success Protect configuration protect-abc0123456789 has been created.
  8. 登入 Amazon SNS主控台

  9. 將訊息發佈至其中一個受封鎖的國家/地區,例如印度。

    訊息將不會傳送。您可以使用 在交付失敗日誌中驗證這一點CloudWatch。搜尋類似下列範例sns/region/AccountID/DirectPublishToPhoneNumber/Failure之回應的日誌群組:

    { "notification": { "messageId": "bd59a509-XXXX-XXXX-82f8-fbdb8cb68217", "timestamp": "YYYY-MM-DD XX:XX:XX.XXXX“ }, "delivery": { "destination": "+91XXXXXXXXXX", "smsType": "Transactional", "providerResponse": "Cannot deliver message to the specified destination country", "dwellTimeMs": 85 }, "status": "FAILURE" }