Aracılığıyla paylaş


Hızlı Başlangıç: SMS Alma ve Yanıtlama

Azure İletişim Hizmetleri SMS özellikleri, geliştiricilere ALıNAN SMS olaylarını kullanma seçenekleri sağlar. Olaylar, web kancaları, Azure İşlevleri, Power Automate / Logic App bağlayıcıları ve daha fazlasını kullananları işlemek için kullanıma uygun tümleştirmeler sağlayan Azure Event Grid'ye postalanır.

Sms iletileri alındıktan sonra yanıt vermek veya gelecekte erişmek üzere bir veritabanında günlüğe kaydetmek üzere işlenebilir.

Bu Hızlı Başlangıçta, Power Automate / Logic Apps için Event Grid tetikleyicilerini ve kod içermeyen bağlayıcıları kullanarak Azure İşlevleri aracılığıyla alınan SMS olaylarının işlenmesini göstermeye odaklanacağız.

SMSReceived Azure İletişim Hizmetleri telefon numarasına SMS gönderildiğinde oluşturulan olay aşağıdaki şekilde biçimlendirilir:

[{
  "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"
}]

Olayları oluşturmaya başlamak için Azure İletişim Hizmetleri kaynağımız için Azure Event Grid yapılandırmamız gerekir.

Not

Azure Event Grid kullanmak ek maliyetler doğurabilir. Daha fazla bilgi için bkz. fiyatlandırma Azure Event Grid.

Ön koşullar

Event Grid, Azure İşlevleri için kullanıma hazır destek sağlayarak üst bilgileri ayrıştırma veya web kancalarında hata ayıklamanın karmaşıklığıyla ilgilenmeye gerek kalmadan bir olay dinleyicisi ayarlamayı kolaylaştırır. Hazır tetikleyiciyi kullanarak tetikleyiciyle eşleşen bir olay algılandığında çalışan bir Azure İşlevi ayarlayabiliriz. Bu belgede SMS ile alınan tetikleyicilere odaklanıyoruz.

Yerel ortamımızı ayarlama

  1. Visual Studio Code kullanarak Azure İşlevleri Uzantısı'nı yükleyin.

  2. Uzantıyla, bu yönergeleri izleyerek bir Azure İşlevi oluşturun.

    İşlevi aşağıdaki yönergelerle yapılandırın:

    • Dil: TypeScript
    • Şablon: Azure Event Grid Tetikleyicisi
    • İşlev Adı: Kullanıcı tanımlı

    Oluşturulduktan sonra dizininizde aşağıdaki gibi bir işlevin oluşturulduğunu görürsünüz:

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

Azure İşlevi'ne SMS olayı alacak şekilde yapılandırma

  1. Azure İşlevi'ni olaydaki değerleri kimin gönderdiği, hangi sayıya ve iletinin ne olduğu gibi ayrıştıracak şekilde yapılandırın.

    
    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;
    
    

Bu noktada, olaylar aracılığıyla SMS almayı başarıyla işlediniz. Şimdi bu olayla ne yapabileceğinize ilişkin olasılıklar, yalnızca günlüğe kaydetmeden yanıt vermeye kadar uzanıyor. Sonraki bölümde aldığımız SMS'e yanıt vermeye odaklanacağız. SMS'ye yanıt vermek istemiyorsanız işlevi yerel olarak çalıştırmayla ilgili sonraki bölüme geçin.

SMS'ye yanıt verme

  1. Gelen SMS'e yanıt vermek için SMS göndermek için Azure İletişim Hizmeti SMS özelliklerini kullanırız. başlangıç olarak öğesini çağırıp SmsClient kaynağımız için ile connection string başlatıyoruz. Bağlantı dizesini doğrudan koda yapıştırabilir veya Azure İşlevi dizininizdeki local.settings.json dosyanızın içine değerlerin altına yerleştirebilirsiniz.

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

  1. Ardından, aldığımız etkinlikten ve from değerlerine göre to gönderilecek bir SMS oluşturuyoruz.

    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;
    

Buradan, olasılıklar sonsuzdur. İletiyi önceden yanıtlanmış yanıtla yanıtlamaktan bot eklemeye veya yalnızca yanıtları depolamaya kadar, bunu yapmak için son adımda kodu uyarlayabilirsiniz.

Yerel olarak çalıştırma

