Поделиться через


Краткое руководство. Получение SMS и ответ на нее

Службы коммуникации Azure возможности SMS предоставляют разработчикам возможности для использования событий, полученных SMS. События публикуются в Сетка событий Azure который предоставляет готовые интеграции для обработки тех, кто использует веб-перехватчики, Функции Azure, Соединители Power Automate и Logic App и многое другое.

После получения SMS-сообщения можно обрабатывать, чтобы отвечать на них или просто записывать их в базу данных для дальнейшего доступа.

В этом кратком руководстве мы сосредоточимся на демонстрации обработки полученных SMS-сообщений с помощью Функции Azure с помощью триггеров Сетки событий и соединителей без кода для Power Automate и Logic Apps.

СобытиеSMSReceived, создаваемое при отправке SMS на номер телефона Службы коммуникации Azure, форматируется следующим образом:

[{
  "id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
  "topic": "/subscriptions/50ad1522-5c2c-4d9a-a6c8-67c11ecb75b8/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"
}]

Чтобы приступить к созданию событий, необходимо настроить Сетка событий Azure для ресурса Службы коммуникации Azure.

Примечание

Использование Сетка событий Azure влечет за собой дополнительные затраты. Дополнительные сведения см. в разделе цены Сетка событий Azure.

Предварительные требования

Сетка событий предоставляет готовую поддержку для Функции Azure, что упрощает настройку прослушивателя событий без необходимости решать сложные задачи анализа заголовков или отладки веб-перехватчиков. С помощью триггера можно настроить функцию Azure, которая выполняется при каждом обнаружении события, соответствующего триггеру. В этом документе мы сосредоточимся на триггерах, полученных с помощью SMS.

Настройка локальной среды

  1. С помощью Visual Studio Code установите расширение Функции Azure.

  2. С помощью расширения создайте функцию Azure, следуя этим инструкциям.

    Настройте функцию с помощью следующих инструкций:

    • Язык: TypeScript
    • Шаблон: триггер Сетка событий Azure
    • Имя функции: Определяется пользователем

    После создания в каталоге вы увидите функцию, созданную следующим образом:

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

Настройка Функции Azure для получения события SMS

  1. Настройте функцию Azure для анализа значений события, например от того, кто его отправил, с каким номером и каким было сообщение.

    
    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;
    
    

На этом этапе вы успешно справились с получением SMS через события. Теперь возможности того, что делать с этим событием, варьируются от простого ведения журнала до реагирования на него. В следующем разделе мы сосредоточимся на ответе на полученное SMS-сообщение. Если вы не хотите отвечать на sms, перейдите к следующему разделу, посвященному локальному выполнению функции.

Ответ на SMS

  1. Чтобы ответить на входящие SMS, мы используем возможности SMS Службы коммуникации Azure для отправки SMS. Начнем с вызова и инициализации SmsClient с connection string помощью для нашего ресурса. Вы можете вставить строку подключения непосредственно в код или поместить ее в файл local.settings.json в каталоге функций Azure в разделе значения.

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

  1. Затем мы создаем SMS для отправки на основе значений to и from из полученного события.

    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;
    

Отсюда, возможности бесконечны. Для этого можно адаптировать код на последнем шаге, начиная с ответа на сообщение с помощью предварительного консервированного ответа, добавляя бота или просто сохраняя ответы.

Локальное выполнение

