Menerbitkan ke topik - 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 ke topik

Anda dapat menerbitkan satu pesan SMS ke banyak nomor telepon sekaligus dengan berlangganan nomor telepon tersebut ke topik Amazon SNS. Topik SNS adalah saluran komunikasi di mana Anda dapat menambahkan pelanggan dan kemudian menerbitkan pesan ke semua pelanggan tersebut. Pelanggan menerima semua pesan yang diterbitkan ke topik sampai Anda membatalkan langganan, atau sampai pelanggan memilih untuk tidak menerima pesan SMS dari akun AWS Anda.

Mengirim pesan ke topik (konsol)

Cara membuat topik

Lakukan langkah-langkah berikut jika Anda belum memiliki topik untuk dikirimi pesan SMS.

  1. Masuk ke konsol Amazon SNS.

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

  3. Di panel navigasi, pilih Topics (Topik).

  4. Di halaman Topics (Topik), pilih Create topic (Buat topik).

  5. Di halaman Create topic (Buat topik), pada Details (Detail), lakukan hal-hal berikut:

    1. Untuk Type (Jenis), pilih Standard (Standar).

    2. Untuk Name (Nama), masukkan nama topik.

    3. (Opsional) Untuk Display name (Nama tampilan), masukkan prefiks kustom untuk pesan SMS Anda. Ketika Anda mengirim pesan ke topik, Amazon SNS menambahkan nama tampilan diikuti tanda kurung siku (>) dan spasi. Nama tampilan tidak peka huruf besar/kecil, dan Amazon SNS mengonversi nama tampilan menjadi karakter huruf besar. Misalnya, jika nama tampilan topiknya adalah MyTopic dan pesannya adalah Hello World!, pesan tersebut akan muncul sebagai:

      MYTOPIC> Hello World!
  6. Pilih Create topic (Buat topik). Nama topik dan Amazon Resource Name (ARN) muncul di halaman Topics (Topik).

Cara membuat langganan SMS

Anda dapat menggunakan langganan untuk mengirim pesan SMS ke beberapa penerima hanya dengan menerbitkan pesan ke topik Anda satu kali.

catatan

Ketika Anda mulai menggunakan Amazon SNS untuk mengirim pesan SMS, akun AWS Anda berada di sandbox SMS. Sandbox SMS menyediakan lingkungan yang aman bagi Anda untuk mencoba fitur Amazon SNS tanpa mempertaruhkan reputasi Anda sebagai pengirim SMS. Saat akun Anda berada di sandbox SMS, Anda dapat menggunakan semua fitur Amazon SNS, tetapi Anda hanya dapat mengirim pesan SMS ke nomor telepon tujuan yang terverifikasi. Untuk informasi selengkapnya, lihat Sandbox SMS.

  1. Masuk ke konsol Amazon SNS.

  2. Di panel navigasi, pilih Subscriptions (Langganan).

  3. Di halaman Subscriptions (Langganan), pilih Create subscription (Buat langganan).

  4. Di halaman Create subscription (Buat langganan), pada Details (Detail), lakukan hal berikut:

    1. Untuk Topic ARN (ARN topik), masukkan atau pilih Amazon Resource Name (ARN) topik yang ingin Anda kirimi pesan SMS.

    2. Untuk Protocol (Protokol), pilih SMS.

    3. Untuk Endpoint (Titik akhir), masukkan nomor telepon yang ingin Anda buat berlangganan ke topik Anda.

  5. Pilih Create subscription (Buat langganan). Informasi langganan muncul di halaman Subscriptions (Langganan).

    Untuk menambahkan nomor telepon lainnya, ulangi langkah-langkah ini. Anda juga dapat menambahkan jenis langganan lainnya, seperti email.

Cara mengirim pesan

