Отправка SMS-уведомлений

Практика SMS-уведомлений от приложений и сайтов весьма популярна и распространена: подтверждение заказа в интернет-магазине, валидация номера телефона, банковские уведомления — в каждом из этих случаев пользователь получает на свой телефон текстовое сообщение.
Многие считают, что эти сообщения рассылают специально обученные SMS-гномики, но на самом деле это не так.
Есть множество сервисов, предоставляющих API для отправки SMS. Настроим отправку сообщений через одну из таких систем и разрушим миф о гномиках.
  1. Зарегистрируйтесь на Twilio и подтвердите email и телефон. Сервис предоставит вам $15 для тестирования системы, этого хватит примерно на 300 сообщений.
  2. Откройте главную страницу работы с Twilio, здесь можно посмотреть всю основную информацию о сервисе: остаток баланса, номера, ключи доступа и всё остальное.
Получите номер, с которого Twilio будет отправлять ваши сообщения. Выберите решетку # в меню слева и нажмите красную кнопку "Get your first Twilio phone number".
image
Вам предложат номер телефона. Снова нажмите красную кнопку "Choose this Number":
image
Готово!
Вы получили номер, с которого будут уходить SMS-сообщения:
image
Ограничения бесплатного режима:
Теперь проверим, что всё это работает и отправим SMS-сообщение на свой номер.
Для выполнения задания вам понадобится токен и документация по API. Токен сохранён в специальном разделе вашего аккаунта, а документация по API Twilio лежит здесь.

Практика

Создайте и активируйте виртуальное окружение, установите библиотеку для работы с Twilio API (в документации сервиса Twilio есть инструкция) и напишите код, который сгенерирует запрос к API Twilio и отправит SMS на ваш номер телефона.
Потестируйте, что будет при отправке SMS на другой телефон [спойлер: никто не пострадает от незапрошенных SMS]
Не забудьте спрятать секретную информацию в переменные окружения: это account_sid, auth_token и номера телефонов. В случае затруднений обращайтесь к документации, там всё есть.
  1. Импортируйте класс Client из пакета twilio.rest
  2. Создайте экземпляр этого класса и передайте в него account_sid и auth_token в качестве аргументов (их значения можно взять в консоли Twillo).
  3. Вызовите у созданного экземпляра метод messages.create и передайте в него текст для отправки.
Результат: на ваш телефонный номер пришло SMS-сообщение с переданным текстом. Если это случилось — можно переходить к проекту.

Проект

Вы уже писали код для отправки SMS, и знаете, как это делается. Мобильные операторы предоставляют возможность получать SMS-сообщение, когда нужный вам абонент появится в сети. Напишите собственную реализацию этого сервиса: отправляйте SMS-уведомление, когда определённый пользователь ВК появится в сети. Клонируйте себе репозиторий api_01_sms и работайте в нём.
Методом users.get получите статус пользователя в ВК.
Если пользователь онлайн — отправьте SMS посредством класса Client() из библиотеки twilio.rest А если пользователь оффлайн — запросите его статус через некоторое время. Метод time.sleep() вас выручит.
Номера телефонов храните в .env в переменных NUMBER_FROM и NUMBER_TO.