Чтобы запустить функцию локально, нажмите клавишу F5 Visual Studio Code. Мы используем ngrok для подключения локально работающей функции Azure с помощью Сетка событий Azure.

  1. После запуска функции мы настраиваем ngrok. (Необходимо скачать ngrok для своей среды.)

    ngrok http 7071
    

    Скопируйте ссылку ngrok, указанную в месте выполнения функции.

  2. Настройте события SMS с помощью Сетки событий в Службы коммуникации Azure ресурсе. Мы делаем это с помощью Azure CLI. Вам потребуется идентификатор ресурса Службы коммуникации Azure, который можно найти в портал Azure. (Идентификатор ресурса будет выглядеть примерно так: /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. Теперь, когда все подключено, проверьте поток, отправив SMS на номер телефона, который у вас есть в Службы коммуникации Azure ресурсе. Вы должны увидеть журналы консоли в терминале, где выполняется функция. Если вы добавили код для ответа на SMS, вы увидите, что это текстовое сообщение будет доставлено вам.

Развернуть в Azure

Чтобы развернуть функцию Azure в Azure, следуйте этим инструкциям. После развертывания мы настроим сетку событий для ресурса Службы коммуникации Azure. Используя URL-адрес развернутой функции Azure (URL-адрес находится в портал Azure в функции), мы выполняем следующую команду:


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

Так как мы обновляем подписку на события, созданную для локального тестирования, используйте то же имя подписки на событие, которое вы использовали ранее.

Вы можете проверить, отправив SMS на номер телефона, приобретенный с помощью Службы коммуникации Azure ресурса.

Logic Apps и Power Automate предоставляют автоматические соединители для обработки событий, созданных Службы коммуникации Azure с помощью Сетки событий. И Logic Apps, и Power Automate предоставляют одинаковый набор соединителей. Вы сами решаете, что вы предпочитаете, прочитайте о различиях между службами , чтобы сообщить о своем решении.

Обработка событий с помощью соединителя Сетки событий

  1. Начните с создания нового потока в предпочитаемой среде. Выберите триггер, When a resource event occurs чтобы начать работу.

    Снимок экрана: выбор триггера для Power Automate.

  2. Теперь давайте настроим его. Соединитель требует предоставить подписку, которую вы хотите использовать. (Это должна быть та же подписка, в которой находится Службы коммуникации Azure ресурс.) Укажите тип ресурса. В этом случае выберите Microsoft.Communication.CommunicationServices. Затем необходимо указать имя ресурса для Службы коммуникации Azure ресурса, к которому вы хотите подключиться. Наконец, нам нужно выбрать типы событий, которые мы хотим получить, в данном случае: Microsoft.Communication.SMSReceived.

    Снимок экрана: соединитель сетки событий.

    Соединитель автоматически настраивает подписку на события от вашего имени и настраивает события, которые он хочет получить.

  3. Чтобы упростить нашу жизнь в дальнейшем, добавьте Parse JSON connector для обработки ответа, поступающего от соединителя Сетки событий. Настройте соединитель, чтобы получить Body объект из соединителя Сетки событий и сопоставить его с ожидаемой схемой для события:

    Пример схемы (открыть для просмотра)
    
        {
            "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.

На этом этапе вы успешно обработали событие SMS. Затем у вас есть несколько вариантов действий, начиная от регистрации события до ответа на SMS. В контексте этого документа мы покажем, как реагировать на него. Продолжайте читать, чтобы узнать, как реагировать на SMS.

Ответ на SMS

  1. Для начала добавьте соединитель SMS в наш поток и настроите его с помощью сведений для Службы коммуникации Azure ресурса. Это позволяет соединителю получать доступ к ресурсу и отправлять SMS от нашего имени. Вам потребуется connection string для ресурса.

    Снимок экрана настройки соединителя SMS.

  2. Далее мы настроим соединитель с информацией для отправителя и получателя. Мы используем сведения из полученного события, чтобы заполнить их. Fip to номера и from для отправки SMS обратно исходному отправителю. Наконец, добавьте сообщение.

    Снимок экрана: конфигурация соединителя SMS.

Теперь вы можете сохранить поток и протестировать его, отправив SMS на номер телефона, связанный с ресурсом Службы коммуникации Azure. Вы должны получить обратно текстовое сообщение.

Отсюда, возможности бесконечны. От ответа на сообщение с предварительно консервированным ответом до добавления бота или просто хранения ответов вы можете добавить дополнительную логику в поток.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на Службы коммуникации, вы можете удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней. См. сведения об очистке ресурсов.

Бесплатная проверка

Если у вас новый бесплатный номер и вы хотите отправлять большое количество SMS-сообщений или отправлять SMS-сообщения на канадские номера телефонов, посетите эту страницу, чтобы узнать, как проверить бесплатный номер.

Дальнейшие действия

В этом кратком руководстве вы узнали, как отправлять SMS-сообщения с помощью Служб коммуникации.