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
- Akun Azure dengan langganan aktif. Membuat akun secara gratis.
- Sumber daya Communication Services dan string koneksi aktif. Membuat sumber daya Communication Services.
- Nomor telepon yang mendukung SMS. Dapatkan Nomor telepon.
- Aktifkan sumber daya Event Grid yang disediakan di langganan Anda. Lihat instruksi.
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
Dengan menggunakan Visual Studio Code, instal Ekstensi Azure Functions.
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
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
- Untuk menanggapi SMS masuk, kami menggunakan kemampuan SMS Azure Communication Service untuk mengirim SMS. Kita mulai dengan memanggil
SmsClient
dan menginisialisasinya denganconnection 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>>"
}
}
Kemudian kami menyusun SMS untuk dikirim berdasarkan
to
nilai danfrom
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.
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.
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
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
Mulailah dengan membuat alur baru di lingkungan pilihan Anda. Pilih pemicu
When a resource event occurs
untuk memulai.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
.Konektor secara otomatis menyiapkan langganan peristiwa atas nama Anda dan mengonfigurasi peristiwa yang ingin diterimanya.
Untuk mempermudah kehidupan kita nanti, tambahkan respons untuk memproses yang
Parse JSON connector
berasal dari konektor Event Grid. Konfigurasikan konektor untuk mengambilBody
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" }
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
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.Selanjutnya, kami mengonfigurasi konektor dengan informasi untuk pengirim dan penerima. Kami menggunakan informasi dari peristiwa yang kami terima untuk mengisinya. Fip
to
danfrom
angka untuk mengirim SMS kembali ke pengirim asli. Terakhir, tambahkan pesan.
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.