В фильме «Уолл-стрит» одна из граней главного героя Гордона Гекко, которую фильм, к сожалению, не раскрывает, — это его любовь к природе. Да, он обожает ходить в походы. Неожиданно, правда?
Гордону никогда не удастся получить стабильное подключение к интернету вдали от цивилизации, но с помощью Python и Twilio SMS он всё равно сможет проверять котировки акций, имея всего пару полосок сигнала. Давайте разберёмся, как это сделать.
Для этого простого приложения вам понадобится аккаунт Twilio и среда разработки на Python. Если вы новичок в Python, её легко настроить — просто зарегистрируйтесь для бесплатной пробной версии.
Начните с открытия терминала или командной строки и создайте новое виртуальное окружение с именем ‘twilio-ticker’:
Активируйте виртуальное окружение:
Отлично, теперь давайте перейдём к коду. Создайте новый файл с именем `app.py`, откройте его в любимом редакторе кода и импортируйте зависимости, которые мы только что установили:
Теперь добавьте код для создания и запуска нового приложения Flask:
Далее определите новый маршрут, который Twilio сможет запрашивать через HTTP POST при получении входящего SMS-сообщения. Этот маршрут создаёт ответ, содержащий TwiML-глагол
Это хороший момент, чтобы убедиться, что основы нашего приложения настроены правильно. Запустите приложение, выполнив команду:
Приложение запустится и откроет маршрут `sms` по адресу http://localhost:5000.
Отлично! Теперь, когда маршрут генерирует TwiML, давайте изменим его, чтобы пользователь мог запросить цену конкретной акции, отправив SMS с её тикером.
Начните с получения текста входящего SMS-сообщения, который Twilio передаёт в HTTP-запросе как параметр формы `Body`. Используя этот тикер, сформируйте URL для API Yahoo Finance, чтобы получить информацию о котировке:
С помощью библиотеки requests выполните HTTP GET-запрос к URL Yahoo. Из ответа извлеките цену и замените исходное TwiML-сообщение на новое, содержащее тикер и цену акции:
Перезапустите приложение и вернитесь в HTTP-клиент, чтобы снова отправить запрос на маршрут `sms`, на этот раз включив параметр формы `Body`.
Когда приложение запущено, последний шаг — подключить к нему Twilio-номер. Twilio использует HTTP-запрос к публичному URL, чтобы сообщить о получении входящего SMS. Мы можем сделать Python-приложение, работающее локально, доступным через публичный URL с помощью ngrok.
После запуска ngrok скопируйте назначенный публичный URL:
Затем перейдите в раздел «Phone Numbers» (Телефонные номера) в Twilio Console, чтобы выбрать существующий номер в вашем аккаунте или купить новый.
Настройте номер так, чтобы при получении входящего SMS Twilio отправлял HTTP-запрос (или «вебхук») на ваш ngrok URL:
Сохраните настройки номера и протестируйте приложение, отправив SMS с любимым тикером акции на ваш Twilio-номер.
Готово! Теперь вы можете получать информацию о котировках акций на телефон через простое SMS-сообщение.
Объединив несколько инструментов Python и Twilio, всего за несколько минут мы создали действительно полезное и удобное SMS-приложение. Но на этом веселье не заканчивается.
Приложение можно сделать ещё более функциональным, добавив возможность запрашивать цены нескольких акций или используя библиотеку очередей задач, такую как Celery, чтобы настроить SMS-уведомления при достижении акцией определённого ценового порога.
Дайте знать, что вы создаёте с помощью Python или Twilio. Напишите мне в Twitter @devinrader.