Bagikan melalui


Mulai Cepat: Menerima dan Membalas SMS

Azure Communication Services kemampuan SMS menyediakan opsi pengembang untuk menggunakan peristiwa yang diterima SMS. Peristiwa diposting ke Azure Event Grid yang menyediakan integrasi out of the box untuk memprosesnya menggunakan webhook, Azure Functions, konektor Power Automate / Logic App, dan banyak lagi.

Setelah diterima, pesan SMS dapat diproses untuk menanggapinya atau hanya mencatatnya ke database untuk akses di masa mendatang.

Dalam Mulai Cepat ini, kami akan fokus pada menampilkan pemrosesan peristiwa yang diterima SMS melalui Azure Functions menggunakan pemicu Event Grid dan konektor tanpa kode untuk Power Automate / Logic Apps.

Peristiwa SMSReceived yang dihasilkan saat SMS dikirim ke nomor telepon Azure Communication Services diformat dengan cara berikut:

[{
  "id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
  "topic": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/acse2e/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "/phonenumber/15555555555",
  "data": {
    "MessageId": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
    "From": "15555555555",
    "To": "15555555555",
    "Message": "Great to connect with Azure Communication Services events",
    "ReceivedTimestamp": "2020-09-18T00:27:45.32Z"
  },
  "eventType": "Microsoft.Communication.SMSReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2020-09-18T00:27:47Z"
}]

Untuk mulai menghasilkan peristiwa, kita harus mengonfigurasi Azure Event Grid untuk sumber daya Azure Communication Services kita.

Catatan

Menggunakan Azure Event Grid dikenakan biaya tambahan. Untuk informasi selengkapnya, lihat harga Azure Event Grid.

Prasyarat

Event Grid menyediakan dukungan di luar kotak untuk Azure Functions, memudahkan untuk menyiapkan pendengar peristiwa tanpa perlu menangani kompleksitas penguraian header atau penelusuran kesalahan webhook. Dengan menggunakan pemicu out of the box, kita dapat menyiapkan Azure Function yang berjalan setiap kali peristiwa terdeteksi yang cocok dengan pemicunya. Dalam dokumen ini, kami fokus pada pemicu yang diterima SMS.

Menyiapkan lingkungan lokal kami

  1. Dengan menggunakan Visual Studio Code, instal Ekstensi Azure Functions.

  2. Dengan ekstensi , buat Azure Function dengan mengikuti instruksi ini.

    Konfigurasikan fungsi dengan instruksi berikut:

    • Bahasa: TypeScript
    • Templat: pemicu Azure Event Grid
    • Nama Fungsi: Ditentukan pengguna

    Setelah dibuat, Anda akan melihat fungsi yang dibuat di direktori Anda seperti ini:

    
    import { AzureFunction, Context } from "@azure/functions"
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
        context.log(eventGridEvent);
    
    };
    
    export default eventGridTrigger;
    
    

Mengonfigurasi Azure Function untuk menerima peristiwa SMS

  1. Konfigurasikan Azure Function untuk mengurai nilai dari peristiwa seperti siapa yang mengirimnya, ke nomor berapa dan apa pesannya.

    
    import { AzureFunction, Context } from "@azure/functions"
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
       context.log(eventGridEvent);
       const to = eventGridEvent['data']['to'];
       const from = eventGridEvent['data']['from'];
       const message = eventGridEvent['data']['message'];
    
    };
    
    export default eventGridTrigger;
    
    

Pada titik ini, Anda telah berhasil menangani penerimaan SMS melalui peristiwa. Sekarang kemungkinan apa yang harus dilakukan dengan peristiwa tersebut berkisar dari hanya pengelogan hingga meresponsnya. Di bagian berikutnya, kami fokus menanggapi SMS yang kami terima. Jika Anda tidak ingin menanggapi SMS, lewati ke bagian berikutnya tentang menjalankan fungsi secara lokal.

