Menerbitkan SMS pesan ke ponsel menggunakan Amazon SNS - Amazon Simple Notification Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerbitkan SMS pesan ke ponsel menggunakan Amazon SNS

Anda dapat menggunakan Amazon SNS untuk mengirim SMS pesan langsung ke ponsel tanpa berlangganan nomor telepon ke SNS topik Amazon.

catatan

Membuat nomor telepon berlangganan ke topik berguna jika Anda ingin mengirim satu pesan ke beberapa nomor telepon sekaligus. Untuk petunjuk tentang memublikasikan SMS pesan ke suatu topik, lihatMenerbitkan SMS pesan ke SNS topik Amazon.

Saat mengirim pesan, Anda dapat mengontrol pesan dioptimalkan atau tidak untuk biayanya atau pengiriman andal. Anda juga dapat menentukan ID pengirim atau nomor asal. Jika Anda mengirim pesan secara terprogram menggunakan Amazon SNS API atau AWS SDKs, Anda dapat menentukan harga maksimum untuk pengiriman pesan.

Setiap SMS pesan dapat berisi hingga 140 byte, dan kuota karakter tergantung pada skema pengkodean. Misalnya, SMS pesan dapat berisi:

  • 160 GSM karakter

  • 140 ASCII karakter

  • 70 UCS -2 karakter

Jika Anda memublikasikan pesan yang melebihi kuota ukuran, Amazon SNS mengirimkannya sebagai beberapa pesan, masing-masing sesuai dengan kuota ukuran. Pesan tidak terputus di tengah kata, melainkan di batas seluruh kata. Kuota ukuran total untuk satu tindakan SMS publikasi adalah 1.600 byte.

Saat Anda mengirim SMS pesan, Anda menentukan nomor telepon menggunakan format E.164, struktur penomoran telepon standar yang digunakan untuk telekomunikasi internasional. Nomor telepon yang mengikuti format ini dapat terdiri dari maksimum 15 digit bersama dengan prefiks tanda tambah (+) dan kode negara. Misalnya, nomor telepon AS dalam format E.164 muncul sebagai +1 XXX555 0100.