İşlevi yerel olarak çalıştırmak için Visual Studio Code tuşuna basınF5. Yerel olarak çalışan Azure İşlevimizi Azure Event Grid bağlaması için ngrok kullanıyoruz.

  1. İşlev çalıştırıldıktan sonra ngrok yapılandırılır. (Ortamınız için ngrok indirmeniz gerekir.)

    ngrok http 7071
    

    İşlevinizin çalıştığı yerde sağlanan ngrok bağlantısını kopyalayın.

  2. Azure İletişim Hizmetleri kaynağınızdaki Event Grid aracılığıyla SMS olaylarını yapılandırın. Bunu Azure CLI kullanarak yaparız. Azure portal bulunan Azure İletişim Hizmetleri kaynağınızın kaynak kimliğine ihtiyacınız vardır. (Kaynak kimliği şuna benzer olacaktır: /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. Her şey ayarlandıktan sonra, Azure İletişim Hizmetleri kaynağınızda bulunan telefon numarasına SMS göndererek akışı test edin. İşlevin çalıştığı terminalinizde konsol günlüklerini görmeniz gerekir. SMS'e yanıt vermek için kodu eklediyseniz, bu kısa mesajın size geri teslim olduğunu görmeniz gerekir.

Azure’a dağıtın

Azure İşlevini Azure'a dağıtmak için bu yönergeleri izlemeniz gerekir. Dağıtıldıktan sonra Azure İletişim Hizmetleri kaynağı için Event Grid'i yapılandıracağız. Dağıtılan Azure İşlevinin URL'si (işlevin altındaki Azure portal bulunan URL) ile aşağıdaki komutu çalıştırırız:


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

Yerel test için oluşturduğumuz olay aboneliğini güncelleştirdiğimizden, yukarıda kullandığınız olay aboneliğinin adını kullandığınızdan emin olun.

Azure İletişim Hizmetleri kaynağından temin ettiğiniz telefon numarasına SMS göndererek test edebilirsiniz.

Logic Apps ve Power Automate, Event Grid aracılığıyla Azure İletişim Hizmetleri tarafından oluşturulan olayları işlemeye yardımcı olmak için kullanıma uygun bağlayıcılar sağlar. Hem Logic Apps hem de Power Automate aynı bağlayıcı kümesini sağlar. Neyi tercih ettiğinize karar vermek, kararınızı bildirmek için hizmetler arasındaki farklar hakkında bilgi edinmek size ait.

Event Grid bağlayıcısı ile olayları işleme

  1. Tercih ettiğiniz ortamda yeni bir akış oluşturarak başlayın. Başlamak için tetikleyiciyi When a resource event occurs seçin.

    Power Automate için tetikleyici seçmenin ekran görüntüsü.

  2. Şimdi bunu yapılandıralım. Bağlayıcı, kullanmak istediğiniz bir abonelik sağlamanızı gerektirir. (Azure İletişim Hizmetleri kaynağınızın bulunduğu abonelikle aynı olmalıdır). Kaynak türünü belirtin. Bu durumda öğesini seçin Microsoft.Communication.CommunicationServices. Ardından, bağlanmak istediğiniz Azure İletişim Hizmetleri kaynağı için bir kaynak adı sağlamanız gerekir. Son olarak, almak istediğimiz olay türlerini seçmemiz gerekir. Bu örnekte: Microsoft.Communication.SMSReceived.

    Olay kılavuzu bağlayıcısının ekran görüntüsü.

    Bağlayıcı, olay aboneliğini sizin adınıza otomatik olarak ayarlar ve almak istediği olayları yapılandırılır.

  3. Daha sonra hayatımızı kolaylaştırmak için Event Grid bağlayıcısından gelen işleme yanıtı ekleyin Parse JSON connector . Bağlayıcıyı Event Grid bağlayıcısından nesneyi alacak Body ve olay için beklenen şemayla eşleştirecek şekilde yapılandırın:

    Örnek şema (görmek için açık)
    
        {
            "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"
        }
    
    

    JSON bağlayıcısının ayrıştırma ekran görüntüsü.

Bu noktada SMS olayını başarıyla işlediniz. Ardından, olayın günlüğe kaydedilmesinden SMS'e yanıt vermesine kadar bu işlemle ne yapabileceğinize ilişkin birden çok seçeneğiniz vardır. Bu belge bağlamında, nasıl yanıt verileceğini göstereceğiz. SMS'ye yanıt verme adımlarını öğrenmek için okumaya devam edin.

SMS'ye yanıt verme

  1. Sms bağlayıcısını akışımıza ekleyerek ve Azure İletişim Hizmetleri kaynağımızın bilgileriyle yapılandırarak başlayın. Bağlayıcının kaynağa erişmesine ve bizim tarafımızdan SMS göndermesine izin verir. Kaynağınız için öğesine connection string ihtiyacınız vardır.

    SMS bağlayıcısı için kurulum ekranının ekran görüntüsü.

  2. Ardından bağlayıcıyı gönderen ve alıcı bilgileriyle yapılandıracağız. Aldığımız olaydaki bilgileri bunları doldurmak için kullanırız. Özgün gönderene to sms göndermek için ve from numaralarını yazın. Son olarak bir ileti ekleyin.

    SMS bağlayıcı yapılandırmasının ekran görüntüsü.

Artık akışı kaydedebilir ve Azure İletişim Hizmetleri kaynağınızla ilişkili telefon numarasına SMS göndererek test edebilirsiniz. Kısa mesaj almanız gerekir.

Buradan, olasılıklar sonsuzdur. İletiyi önceden yanıtlanmış yanıtla yanıtlamaktan bot eklemeye veya yalnızca yanıtları depolamaya kadar akışa daha fazla mantık ekleyebilirsiniz.

Kaynakları temizleme

İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi edinin.

Ücretsiz doğrulama

Yeni bir ücretsiz numaranız varsa ve kanada telefon numaralarına yüksek miktarda SMS mesajı göndermek veya SMS mesajları göndermek istiyorsanız, ücretsiz numaranızı nasıl doğrulayacağınızı öğrenmek için lütfen burayı ziyaret edin.

Sonraki adımlar

Bu hızlı başlangıçta, İletişim Hizmetlerini kullanarak SMS iletileri göndermeyi öğrendiniz.