Menanggapi SMS

  1. Untuk menanggapi SMS masuk, kami menggunakan kemampuan SMS Azure Communication Service untuk mengirim SMS. Kita mulai dengan memanggil SmsClient dan menginisialisasinya dengan connection string untuk sumber daya kita. Anda dapat menempelkan string koneksi langsung dalam kode atau menempatkannya di dalam file local.settings.json di direktori Azure Function Anda di bawah nilai.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
  }
}

  1. Kemudian kami menyusun SMS untuk dikirim berdasarkan to nilai dan from dari peristiwa yang kami dapatkan.

    import { AzureFunction, Context } from "@azure/functions"
    import { SmsClient } from "@azure/communication-sms";
    
    const connectionString = process.env.ACS_CONNECTION_STRING; //Replace with your connection string
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
        context.log(eventGridEvent);
        const to = eventGridEvent['data']['to'];
        const from = eventGridEvent['data']['from'];
        const message = eventGridEvent['data']['message'];
    
        const smsClient = new SmsClient(connectionString);
    
        const sendResults = await smsClient.send({
            from: to,
            to: [from],
            message: "Message received successfully. Will respond shortly."
        });
    
    };
    
    export default eventGridTrigger;
    

Dari sini, kemungkinan tidak ada habisnya. Dari menanggapi pesan dengan jawaban yang telah dipesan sebelumnya, hingga menambahkan bot atau hanya menyimpan respons, Anda dapat menyesuaikan kode pada langkah terakhir untuk melakukannya.

Berjalan secara lokal

Untuk menjalankan fungsi secara lokal, tekan F5 Visual Studio Code. Kami menggunakan ngrok untuk menghubungkan Azure Function yang berjalan secara lokal dengan Azure Event Grid.

  1. Setelah fungsi berjalan, kami mengonfigurasi ngrok. (Anda perlu mengunduh ngrok untuk lingkungan Anda.)

    ngrok http 7071
    

    Salin tautan ngrok yang disediakan tempat fungsi Anda berjalan.

  2. Konfigurasikan peristiwa SMS melalui Event Grid dalam sumber daya Azure Communication Services Anda. Kami melakukan ini menggunakan Azure CLI. Anda memerlukan ID sumber daya untuk sumber daya Azure Communication Services yang ditemukan di portal Azure. (ID sumber daya akan terlihat seperti: /subscriptions/<<AZURE SUBSCRIPTION ID>>/resourceGroups/<<RESOURCE GROUP NAME>>/providers/Microsoft.Communication/CommunicationServices/<<RESOURCE NAME>>)

    
    az eventgrid event-subscription create --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type webhook --endpoint "<<NGROK URL>> " --source-resource-id "<<RESOURCE_ID>>"  --included-event-types Microsoft.Communication.SMSReceived 
    
    
  3. Sekarang setelah semuanya terhubung, uji alur dengan mengirim SMS ke nomor telepon yang Anda gunakan di sumber daya Azure Communication Services Anda. Anda akan melihat log konsol di terminal tempat fungsi berjalan. Jika Anda menambahkan kode untuk merespons SMS, Anda akan melihat pesan teks yang dikirimkan kembali kepada Anda.

Sebarkan ke Azure

Untuk menyebarkan Azure Function ke Azure, Anda harus mengikuti instruksi ini. Setelah disebarkan, kami mengonfigurasi Event Grid untuk sumber daya Azure Communication Services. Dengan URL untuk Fungsi Azure yang disebarkan (URL yang ditemukan di portal Azure di bawah fungsi ), kami menjalankan perintah berikut:


az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"

Karena kami memperbarui langganan peristiwa yang kami buat untuk pengujian lokal, pastikan untuk menggunakan nama langganan peristiwa yang sama dengan yang Anda gunakan di atas.

Anda dapat menguji dengan mengirim SMS ke nomor telepon yang telah Anda dapatkan melalui sumber daya Azure Communication Services.

Logic Apps dan Power Automate menyediakan konektor out of the box untuk membantu menangani peristiwa yang dihasilkan oleh Azure Communication Services melalui Event Grid. Logic Apps dan Power Automate menyediakan sekumpulan konektor yang sama. Terserah Anda untuk memutuskan apa yang Anda inginkan, baca tentang perbedaan antara layanan untuk menginformasikan keputusan Anda.