Mengirim pesan menggunakan konsol

  1. Masuk ke SNSkonsol Amazon.

  2. Di menu konsol, pilih AWS Wilayah yang mendukung SMS perpesanan.

  3. Di panel navigasi, pilih Pesan teks (SMS).

  4. Pada halaman Pesan teks seluler (SMS), pilih Publikasikan pesan teks.

  5. Pada halaman Publikasikan SMS pesan, untuk jenis Pesan, pilih salah satu dari berikut ini:

    • Promotional (Promosi) – Pesan tidak penting, seperti pesan pemasaran.

    • Transactional (Transaksional) – Pesan penting yang mendukung transaksi pelanggan, seperti kode sandi satu kali (OTP) untuk autentikasi multi-faktor.

    catatan

    Pengaturan tingkat pesan ini menimpa jenis pesan default tingkat akun Anda. Anda dapat menyetel jenis pesan default tingkat akun dari bagian Preferensi pesan teks pada halaman Pesan teks seluler (SMS).

    Untuk informasi harga untuk pesan promosi dan transaksional, lihat Harga Seluruh Dunia SMS.

  6. Untuk Destination phone number (Nomor telepon tujuan), masukkan nomor telepon yang ingin Anda kirimi pesan tersebut.

  7. Untuk Message (Pesan), masukkan pesan yang akan dikirim.

  8. (Opsional) Di bawah Origination identities (Identitas asal), tentukan cara mengenalkan diri Anda ke penerima:

    • Untuk menentukan Sender ID ID Pengirim, ketik ID kustom yang terdiri dari 3-11 karakter alfanumerik, termasuk setidaknya satu huruf dan tanpa spasi. ID pengirim ditampilkan sebagai pengirim pesan di perangkat penerima. Misalnya, Anda dapat menggunakan merek bisnis Anda untuk membuat sumber pesan lebih mudah dikenali.

      Support untuk pengirim IDs bervariasi menurut negara dan/atau wilayah. Misalnya, pesan yang dikirim ke nomor telepon US tidak akan menampilkan ID pengirim. Untuk negara dan wilayah yang mendukung pengirimIDs, lihatAmazon SNS mendukung negara dan wilayah.

      Jika Anda tidak menentukan ID pengirim, salah satu dari berikut ini akan ditampilkan sebagai identitas asal:

      • Di negara-negara yang mendukung kode panjang, kode panjang akan ditampilkan.

      • Di negara-negara di mana hanya pengirim IDs yang didukung, NOTICEditampilkan.

      ID pengirim tingkat pesan ini menimpa ID pengirim default Anda, yang Anda tetapkan di halaman Text messaging preferences (Preferensi olahpesan teks).

    • Untuk menentukan Nomor asal, masukkan string yang terdiri dari 5-14 nomor untuk ditampilkan sebagai nomor telepon pengirim di perangkat penerima. String ini harus cocok dengan nomor originasi yang dikonfigurasi di negara Akun AWS tujuan Anda. Nomor originasi dapat berupa angka 10, DLC nomor bebas pulsa, kode person-to-person panjang, atau kode pendek. Untuk informasi selengkapnya, lihat Identitas originasi untuk pesan Amazon SNS SMS.

      Jika Anda tidak menentukan nomor originasi, Amazon SNS memilih nomor originasi yang akan digunakan untuk pesan SMS teks, berdasarkan konfigurasi Anda. Akun AWS

  9. Jika Anda mengirim SMS pesan ke penerima di India, perluas atribut khusus Negara, dan tentukan atribut berikut:

    • ID Entitas — ID entitas atau ID entitas utama (PE) untuk mengirim SMS pesan ke penerima di India. ID ini adalah string unik dari 1—50 karakter yang disediakan oleh Telecom Regulatory Authority of India (TRAI) untuk mengidentifikasi entitas yang Anda daftarkan. TRAI

    • ID Template - ID template untuk mengirim SMS pesan ke penerima di India. ID ini adalah string unik TRAI yang disediakan dari 1-50 karakter yang mengidentifikasi template yang Anda daftarkan. TRAI ID templat harus dikaitkan dengan ID pengirim yang Anda tentukan untuk pesan.

    Untuk informasi selengkapnya tentang mengirim SMS pesan ke penerima di India, lihatPersyaratan pendaftaran ID SNS Pengirim Amazon untuk India.

  10. Pilih Publish message (Publikasikan Pesan).

Tip

Untuk mengirim SMS pesan dari nomor originasi, Anda juga dapat memilih Nomor Originasi di panel navigasi SNS konsol Amazon. Pilih nomor originasi yang disertakan SMSdalam kolom Kemampuan, lalu pilih Publikasikan pesan teks.

Mengirim pesan menggunakan AWS SDKs

Untuk mengirim SMS pesan menggunakan salah satu AWS SDKs, gunakan API operasi SDK yang sesuai dengan Publish permintaan di Amazon SNSAPI. Dengan permintaan ini, Anda dapat mengirim SMS pesan langsung ke nomor telepon. Anda juga dapat menggunakan parameter MessageAttributes untuk menetapkan nilai untuk nama atribut berikut:

AWS.SNS.SMS.SenderID

ID kustom yang berisi 3-11 karakter alfanumerik atau karakter tanda hubung (-), termasuk setidaknya satu huruf dan tidak ada spasi. ID pengirim ditampilkan sebagai pengirim pesan di perangkat penerima. Misalnya, Anda dapat menggunakan merek bisnis Anda untuk membuat sumber pesan lebih mudah dikenali.

Support untuk pengirim IDs bervariasi menurut negara atau wilayah. Misalnya, pesan yang dikirim ke nomor telepon US tidak akan menampilkan ID pengirim. Untuk mengetahui daftar negara atau wilayah yang mendukung pengirimIDs, lihatAmazon SNS mendukung negara dan wilayah.

Jika Anda tidak menentukan ID pengirim, kode panjangakan ditampilkan sebagai ID pengirim di negara atau wilayah yang didukung. Untuk negara atau wilayah yang memerlukan ID pengirim alfabet, NOTICEmuncul sebagai ID pengirim.

