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

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

Для SMS я буду использовать Nexmo SMS API, который позволяет отправлять и получать большое количество SMS в любой точке мира. Получив виртуальный номер телефона, вы можете использовать API для управления исходящими сообщениями (отправка) и входящими сообщениями (получение).

В этой статье вы узнаете, как отправлять и получать SMS-сообщения с помощью Node.js и Приложения функций Azure.

Код этого руководства можно найти на GitHub.

Предпосылки

Прежде чем начать, убедитесь, что у вас есть:

Настройка приложения "Функции Azure"

Существует несколько способов настроить приложение Функций Azure. Я решил сделать это с Azure Portal.

Я назвал его send-receive-sms, создал для него новый ресурс и выбрал Node.js в качестве среды выполнения. Я выбрал значения по умолчанию с точки зрения развертывания, региона и планов.

После завершения развертывания (обычно около 2 минут) вы можете перейти к только что созданному ресурсу и создать свою первую функцию. В этом процессе вам поможет мастер, и я выбрал VS Code в качестве среды разработки и Прямая публикация в качестве метода развертывания. Это дало мне набор инструкций по настройке VS Code для Azure.

Закончив настройку, я создал свою первую функцию — HTTP-триггер. Я назвал его inbound, но вы можете использовать любое другое имя. Что касается механизма безопасности, у вас есть несколько параметров, которые контролируют уровень авторизации функции. Для «Функции» требуется функциональный ключ API, для «Администратора» требуется главный ключ API из Azure, а для «Анонимного» ключ API не требуется. Я выбрал «Анонимный» в качестве механизма безопасности. Это создало новый файл с шаблоном по умолчанию.

Получение SMS-сообщения

Создайте функцию веб-перехватчика

Я заменил содержимое функции, чтобы оно соответствовало Получить фрагмент кода SMS, который мы используем на нашем портале для разработчиков. Он объединяет параметры тела и запроса и записывает их в консоль. Это простой Webhook, который вы можете использовать для получения SMS-сообщений на платформе Nexmo.

Развернуть функцию

Поскольку Nexmo должен иметь доступ к общедоступному URL-адресу, я развернул свою функцию в Azure. Вы можете сделать это в VS Code. После завершения развертывания вы получите активный URL-адрес для своей функции, например, мой — https://send-receive-sms.azurewebsites.net/api/inbound.

Установить входящий URL-адрес

Чтобы получать SMS-сообщения на платформе Nexmo, у вас должен быть номер Nexmo. Если у вас его нет, вы можете купить его в Личном кабинете Nexmo:

Когда номер телефона Nexmo получает SMS-сообщение, Nexmo передает это сообщение веб-перехватчику, который вы указали на панели управления Nexmo. Мы будем использовать нашу функцию Azure в качестве принимающего веб-перехватчика. Чтобы настроить URL-адрес веб-перехватчика, перейдите к маленькому значку шестеренки рядом с вашими телефонными номерами на панели инструментов Nexmo и заполните поле URL-адрес входящего веб-перехватчика URL-адресом, который вы получили после развертывания функции Azure (мой был https://send-receive-sms.azurewebsites.net/api/inbound) .»

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

Отправка SMS-сообщения

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

Я собираюсь использовать Nexmo Node.js SDK для отправки SMS-сообщения, поэтому вам нужно будет установить его в функции Azure. В папке верхнего уровня для вашей функции есть файл package.json, который устанавливается при каждом развертывании. Поэтому, если вы перейдете к этой папке в Терминале и используете npm install nexmo, это даст вам доступ к Nexmo SDK внутри функции Azure.

Я также обновил функцию для инициализации Nexmo SDK, преобразования SMS-сообщения в смайлики, а затем отправки его в виде SMS исходному отправителю.

Вы заметите, что мой код инициализирует Nexmo SDK с помощью process.env["NEXMO_API_KEY"] и process.env["NEXMO_API_SECRET"]. Приложение-функция Azure имеет параметры приложения, и я добавил туда свои NEXMO_API_KEY и NEXMO_API_SECRET, и они обновляются при каждом развертывании с моего локального компьютера. Вы также можете сделать это или заменить эти значения вашим фактическим ключом и секретом API. Вы можете найти их на странице Начало работы в Панель управления Nexmo.

Метод SDK для отправки SMS, nexmo.message.sendSms(), принимает идентификатор отправителя, номер телефона получателя, текстовое сообщение и параметры в качестве параметров. Я добавил {type: "unicode"} в параметры, потому что отправляю смайлики. Он также принимает обратный вызов, который вызывается при выполнении запроса API.

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

Поскольку в моем тексте есть смайлик, я устанавливаю тип unicode в объекте параметров, иначе этот смайлик будет отправлен по сети как ?.

Попробуйте

Теперь отправьте SMS-сообщение со своего телефона на свой номер Nexmo. Вы должны получить обратно SMS-сообщение, преобразующее ваши текстовые символы в смайлики. Если вы отправите Hello World! в SMS, вы должны вернуться 🌷🍈🍛🍗🌃🍐🍈🌃🍗🍈🍑🍇🍈🍕🌑.

Я надеюсь, что это сработало, и вы только что узнали, как отправлять и получать SMS-сообщения с помощью API Nexmo. Функции Azure и Node.js.

Первоначально опубликовано на https://www.nexmo.com 29 января 2020 г.