Menangani peristiwa dengan konektor Event Grid

  1. Mulailah dengan membuat alur baru di lingkungan pilihan Anda. Pilih pemicu When a resource event occurs untuk memulai.

    Cuplikan layar pemicu pilih untuk Power Automate.

  2. Sekarang, mari kita konfigurasikan. Konektor mengharuskan Anda untuk menyediakan langganan yang ingin Anda gunakan. (Harus langganan yang sama dengan tempat sumber daya Azure Communication Services Anda berada). Tentukan jenis sumber daya. Dalam hal ini, pilih Microsoft.Communication.CommunicationServices. Kemudian Anda perlu memberikan nama sumber daya untuk sumber daya Azure Communication Services yang ingin Anda sambungkan. Terakhir, kita perlu memilih jenis peristiwa yang ingin kita terima, dalam hal ini: Microsoft.Communication.SMSReceived.

    Cuplikan layar konektor event grid.

    Konektor secara otomatis menyiapkan langganan peristiwa atas nama Anda dan mengonfigurasi peristiwa yang ingin diterimanya.

  3. Untuk mempermudah kehidupan kita nanti, tambahkan respons untuk memproses yang Parse JSON connector berasal dari konektor Event Grid. Konfigurasikan konektor untuk mengambil Body objek dari konektor Event Grid dan mencocokkannya dengan skema yang diharapkan untuk peristiwa tersebut:

    Skema sampel (terbuka untuk dilihat)
    
        {
            "properties": {
                "data": {
                    "properties": {
                        "From": {
                            "type": "string"
                        },
                        "Message": {
                            "type": "string"
                        },
                        "MessageId": {
                            "type": "string"
                        },
                        "ReceivedTimestamp": {
                            "type": "string"
                        },
                        "To": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "dataVersion": {
                    "type": "string"
                },
                "eventTime": {
                    "type": "string"
                },
                "eventType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metadataVersion": {
                    "type": "string"
                },
                "subject": {
                    "type": "string"
                },
                "topic": {
                    "type": "string"
                }
            },
            "type": "object"
        }
    
    

    Cuplikan layar konektor Uraikan JSON.

Pada titik ini, Anda telah berhasil menangani peristiwa SMS. Anda kemudian memiliki beberapa opsi apa yang harus dilakukan dengannya mulai dari mencatat peristiwa hingga menanggapi SMS. Dalam konteks dokumen ini, kami akan menunjukkan cara meresponsnya. Lanjutkan membaca untuk mempelajari langkah-langkah untuk merespons SMS.

Menanggapi SMS

  1. Mulailah dengan menambahkan konektor SMS ke dalam alur kami dan mengonfigurasinya dengan informasi untuk sumber daya Azure Communication Services kami. Ini memungkinkan konektor untuk mengakses sumber daya dan mengirim SMS atas nama kami. Anda memerlukan connection string untuk sumber daya Anda.

    Cuplikan layar pengaturan untuk konektor SMS.

  2. Selanjutnya, kami mengonfigurasi konektor dengan informasi untuk pengirim dan penerima. Kami menggunakan informasi dari peristiwa yang kami terima untuk mengisinya. Fip to dan from angka untuk mengirim SMS kembali ke pengirim asli. Terakhir, tambahkan pesan.

    Cuplikan layar konfigurasi konektor SMS.

Sekarang, Anda dapat menyimpan alur dan mengujinya dengan mengirim SMS ke nomor telepon yang terkait dengan sumber daya Azure Communication Services Anda. Anda akan menerima kembali pesan teks.

Dari sini, kemungkinan tidak ada habisnya. Dari menanggapi pesan dengan jawaban yang telah dipesan sebelumnya, hingga menambahkan bot atau hanya menyimpan respons, Anda dapat menambahkan lebih banyak logika ke alur.

Membersihkan sumber daya

Jika ingin membersihkan dan menghapus langganan Azure Communication Services, Anda bisa menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Pelajari lebih lanjut cara membersihkan sumber daya.

Verifikasi bebas telunjuk

Jika Anda memiliki nomor bebas ongkos baru dan ingin mengirim pesan SMS dalam volume tinggi atau mengirim pesan SMS ke nomor telepon Kanada, silakan kunjungi di sini untuk mempelajari cara memverifikasi nomor bebas telunjuk Anda.

Langkah berikutnya

Dalam mulai cepat ini, Anda mempelajari cara mengirim pesan SMS dengan menggunakan Communication Services.