Если вы хотите попробовать сначала, я настроил несколько телефонных номеров 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.
Предпосылки
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Nexmo
- Учетная запись Azure
- Node.js установлен на вашем компьютере
Настройка приложения "Функции 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 г.