Ах, праздники наступили. Рождественское время напоминает мне о классических песнях, таких как «Happy Holidays», «Silver Bells» или «It’s the Most Wonderful Time of the Year». Было бы здорово, если бы мы могли организовать краудсорсинг выбора музыки на праздничных собраниях? Это звучит как идеальный кандидат для бессерверного приложения, работающего на Twilio и Spotify. В этой статье мы расскажем, как создать функцию Azure для реагирования на запросы текстовых сообщений.
Ингредиенты этого проекта включают:
— Visual Studio 2017 Community (минимум версия 15.5)
— Во время установки установите рабочую нагрузку «Разработка Azure»
— Если вы используете Windows, загрузите инструменты «Azure Functions and Web Job Tools». Этот блог был написан с использованием версии 15.0.31201.0, что означает, что после публикации блога могут появиться обновления.
— Если вы используете Mac, попробуйте загрузить «Azure Functions and Web Job Tools» из менеджера расширений.
— Учетная запись Twilio и номер телефона
— Ngrok
После установки всего необходимого создайте новый проект Azure Functions, запустив Visual Studio 2017 и перейдя в «Файл» → «Создать» → «Проект». Нажмите на категорию «Облако» и выберите проект *Azure Functions*.
Я назвал свой проект *JukeboxFunctions*. Вы, конечно, можете использовать это или другое имя для своего проекта, если хотите.
Когда вы нажмете кнопку «ОК», появится запрос с предложением выбрать триггер и желаемую версию среды выполнения Azure. Вот где все становится интереснее. Основа нашей функции Azure заключается в том, что она бессерверная. Код развертывается в Azure и будет выполняться, когда что-то запускает его. Функции Azure поддерживают ряд триггеров, которые вы можете увидеть здесь:
Версия среды выполнения, которую мы хотим, — это *Azure Functions v2 (.NET Core)*, а триггер, который нам нужен, — *HTTP-триггер*, поскольку Twilio будет отправлять HTTP-запрос к нашей функции, когда получит текстовое сообщение. Убедитесь, что эти два параметра выбраны во всплывающем окне, и нажмите кнопку «ОК». После создания нашей функции пришло время ответить на наш запрос текстового сообщения!
Давайте добавим библиотеку Twilio в наш проект. В строке меню нажмите «Сервис» → «Диспетчер пакетов NuGet» → «Консоль диспетчера пакетов». Когда откроется консоль диспетчера пакетов, введите `Install-Package Twilio`
и нажмите Enter.
Теперь, чтобы использовать библиотеку Twilio, скопируйте код ниже в самый верх нашего файла кода, *Function1.cs*.
После создания нашей функции Azure пришло время ответить на входящие текстовые сообщения. Когда кто-то отправляет SMS на наш номер Twilio, Twilio отправит HTTP-запрос нашей функции Azure. Мы можем ответить Twilio с помощью приведенного ниже фрагмента кода:
Этот код создает TwiML, который представляет собой набор XML-инструкций, понятных Twilio. В данном случае мы говорим Twilio, что хотим ответить на входящее сообщение собственным текстовым сообщением. Тело сообщения установлено как «Спасибо за ваш запрос. Мы скоро ответим на ваш запрос». Попробуйте изменить сообщение на то, что вы хотели бы увидеть.
Далее мы изменим функцию Azure, чтобы она возвращала сгенерированный TwiML. Мы также укажем функции Azure, что хотим пометить этот контент как XML, поскольку именно это Twilio ожидает получить в ответ.
Пришло время заменить код в нашем методе Run на наши фрагменты кода. Обновите метод *Run*, чтобы он выглядел так, как показано ниже, с выделенным нашим кодом:
Обратите внимание, что выделено еще кое-что. Строка `FunctionName(«ReplyToJukeboxRequest»)`
также выделена. Это обновление переименовывает нашу функцию Azure в *ReplyToJukeboxRequest*, что более удобно для пользователя.
Мы написали весь этот код – ОТЛИЧНО! Теперь как нам это протестировать? Нажатие F5 на клавиатуре собирает проект, запускает локальную версию среды Azure и запускает функцию на локальном веб-сервере. Консоль, которая откроется, сообщит вам конкретный URL вашей функции.
Видите, как просто Visual Studio это делает!
Теперь в браузере перейдите по этому URL. Вы должны увидеть XML, который выглядит так же, как в моем браузере на фото ниже.
Итак, как мы это свяжем с Twilio? Ну, оставьте проект запущенным. Мы будем использовать ngrok, чтобы открыть наш локальный веб-сервер для Интернета. Как только вы установите ngrok, откройте командную строку или терминал и введите `ngrok http —host-header=localhost:7071 7071`
. Вы должны получить URL перенаправления, который перенаправляет трафик на ваш локальный код.
Теперь попробуйте отправить SMS на свой номер телефона и посмотрите, совпадает ли ваш ответ с моим, приведенным ниже!
**УСПЕХ**
Дамы и господа, мы создали проект Azure Functions и подключили его к Twilio. В другой статье мы создадим нашу музыкальную шкатулку, подключив этот код к Spotify. Если вы хотите увидеть завершенный код, ознакомьтесь с репозиторием на Github. Свяжитесь с нами через Github, Twitter или по электронной почте, чтобы поделиться тем, что вы создали. Я с нетерпением жду ваших сообщений!