Atribut tingkat pesan ini menimpa atribut tingkat akun DefaultSenderID, yang dapat Anda atur menggunakan permintaan SetSMSAttributes.

AWS.MM.SMS.OriginationNumber

Sebuah string kustom yang terdiri dari 5–14 angka, yang dapat mencakup awalan tanda tambah (+) opsional. String angka ini muncul sebagai nomor telepon pengirim di perangkat penerima. String harus cocok dengan nomor originasi yang dikonfigurasi di AWS akun Anda untuk negara tujuan. Nomor originasi dapat berupa angka 10, DLC nomor bebas pulsa, kode panjang person-to-person (P2P), atau kode pendek. Untuk informasi selengkapnya, lihat Memahami angka originasi di Amazon SNS.

Jika Anda tidak menentukan nomor originasi, Amazon SNS memilih nomor originasi berdasarkan konfigurasi akun Anda AWS .

AWS.SNS.SMS.MaxPrice

Harga maksimum USD yang bersedia Anda keluarkan untuk mengirim SMS pesan. Jika Amazon SNS menentukan bahwa mengirim pesan akan dikenakan biaya yang melebihi harga maksimum Anda, itu tidak mengirim pesan.

Atribut ini tidak berpengaruh jika month-to-date SMS biaya Anda telah melebihi kuota yang ditetapkan untuk atribut tersebut. MonthlySpendLimit Anda dapat mengatur atribut MonthlySpendLimit menggunakan permintaan SetSMSAttributes.

Jika Anda mengirim pesan ke SNS topik Amazon, harga maksimum berlaku untuk setiap pengiriman pesan ke setiap nomor telepon yang berlangganan topik tersebut.

AWS.SNS.SMS.SMSType

Jenis pesan yang Anda kirim:

  • Promotional (default) – Pesan tidak penting, seperti pesan pemasaran.

  • Transactional (Transaksional) – Pesan penting yang mendukung transaksi pelanggan, seperti kode sandi satu kali (OTP) untuk autentikasi multi-faktor.

Atribut tingkat pesan ini menimpa atribut tingkat akun DefaultSMSType, yang dapat Anda atur menggunakan permintaan SetSMSAttributes.

AWS.MM.SMS.EntityId

Atribut ini hanya diperlukan untuk mengirim SMS pesan ke penerima di India.

Ini adalah ID entitas atau ID entitas utama (PE) Anda untuk mengirim SMS pesan ke penerima di India. ID ini adalah string unik dari 1—50 karakter yang disediakan oleh Telecom Regulatory Authority of India (TRAI) untuk mengidentifikasi entitas yang Anda daftarkan. TRAI

AWS.MM.SMS.TemplateId

Atribut ini hanya diperlukan untuk mengirim SMS pesan ke penerima di India.

Ini adalah template Anda untuk mengirim SMS pesan ke penerima di India. ID ini adalah string unik TRAI yang disediakan dari 1-50 karakter yang mengidentifikasi template yang Anda daftarkan. TRAI ID templat harus dikaitkan dengan ID pengirim yang Anda tentukan untuk pesan.

Mengirim pesan

Contoh kode berikut menunjukkan cara mempublikasikan SMS pesan menggunakan AmazonSNS.

.NET
AWS SDK for .NET
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