Ketika Anda menerbitkan pesan ke topik, Amazon SNS mencoba untuk mengirimkan pesan tersebut ke setiap nomor telepon yang berlangganan ke topik.

  1. Di konsol Amazon SNS, di halaman Topics (Topik), pilih nama topik yang ingin Anda kirimi pesan SMS.

  2. Di halaman detail topik, pilih Publish message (Publikasikan pesan).

  3. Di halaman Publish message to topic (Publikasikan pesan ke topik), di bawah Message detail (Detail pesan), lakukan hal berikut:

    1. Untuk Subject (Subjek), kosongkan bidang kecuali topik Anda berisi langganan email dan Anda ingin menerbitkannya ke langganan email dan langganan SMS. Amazon SNS menggunakan Subject (Subjek) yang Anda masukkan sebagai baris subjek email.

    2. (Opsional) Untuk Time to Live (TTL) (waktu untuk tayang), masukkan jumlah detik yang digunakan Amazon SNS untuk mengirim pesan SMS Anda ke setiap pelanggan titik akhir aplikasi seluler.

  4. Di bawah Message body (Isi pesan), lakukan hal berikut:

    1. Untuk Message structure (Struktur pesan), pilih Identical payload for all delivery protocols (Muatan yang sama untuk semua protokol pengiriman) untuk mengirim pesan yang sama ke semua jenis protokol yang berlangganan topik Anda. Atau, pilih Custom payload for each delivery protocol (Muatan kustom untuk setiap protokol pengiriman) untuk menyesuaikan pesan untuk pelanggan dari jenis protokol yang berbeda. Misalnya, Anda dapat memasukkan pesan default untuk pelanggan nomor telepon dan pesan kustom untuk pelanggan email.

    2. Untuk Message body to send to the endpoint (Badan pesan yang akan dikirim ke titik akhir), masukkan pesan Anda, atau pesan kustom Anda per protokol pengiriman.

      Jika topik Anda memiliki nama tampilan, Amazon SNS menambahkannya ke pesan, yang menambah panjang pesan. Panjang nama tampilan adalah jumlah karakter dalam nama tersebut ditambah dua karakter untuk tanda kurung siku (>) dan ruang yang ditambahkan Amazon SNS.

      Untuk informasi tentang kuota ukuran untuk pesan SMS, lihat Menerbitkan ke ponsel.

  5. (Opsional) Untuk Message attributes (Atribut pesan), tambahkan metadata pesan seperti stempel waktu, tanda tangan, dan ID.

  6. Pilih Publish message (Publikasikan Pesan). Amazon SNS mengirimkan pesan SMS dan menampilkan pesan keberhasilan.

Mengirim pesan ke topik (SDK AWS)

Untuk menggunakan AWS SDK, Anda harus mengonfigurasinya dengan kredensi Anda. Untuk informasi selengkapnya, lihat File konfigurasi dan kredensial bersama di Panduan Referensi AWSSDK dan Alat.

Contoh kode berikut ini menunjukkan cara untuk melakukan

  • Buat topik Amazon SNS.

  • Berlangganan nomor telepon ke topik.

  • Publikasikan pesan SMS ke topik sehingga semua nomor telepon berlangganan menerima pesan sekaligus.

Java
SDK untuk Java 2.x
catatan

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

Buat topik dan kembalikan ARN-nya.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; 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 CreateTopic { public static void main(String[] args) { final String usage = """ Usage: <topicName> Where: topicName - The name of the topic to create (for example, mytopic). """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String topicName = args[0]; System.out.println("Creating a topic with name: " + topicName); SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); String arnVal = createSNSTopic(snsClient, topicName); System.out.println("The topic ARN is" + arnVal); snsClient.close(); } public static String createSNSTopic(SnsClient snsClient, String topicName) { CreateTopicResponse result; try { CreateTopicRequest request = CreateTopicRequest.builder() .name(topicName) .build(); result = snsClient.createTopic(request); return result.topicArn(); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } }

Berlangganan titik akhir ke suatu topik.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.SubscribeRequest; import software.amazon.awssdk.services.sns.model.SubscribeResponse; /** * 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 SubscribeTextSMS { public static void main(String[] args) { final String usage = """ Usage: <topicArn> <phoneNumber> Where: topicArn - The ARN of the topic to subscribe. phoneNumber - A mobile phone number that receives notifications (for example, +1XXX5550100). """; if (args.length < 2) { System.out.println(usage); System.exit(1); } String topicArn = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); subTextSNS(snsClient, topicArn, phoneNumber); snsClient.close(); } public static void subTextSNS(SnsClient snsClient, String topicArn, String phoneNumber) { try { SubscribeRequest request = SubscribeRequest.builder() .protocol("sms") .endpoint(phoneNumber) .returnSubscriptionArn(true) .topicArn(topicArn) .build(); SubscribeResponse result = snsClient.subscribe(request); System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }

Tetapkan atribut pada pesan, seperti ID pengirim, harga maksimum, dan jenisnya. Atribut pesan bersifat opsional.

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

Publikasikan pesan ke topik. Pesan dikirim ke setiap pelanggan.

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