Мониторинг цен на криптовалюты с помощью JavaScript, Twilio Functions и SMS

Автор: | 07.08.2026

Недавно Twilio представила Functions — бессерверную среду для создания и запуска приложений Twilio. С помощью Functions вы можете разрабатывать простые приложения на JavaScript, не беспокоясь о настройке серверов, поиске хостинга для TwiML или туннелировании на localhost.

Давайте познакомимся с Functions, создав приложение для мониторинга цен на криптовалюты. Готовое приложение будет использовать CoinMarketCap для отправки информации о ценах через SMS на любую криптовалюту, которую вы укажете (Bitcoin, Ethereum, Dogecoin и т.д.).

Если вы уже знакомы с настройкой новой Function, готовый код для этой функции доступен на Github здесь.

Начало работы

Для создания этого приложения и использования Twilio Functions вам понадобятся:

— Учетная запись Twilio (зарегистрируйтесь бесплатно)

— Twilio-номер с поддержкой SMS

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

Доступ к Functions можно получить через Twilio Console, перейдя в Runtime -> Functions. Нажмите на красный кружок и выберите шаблон Hello SMS.

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

Параметр `context` содержит информацию о вашей среде выполнения, такую как переменные конфигурации. Объект `event` включает информацию о конкретном вызове, включая HTTP-параметры из HTTP-запроса. Наконец, `callback` — это метод, который вы вызываете для завершения функции. Подробнее об этом коде можно прочитать на странице поддержки Twilio.

Код внутри функции создает новый объект TwiML-ответа, содержащий глагол Message с сообщением «Hello World». Эти строки можно пока удалить.

Дайте своей функции имя и путь. Имя должно быть простым и описывать, что делает функция («CryptoCurrencyLookup», например). Путь служит общедоступным URL, который можно использовать для вызова функции откуда угодно, а не только из Twilio-звонка или SMS.

Установите событие как «Входящие сообщения» и убедитесь, что отмечена опция «Контроль доступа». Это гарантирует, что функция будет выполняться только при запросах через SMS от Twilio. В результате путь, который вы только что установили, будет доступен только для входящих сообщений на номера Twilio.

Добавьте следующую строку в начало функции:

Приведенная выше строка импортирует модуль `got`. `got` будет использоваться для выполнения HTTP-запроса к стороннему API позже в функции. На данный момент Twilio Functions поддерживает только четыре сторонние библиотеки: twilio, got, lodash и xmldom.

Мы будем использовать CoinMarketCap и их простой API для получения актуальной информации о ценах на криптовалюты. Удалите шаблонный код и добавьте следующее в вашу функцию:

Приведенный выше код использует `got` для выполнения HTTP GET-запроса к CoinMarketCap. Обратите внимание, что запрашиваемый URL содержит выражение `${event.Body.trim()}`. `event.Body` — это содержимое SMS-сообщений, которые будут отправляться на ваш Twilio-номер позже. Метод `trim` удаляет начальные и конечные пробелы. Само выражение обернуто в шаблонный литерал, который вычисляет `event.Body.trim()` и вставляет его в строку для формирования URL.

Поскольку HTTP-запрос к API CoinMarketCap выполняется асинхронно, `got` использует промис, чтобы сообщить, когда этот HTTP-запрос завершится, вызывая функцию, определенную внутри метода `then`. Асинхронный JavaScript может быть сложным для начинающих, но, к счастью, существует множество ресурсов, которые помогут разобраться в этом.

Внутри этой функции мы парсим JSON-ответ от CoinMarketCap и получаем стоимость валюты, её символ и процентное изменение за последние 24 часа, затем собираем всё это в сообщение, напоминающее биржевой тикер.

Выражение `(price_change > 0 ? ‘u2191’ : ‘u2193’)` — это условный тернарный оператор, который определяет, должен ли сообщение содержать стрелку вверх или вниз.

Приведенный выше код содержит основную логику приложения. Однако функция будет завершаться по тайм-ауту при вызове, так как параметр `callback` никогда не вызывается. Давайте создадим объект TwiML `MessagingResponse` и передадим его в callback, аналогично тому, что было в исходном шаблоне кода. Также следует рефакторить формирование сообщения для улучшения читаемости:

После вызова callback функция обеспечит преобразование объекта `MessageResponse` в XML, а заголовок `content-type` HTTP-ответа будет установлен как `text/xml`. Twilio обработает остальное, отправив исходящее SMS.

С этим кодом следующим шагом будет связывание этой функции с вашим Twilio-номером. Перейдите в раздел Phone Numbers, выберите номер, который хотите настроить, прокрутите вниз и настройте раздел Messaging следующим образом:

Сохраните изменения и протестируйте функцию, отправив название любой криптовалюты на ваш Twilio-номер (например, Bitcoin).

Наше приложение готово, но в текущей версии функции не определено поведение на случай ошибки. Это означает, что если пользователь отправит несуществующую криптовалюту или CoinMarketCap будет недоступен, пользователь не получит ответа.

Это можно исправить, добавив метод `catch` к нашему промису. Метод `catch` вызывается всякий раз, когда промис отклоняется (то есть происходит ошибка). Чтобы добавить `catch`, нам нужно привязать ещё один метод `then` к функции, чтобы callback вызывался как при успехе, так и при ошибке. Рефакторите код функции следующим образом:

Сохраните изменения. Теперь, если произойдет ошибка, пользователь всё равно получит SMS-ответ вместо отсутствия ответа. Протестируйте это, отправив что-то отличное от названия существующей криптовалюты («Twiliocoin» или «asdfasdfas», например). Ответ, который вы получите, должен гласить: «Не удалось определить цену».

Готовый код функции должен выглядеть так:

Это весь код, который потребуется функции. Если вы получаете много ответов «Не удалось определить цену», ошибки будут отображаться в ваших логах, и вы можете использовать встроенный отладчик Twilio для оценки проблемы.

Заключение

Поздравляем с созданием простого, но мощного приложения Twilio, используя всего около 25 строк JavaScript. Теперь вы можете быстро отслеживать цены на постоянно меняющиеся криптовалюты, используя всего лишь SMS-сообщение.

Следите за новыми постами о Functions в блоге Twilio и за дополнительными функциями. А пока посмотрите, что ещё можно создать с помощью Functions и бесчисленного множества потрясающих API и сервисов.

Если у вас возникнут проблемы с функцией или появятся вопросы, свяжитесь со мной в Twitter @brodan_ или на Github.