namespace SNSMessageExample { using System; using System.Threading.Tasks; using Amazon; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; public class SNSMessage { private AmazonSimpleNotificationServiceClient snsClient; /// <summary> /// Initializes a new instance of the <see cref="SNSMessage"/> class. /// Constructs a new SNSMessage object initializing the Amazon Simple /// Notification Service (Amazon SNS) client using the supplied /// Region endpoint. /// </summary> /// <param name="regionEndpoint">The Amazon Region endpoint to use in /// sending test messages with this object.</param> public SNSMessage(RegionEndpoint regionEndpoint) { snsClient = new AmazonSimpleNotificationServiceClient(regionEndpoint); } /// <summary> /// Sends the SMS message passed in the text parameter to the phone number /// in phoneNum. /// </summary> /// <param name="phoneNum">The ten-digit phone number to which the text /// message will be sent.</param> /// <param name="text">The text of the message to send.</param> /// <returns>Async task.</returns> public async Task SendTextMessageAsync(string phoneNum, string text) { if (string.IsNullOrEmpty(phoneNum) || string.IsNullOrEmpty(text)) { return; } // Now actually send the message. var request = new PublishRequest { Message = text, PhoneNumber = phoneNum, }; try { var response = await snsClient.PublishAsync(request); } catch (Exception ex) { Console.WriteLine($"Error sending message: {ex}"); } } } }
  • Untuk API detailnya, lihat Publikasikan di AWS SDK for .NET APIReferensi.

C++
SDKuntuk C ++
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

/** * Publish SMS: use Amazon Simple Notification Service (Amazon SNS) to send an SMS text message to a phone number. * Note: This requires additional AWS configuration prior to running example. * * NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is in the SMS sandbox and you can only * use verified destination phone numbers. See https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html. * NOTE: If destination is in the US, you also have an additional restriction that you have use a dedicated * origination ID (phone number). You can request an origination number using Amazon Pinpoint for a fee. * See https://aws.amazon.com/blogs/compute/provisioning-and-using-10dlc-origination-numbers-with-amazon-sns/ * for more information. * * <phone_number_value> input parameter uses E.164 format. * For example, in United States, this input value should be of the form: +12223334444 */ //! Send an SMS text message to a phone number. /*! \param message: The message to publish. \param phoneNumber: The phone number of the recipient in E.164 format. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::publishSms(const Aws::String &message, const Aws::String &phoneNumber, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::PublishRequest request; request.SetMessage(message); request.SetPhoneNumber(phoneNumber); const Aws::SNS::Model::PublishOutcome outcome = snsClient.Publish(request); if (outcome.IsSuccess()) { std::cout << "Message published successfully with message id, '" << outcome.GetResult().GetMessageId() << "'." << std::endl; } else { std::cerr << "Error while publishing message " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }
  • Untuk API detailnya, lihat Publikasikan di AWS SDK for C++ APIReferensi.

Java
SDKuntuk Java 2.x
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * 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 PublishTextSMS { public static void main(String[] args) { final String usage = """ Usage: <message> <phoneNumber> Where: message - The message text to send. phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String message = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); pubTextSMS(snsClient, message, phoneNumber); snsClient.close(); } public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) { try { PublishRequest request = PublishRequest.builder() .message(message) .phoneNumber(phoneNumber) .build(); PublishResponse result = snsClient.publish(request); System.out .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
  • Untuk API detailnya, lihat Publikasikan di AWS SDK for Java 2.x APIReferensi.

Kotlin
SDKuntuk Kotlin
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

suspend fun pubTextSMS( messageVal: String?, phoneNumberVal: String?, ) { val request = PublishRequest { message = messageVal phoneNumber = phoneNumberVal } SnsClient { region = "us-east-1" }.use { snsClient -> val result = snsClient.publish(request) println("${result.messageId} message sent.") } }
  • Untuk API detailnya, lihat Publish in AWS SDKuntuk API referensi Kotlin.

PHP
SDKuntuk PHP
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * Sends a text message (SMS message) directly to a phone number using Amazon SNS. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $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()); }
Python
SDKuntuk Python (Boto3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

class SnsWrapper: """Encapsulates Amazon SNS topic and subscription functions.""" def __init__(self, sns_resource): """ :param sns_resource: A Boto3 Amazon SNS resource. """ self.sns_resource = sns_resource def publish_text_message(self, phone_number, message): """ Publishes a text message directly to a phone number without need for a subscription. :param phone_number: The phone number that receives the message. This must be in E.164 format. For example, a United States phone number might be +12065550101. :param message: The message to send. :return: The ID of the message. """ try: response = self.sns_resource.meta.client.publish( PhoneNumber=phone_number, Message=message ) message_id = response["MessageId"] logger.info("Published message to %s.", phone_number) except ClientError: logger.exception("Couldn't publish message to %s.", phone_number) raise else: return message_id
  • Untuk API detailnya, lihat Publikasikan AWS SDKuntuk Referensi Python (Boto3). API