Pengembangan aplikasi sering kali melibatkan pengiriman SMS kepada pengguna untuk berbagai keperluan, seperti kode verifikasi pendaftaran, notifikasi pembaruan pesanan, atau pesan promosi. Dokumen ini menjelaskan cara mengotomatiskan pengiriman SMS secara cepat, aman, dan andal dengan mengintegrasikan SDK dan memanggil API Short Message Service Alibaba Cloud.
Arsitektur
Alur end-to-end dalam memanggil API SMS melibatkan aplikasi Anda, SDK Alibaba Cloud, Resource Access Management (RAM), dan SMS.
Prosesnya sebagai berikut: Anda mengintegrasikan SDK Alibaba Cloud ke dalam aplikasi dan menggunakan RAM untuk memberikan kredensial yang memiliki izin SMS kepada aplikasi tersebut. Aplikasi kemudian menggunakan kredensial ini untuk memanggil API SMS. Setelah Alibaba Cloud mengotentikasi permintaan dan memverifikasi kepatuhan, pesan diteruskan ke Alibaba Cloud SMS Gateway, yang selanjutnya mengirimkan SMS ke ponsel pengguna melalui jaringan penyedia layanan.
Panduan ini menunjukkan cara memanggil API SMS menggunakan operasi SendMessageToGlobe sebagai contoh. Anda akan mempelajari cara:
Jika Anda sudah terbiasa memanggil API, Anda dapat langsung merujuk ke referensi API dan memanggil operasi yang Anda butuhkan.
Kami merekomendasikan penggunaan SDK untuk memanggil API. Jika Anda lebih suka membuat permintaan sendiri, lihat badan permintaan & signature V3.
Sebelum memulai
Item | Deskripsi | Referensi |
Izin pengguna | Di Konsol RAM, klik nama pengguna RAM untuk melihat izinnya. Pastikan pengguna RAM yang memanggil API memiliki izin terkait SMS yang diperlukan:
| |
| Di Konsol RAM, klik nama pengguna RAM. Di halaman detail pengguna, klik tab AccessKey untuk melihat AccessKey ID. | |
| AccessKey Secret hanya ditampilkan saat pembuatan. Jika hilang, buat pasangan AccessKey baru. | |
Saldo akun atau kuota paket | Pastikan Anda memiliki saldo akun atau kuota paket yang mencukupi. Anda dapat melihat kuota paket Anda di halaman Statistik Paket Sumber Daya atau periksa saldo akun Anda di Konsol Biaya dan Pengeluaran. |
Konfigurasikan kredensial
Langkah 1: Buat pengguna RAM dan berikan izin
Akun root Anda memiliki izin penuh. Gunakan pengguna RAM untuk panggilan API dan operasi rutin O&M. Untuk informasi selengkapnya, lihat Ikhtisar.
-
Buat pengguna RAM: Buka halaman Buat Pengguna. Masukkan informasi yang diperlukan, pilih Permanent AccessKey untuk Access Configuration, lalu klik OK. Simpan AccessKey Anda untuk digunakan nanti.
-
Berikan izin kepada Pengguna RAM: Buka halaman Users. Temukan pengguna RAM yang telah Anda buat dan klik Attach Policy di kolom Actions. Di kotak pencarian Policy, masukkan AliyunDysmsFullAccess, pilih kebijakan tersebut, lalu klik OK.
-
AliyunDysmsFullAccess: Memberikan izin penuh untuk mengelola layanan SMS.
-
AliyunDysmsReadOnlyAccess: Memberikan izin read-only untuk mengakses layanan SMS.
-
Untuk membuat kebijakan kustom, lihat Otorisasi RAM.
Langkah 2: Konfigurasikan kredensial akses
Simpan pasangan AccessKey Anda dalam variabel lingkungan. Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
-
Jangan hard-code pasangan AccessKey Anda. Ambil dari variabel lingkungan.
-
Kode contoh menggunakan variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET.
Langkah 3: Konfigurasikan variabel lingkungan
Windows
Di Windows, Anda dapat mengonfigurasi variabel lingkungan menggunakan System Properties, CMD, atau PowerShell.
System properties
Metode ini menetapkan variabel lingkungan permanen.
Diperlukan hak administrator untuk mengubah variabel sistem.
Perubahan pada variabel lingkungan tidak memengaruhi aplikasi yang sedang berjalan. Anda harus me-restart antarmuka baris perintah, IDE, atau aplikasi lain yang terbuka agar pengaturan variabel baru diterapkan.
Di desktop Windows, tekan
Win+Q. Di kotak pencarian, masukkan Edit the system environment variables dan pilih untuk membuka jendela System Properties.Di jendela System Properties, klik Environment Variables. Di bagian System variables, klik New. Atur Variable name menjadi
ALIBABA_CLOUD_ACCESS_KEY_IDdan Variable value menjadi ID AccessKey Anda. Ulangi langkah ini untukALIBABA_CLOUD_ACCESS_KEY_SECRET.Klik OK di ketiga jendela untuk menyimpan pengaturan dan menutupnya.
Buka jendela CMD atau Windows PowerShell dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
Perintah CMD:
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Microsoft Windows [Version 10.0.22621.3593] (c) Microsoft Corporation. All rights reserved. C:\Windows\System32>echo %ALIBABA_CLOUD_ACCESS_KEY_ID% LTAI C:\Windows\System32>Perintah Windows PowerShell:
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows PS C:\Windows\system32> echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID LTAIxxx PS C:\Windows\system32>
CMD
Permanen
Untuk menetapkan variabel lingkungan yang tetap berlaku di semua sesi baru untuk pengguna saat ini, ikuti langkah-langkah berikut.
Jalankan perintah berikut di CMD.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. setx ALIBABA_CLOUD_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"Buka jendela CMD baru.
Di jendela CMD baru, jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
Sementara
Untuk menetapkan variabel lingkungan hanya untuk sesi saat ini, jalankan perintah berikut di CMD.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda.
set ALIBABA_CLOUD_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
# Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda.
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=YOUR_ACCESS_KEY_SECRETAnda dapat menjalankan perintah berikut di sesi saat ini untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%PowerShell
Permanen
Untuk menetapkan variabel lingkungan yang tetap berlaku di semua sesi baru untuk pengguna saat ini, ikuti langkah-langkah berikut.
Jalankan perintah berikut di PowerShell.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. [Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. [Environment]::SetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)Buka jendela PowerShell baru.
Di jendela PowerShell baru, jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
Sementara
Untuk menetapkan variabel lingkungan hanya untuk sesi saat ini, jalankan perintah berikut di PowerShell.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda.
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "YOUR_ACCESS_KEY_ID"
# Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda.
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "YOUR_ACCESS_KEY_SECRET"Anda dapat menjalankan perintah berikut di sesi saat ini untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $env:ALIBABA_CLOUD_ACCESS_KEY_ID
echo $env:ALIBABA_CLOUD_ACCESS_KEY_SECRETLinux
Permanen
Untuk menetapkan variabel lingkungan yang tetap berlaku di semua sesi baru untuk pengguna saat ini, tambahkan variabel tersebut ke file startup shell Anda.
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bashrc.# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrcAnda juga dapat mengedit file
~/.bashrcsecara manual.Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcBuka kembali jendela terminal dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan. Restart IDE Anda sebelum menggunakan SDK.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Sementara
Untuk menetapkan variabel lingkungan hanya untuk sesi saat ini, ikuti langkah-langkah berikut.
Jalankan perintah berikut.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID" # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET"Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
macOS
Permanen
Untuk menetapkan variabel lingkungan yang tetap berlaku di semua sesi baru untuk pengguna saat ini, tambahkan variabel tersebut ke file startup shell Anda.
Jalankan perintah berikut di terminal untuk memeriksa jenis shell default Anda.
echo $SHELLIkuti langkah-langkah berdasarkan jenis shell default Anda.
Zsh
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.zshrc.# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrcAnda juga dapat mengedit file
~/.zshrcsecara manual.Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcBuka kembali jendela terminal dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Bash
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bash_profile.# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. echo "export ALIBABA_CLOUD_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profileAnda juga dapat mengedit file
~/.bash_profilesecara manual.Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileBuka kembali jendela terminal dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Sementara
Untuk menetapkan variabel lingkungan hanya untuk sesi saat ini, ikuti langkah-langkah berikut.
Perintah berikut berlaku untuk Zsh dan Bash.
Jalankan perintah berikut.
# Ganti YOUR_ACCESS_KEY_ID dengan ID AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID" # Ganti YOUR_ACCESS_KEY_SECRET dengan rahasia AccessKey Anda. export ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET"Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
Setelah Anda mengubah variabel lingkungan, restart atau refresh lingkungan build dan runtime Anda. Hal ini memastikan aplikasi seperti IDE, antarmuka baris perintah, dan layanan latar belakang memuat variabel baru.
Instal SDK
Panduan ini menyediakan contoh untuk Java dan Python. Untuk bahasa lainnya, lihat Referensi SDK. Untuk instruksi penggunaan lengkap dalam Python, lihat SDK Python.
Pastikan Java 8 atau versi yang lebih baru telah terinstal.
Instal SDK dengan menambahkan dependensi Maven berikut. Ganti
the-latest-versiondengan nomor versi terbaru.<dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20180501</artifactId> <!-- Ganti 'the-latest-version' dengan nomor versi terbaru: https://mvnrepository.com/artifact/com.aliyun/dysmsapi20180501 --> <version>the-latest-version</version> </dependency>
Jika Anda menggunakan Python, instal SDK menggunakan pip. Pastikan Python 3.7 atau versi yang lebih baru telah terinstal.
pip install alibabacloud_dysmsapi20180501Gunakan SDK
1. Inisialisasi client
SDK Alibaba Cloud mendukung inisialisasi client dengan berbagai kredensial, seperti AccessKey atau STS Token. Untuk informasi selengkapnya, lihat Kelola kredensial. Topik ini menggunakan AccessKey sebagai contoh.
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20180501.Client;
public class Sample {
public static Client createClient() throws Exception {
Config config = new Config()
// Konfigurasikan ID AccessKey. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah dikonfigurasi di lingkungan runtime Anda.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Konfigurasikan rahasia AccessKey. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi di lingkungan runtime Anda.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Metode System.getenv() mengambil variabel lingkungan sistem. Jangan hard-code kredensial AccessKey Anda di kode.
// Konfigurasikan endpoint.
config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";
return new Client(config);
}
}2. Bangun objek permintaan
Buat permintaan API dan atur parameter sesuai kebutuhan Anda.
Konvensi penamaan objek permintaan: {APIName}Request, misalnya, objek permintaan untuk API SendMessageToGlobe adalah SendMessageToGlobeRequest.
SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
.setTo("<YOUR_VALUE>")
.setMessage("<YOUR_VALUE>");3. Lakukan permintaan
Gunakan API SendMessageToGlobe untuk melakukan permintaan API.
Konvensi penamaan objek respons: {Nama API}Response. Misalnya, objek respons untuk API SendMessageToGlobe adalah SendMessageToGlobeResponse.
SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);Anda juga dapat mengonfigurasi parameter permintaan lainnya. Untuk informasi selengkapnya, lihat Lakukan permintaan API.
Untuk informasi tentang pengaturan timeout dan retry, lihat Konfigurasikan periode timeout dan Konfigurasikan mekanisme retry.
Untuk informasi tentang jenis exception SDK dan penanganannya, lihat Penanganan exception.
Outputnya mirip dengan berikut ini:
{
"headers": {
"date": "Tue, 24 Oct 2023 07:47:17 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "263",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"x-acs-trace-id": "29c11fe4c778b74774d5f5602f0e7975",
"etag": "2a+mcDRTDkXqx9VF7b6U57Q3"
},
"statusCode": 200,
"body": {
"ResponseCode": "OK",
"NumberDetail": {
"Region": "Taiwan",
"Country": "Taiwan, Province of China",
"Carrier": "FarEasTone"
},
"RequestId": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
"Segments": "1",
"ResponseDescription": "OK",
"To": "88691567****",
"MessageId": "191921698133637273"
}
}Kode kesalahan API
Untuk informasi selengkapnya, lihat Kode kesalahan untuk pesan internasional.
Biaya dan risiko
Rincian biaya: SMS ditagih per pesan, dan harga bervariasi berdasarkan negara atau wilayah. Untuk harga detail, lihat penagihan.
Risiko utama:
Kebocoran kredensial: AccessKey yang bocor dapat mengompromikan semua sumber daya di akun Anda, menyebabkan biaya tak terduga atau pemerasan. Dalam kasus parah, penyalahgunaannya juga dapat merugikan Alibaba Cloud atau pengguna lain. Untuk detailnya, lihat Tangani AccessKey yang bocor.
Kepatuhan konten: Anda harus memastikan bahwa konten yang dikirim mematuhi hukum dan peraturan di negara atau wilayah tujuan. Kegagalan mematuhi dapat mengakibatkan pesan diblokir atau akun ditangguhkan.
Konten terkait
Debug panggilan API di OpenAPI Explorer.
Gunakan operasi BatchSendMessageToGlobe untuk mengirim pesan SMS secara batch.
Temukan lebih banyak kasus penggunaan Short Message Service di contoh SDK.
Merujuk ke SDK Python.
Lihat statistik pesan di Dasbor.