All Products
Search
Document Center

Short Message Service:Python SDK

Last Updated:Mar 05, 2026

Alibaba Cloud SMS SDK untuk Python menyediakan antarmuka yang sederhana dan aman untuk API inti, seperti mengirim pesan . SDK ini menyembunyikan kompleksitas autentikasi, penandatanganan permintaan, dan komunikasi HTTP, sehingga Anda dapat fokus pada logika bisnis dan mengintegrasikan kemampuan SMS lebih cepat.

Instalasi

Persyaratan sistem

  • Versi Python: 3.7 atau yang lebih baru.

  • Sistem operasi: Windows, macOS, atau Linux.

  • Dependensi lainnya: alibabacloud_tea_openapi (core runtime), alibabacloud_tea_util (utility library), dan urllib3 (HTTP client).

Instal menggunakan pip

pip install alibabacloud_dysmsapi20180501

Verifikasi instalasi

import alibabacloud_dysmsapi20180501

# Jika versi SDK dicetak, instalasi berhasil.
print("SDK Version:", alibabacloud_dysmsapi20180501.__version__)

Konfigurasi kredensial

Langkah 1: Buat Pengguna RAM dan berikan izin

Penting

Karena akun root Anda memiliki hak istimewa tinggi, kami menyarankan menggunakan Pengguna RAM untuk panggilan API dan operasi O&M rutin. Untuk informasi selengkapnya, lihat Ikhtisar Pengguna RAM.

  • Buat Pengguna RAM: Buka halaman Create User. Isi 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.

Catatan
  • AliyunDysmsFullAccess: Memberikan izin penuh untuk mengelola layanan SMS.

  • AliyunDysmsReadOnlyAccess: Memberikan izin read-only untuk mengakses layanan SMS.

  • Jika Anda perlu membuat kebijakan kustom, lihat Otorisasi RAM.

Langkah 2: Dapatkan kredensial akses

Konfigurasikan Pasangan Kunci Akses Anda menggunakan Variabel lingkungan. Untuk informasi tentang cara mengonfigurasi Variabel lingkungan, lihat Konfigurasi Variabel lingkungan di Linux, macOS, dan Windows.

Catatan
  • Untuk mencegah risiko keamanan, hindari hardcoding Pasangan Kunci Akses Anda. Sebagai gantinya, ambil dari Variabel lingkungan.

  • Kode contoh dalam topik ini menggunakan Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Praktik terbaik keamanan

  • Simpan kredensial dengan menggunakan Variabel lingkungan atau layanan manajemen kunci.

  • Rotasi Pasangan Kunci Akses Anda secara berkala.

  • Ikuti prinsip least privilege dengan memberikan izin minimum yang diperlukan kepada Pengguna RAM.

  • Jangan mencetak informasi kredensial di log.

  • Gunakan RAM Role, bukan kredensial akun root, di lingkungan produksi.

Mulai cepat

Kode contoh

Kode contoh ini menunjukkan cara memanggil API SMS untuk mengirim pesan. Ganti nilai placeholder sesuai petunjuk dalam komentar kode.

# -*- coding: utf-8 -*-
# File ini dihasilkan otomatis, jangan mengeditnya. Terima kasih.
import os
import sys
import json

from typing import List

from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


def create_client() -> Dysmsapi20180501Client:
    """
    Menginisialisasi Client menggunakan kredensial.
    @return: Client
    @throws Exception
    """
    # Di lingkungan produksi, kami menyarankan metode autentikasi yang lebih aman yang tidak bergantung pada Pasangan Kunci Akses. 
    credential = CredentialClient()
    config = open_api_models.Config(
        credential=credential
    )
    # Titik akhir. Lihat https://api.alibabacloud.com/product/Dysmsapi
    config.endpoint = f'dysmsapi.aliyuncs.com'
    return Dysmsapi20180501Client(config)


def main(
    args: List[str],
) -> None:
    client = create_client()
    batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
        to='your_value',
        from_='your_value',
        message='your_value'
    )
    try:
        resp = client.batch_send_message_to_globe_with_options(batch_send_message_to_globe_request, util_models.RuntimeOptions())
        print(json.dumps(resp, default=str, indent=2))
    except Exception as error:
        # Kode ini hanya untuk demonstrasi. Di lingkungan produksi, tangani exception dengan benar dan jangan abaikan.
        # Pesan error
        print(error.message)
        # Alamat diagnosis
        print(error.data.get("Recommend"))


async def main_async(
    args: List[str],
) -> None:
    client = create_client()
    batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
        to='your_value',
        from_='your_value',
        message='your_value'
    )
    try:
        resp = await client.batch_send_message_to_globe_with_options_async(batch_send_message_to_globe_request, util_models.RuntimeOptions())
        print(json.dumps(resp, default=str, indent=2))
    except Exception as error:
        # Kode ini hanya untuk demonstrasi. Di lingkungan produksi, tangani exception dengan benar dan jangan abaikan.
        # Pesan error
        print(error.message)
        # Alamat diagnosis
        print(error.data.get("Recommend"))


if __name__ == '__main__':
    main(sys.argv[1:])

Unduh kode contoh

Anda juga dapat mengunduh kode contoh dan menjalankannya langsung.

  1. Buka SendMessageToGlobe.

  2. Di tab Parameters di sebelah kiri, tentukan parameter yang diperlukan. Berikut adalah contoh nilainya:

  • To: 88691567****

  • Message: This is a test message.

Praktik terbaik

Optimalisasi performa

  • Aktifkan connection pooling: SDK menggunakan kolam koneksi urllib3 secara default. Pastikan konfigurasi max_idle_conns sesuai (default adalah 50) untuk menghindari pembuatan koneksi TCP yang sering.

  • Gunakan panggilan asynchronous: Untuk skenario konkurensi tinggi, Anda dapat mengimplementasikan panggilan asynchronous sejati dengan menggunakan asyncio dan aiohttp (memerlukan custom packaging).

Rekomendasi keamanan

  • Paksa HTTPS: Selalu gunakan endpoint yang dimulai dengan https://. Hindari downgrade ke HTTP.

  • Validasi input: Validasi ketat semua input pengguna, seperti phone_numbers (dengan ekspresi reguler), template_param (dengan parsing JSON), dan sign_name (dengan Allowlist).

  • Masking data sensitif di log: Saat mencatat phone_numbers ke log, terapkan penyembunyian log, seperti 138****0000.

Manajemen resource

  • Gunakan kembali instans Client: Instans Client bersifat thread-safe. Kami menyarankan menggunakan kembali satu instans secara global sepanjang siklus hidup aplikasi Anda untuk menghindari pembuatan dan penghapusan instans yang sering.

  • Tutup resource: Meskipun SDK tidak menyediakan metode eksplisit close(), klien HTTP dasar secara otomatis membersihkan resource saat program keluar.

Referensi

  • Panggil API:

    SDK adalah cara yang direkomendasikan untuk memanggil API. Topik ini menggunakan Python SDK sebagai contoh. Penggunaan SDK dalam bahasa lain serupa. Untuk informasi selengkapnya, lihat SMS SDK.