Aracılığıyla paylaş


SMS iletisi alma

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 açık tümleştirmeler sağlayan Azure Event Grid'e gönderiliyor.

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 makalede, Power Automate / Logic Apps için Event Grid tetikleyicilerini ve kod içermeyen bağlayıcıları kullanarak Azure İşlevleri aracılığıyla SMS alınan olayların nasıl işlendiği açıklanmaktadır.

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

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

Uyarı

Bu API tarafından döndürülen MessageId formatı, içsel bir uygulama ayrıntısı olarak kabul edilir ve önceden bildirimde bulunmadan değiştirilebilir. İstemciler, ileti kimliklerini opak tanımlayıcılar olarak ele almalı ve biçimlerine veya içeriğine göre ayrıştırmamalı, yapı çıkarmamalı veya mantık oluşturmamalıdır.

Olay oluşturmaya başlamak için Azure Event Grid'i Azure İletişim Hizmetleri kaynağınızı kullanacak şekilde yapılandırın.

Uyarı

Azure Event Grid'in kullanılması daha fazla maliyete neden olur. Daha fazla bilgi için bkz. Azure Event Grid fiyatlandırması.

Önkoş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 alınan SMS'lere yönelik tetikleyicilere odaklanacağız.

Yerel ortamımızı ayarlama

  1. Visual Studio Code'u 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şlev oluşturulur:

    
    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'ni SMS olayını 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 yönetmişsinizdir. Şimdi bu olayla ne yapabileceğinize ilişkin olasılıklar, yalnızca günlüğe kaydetmekten 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'leri yanıtlamak için SMS göndermek için Azure İletişim Hizmeti SMS özelliklerini kullanırız. SmsClient öğesini çağırarak başlıyor ve kaynağımız için connection string ile 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 olaydan elde edilen to ve from değerlerine göre gönderilecek bir SMS oluştururuz.

    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. Bir iletiyi önceden yazılmış bir yanıtla yanıtlayabilir, bot ekleyebilir veya son adımda kodu uyarlayarak yanıtları depolayabilirsiniz.

Yerel olarak çalıştır

İşlevi yerel olarak çalıştırmak için Visual Studio Code'a basın F5 . Yerel olarak çalışan Azure İşlevimizi Azure Event Grid ile bağlamak için ngrok kullanıyoruz.

  1. İşlev çalıştıktan sonra ngrok öğesini yapılandırın. Ortamınız için ngrok indirmeniz gerekir.

    ngrok http 7071
    

    ngrok İşlevinizin çalıştığı yerde sağlanan bağlantıyı 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 portalda bulunan Azure İletişim Hizmetleri kaynağınızın kaynak kimliğine ihtiyacınız vardır. Kaynak kimliği şuna benzer: /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. Artık her şey bağlandığı için Azure İletişim Hizmetleri kaynağınızdaki telefon numarasına SMS göndererek akışı test edin. terminalinizde işlevin çalıştığı konsol günlüklerini görmeniz gerekir. Eğer SMS'ye yanıt vermek için kodu eklediyseniz, bu kısa mesajın size geri gönderildiğini görmelisiniz.

Azure’a dağıtın

Azure İşlevi'ni 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 ile (işlevin altındaki Azure portalında bulunan URL) aşağıdaki komutu çalıştırıyoruz:

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, daha önce kullandığınız olay aboneliği adını kullandığınızdan emin olun.

Azure İletişim Hizmetleri kaynağınızda ayarladığınız 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ın işlenmesine yardımcı olmak için kullanıma açık bağlayıcılar sağlar. Hem Logic Apps hem de Power Automate aynı bağlayıcı kümesini sağlar. Neleri tercih ettiğinize karar vermek size kalmış, kararınızı bildirmek için hizmetler arasındaki farkları okuyun.

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çiminin ekran görüntüsü.

  2. Artık bağlayıcıyı yapılandırabilirsiniz. Kullanmak istediğiniz bir abonelik sağlamanız gerekir. (Azure İletişim Hizmetleri kaynağınızın bulunduğu abonelikle aynı abonelik olmalıdır). Kaynak türünü belirtin. Bu durumda Microsoft.Communication.CommunicationServices seçin. 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.

    Event Grid bağlayıcısının ekran görüntüsü.

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

  3. Daha sonra hayatımızı kolaylaştırmak için Event Grid bağlayıcısından gelen yanıtı işlemek üzere bir Parse JSON connector ekleyin. Bağlayıcıyı, Event Grid bağlayıcısından alınan Body nesnesini beklenen olay şemamıza eşleyecek ş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"
        }
    
    

    Parse JSON bağlayıcısının ekran görüntüsü.

Bu noktada SMS olayını başarıyla işlemişsinizdir. Olayın günlüğe kaydedilmesinden SMS'e yanıt vermeye kadar birçok farklı seçeneğiniz vardır. Bu belge bağlamında, alınan SMS iletisine yanıt veririz.

SMS'ye yanıt verme

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

    SMS bağlayıcısı için kurulum sayfası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 SMS geri göndermek için to ve from numaralarını değiştirin. 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. Bir kısa mesaj almayı beklemelisiniz.

Buradan, olasılıklar sonsuzdur. İletiyi önceden yazılmış bir yanıtla yanıtlayabilir, bot ekleyebilir, yanıtı depolayabilir veya iş akışı otomasyonu ekleyebilirsiniz.

Kaynakları temizle

Eğer bir İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunu silmek, onunla ilişkili olan 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 SMS SSS > Ücretsiz doğrulama gönderme bölümüne bakın.

Sonraki Adımlar