Google Calendar, как бесплатный СМС гейт

в 11:52, , рубрики: django, python, Программирование, метки: ,

Вы знали, что google календарь может отправлять СМС напоминания? Скорее всего да. Я сам этим пользуюсь постоянно. А знали ли вы, что с помощью таких напоминаний можно сделать себе СМС оповещения? А вот можно. Эдакий персональный бесплатный СМС гейт. Я об этом когда-то давно читал, но тогда мне это нужно не было. Недавно понадобилось отправлять СМС оповещения от железки аля умный дом и я вспомнил об этом способе. Вспомнил, нашел готовый django модуль, реализующий его, и подключил к своему сайту. Работает! На все у меня ушло где-то пол часа. Но обо всем по порядку.

Рассказал недавно мой хороший знакомый, что мол раздобыл он себе железяку, к которой можно наподключать разных датчиков. Железяка будет эти датчики опрашивать и сообщать о проблемах в доме (на даче). Например, в помещение проникли воры, или подвал затопило, или бумага в туалете заканчивается (а почему нет? такой датчик может спасти от пренеприятнейшего инцидента).

Вот только есть одна беда: железяка древняя и не умеет ходить по https, а все СМС гейты (что он видел) имеют только https API. Я, не долго думая, сделал http прокси у себя на сайте. Все работает, прокси на гугль ходит как молодой, меняет https на http все довольны. А вот и нет, оказалось, что с провайдерами не так все просто. То дорого, то только корпоративным клиентам, то API они дают не всем… В общем, не срослось у моего друга с гейтами. Я научил его админить прокси и благополучно забыл об этом.

Несколько дней эта штука крутилась у меня в подсознании (судя по всему) и вот как раз вчера вылезла оттуда со словами «Гугль календарь может отправлять СМС и у него есть API. Помнишь мы давно об этом читали?». Я полез в гугль, нашел джанго модуль, добавил его к сайту, протестил отправку (работает!), допилил трохи и осчастливил товарища. Пусть пользуется, мне не жалко :)

Как подключить

Хватит лирики. Практика.

Создать событие с напоминанием можно через гугл API. Это обычный пост запрос с OAuth2.0 авторизацией и JSON параметрами в BODY. Прямо по ссылке можно попробовать создать себе в календаре напоминание. Есть клиенты для многих платформ.

Но у нас ведь Django. В котором есть модуль django-calendar-sms. Который легко устанавливается и настраивается:

  1. pip install django-calendar-sms
  2. Добавляем приложение calendar_sms в INSTALLED_APPS в файле настроек (обычно settings.py)
  3. Синхронизируем базу ./manage.py syncdb
  4. После чего идем в админку Django, настраиваем данные гугль аккаунта и календаря.

Все, можно прямо из django консоли (./manage.py shell) отправить себе SMS:

>>> from calendar_sms.sms import sendSMS
>>> print sendSMS('Hello, World!')

Вот код моей django view, которая отправляет СМС (код view на GitHub):


def send(request):
    secret = request.GET.get('secret')
    text = request.GET.get('text')
    if not secret or secret != SMS_SECRET or not text:
        raise Http404

    try:
        r = sms.sendSMS(text) or "Sent" # sendSMS returns None on success
    except Exception as e:
        r = e.message
    return HttpResponse(r)

Что дальше?

Я планирую этот код менять, так как меня не устраивает, что с одного django сайта можно слать СМС только всем пользователям сразу. Я хочу, чтобы СМСки уходили отдельно мне и отдельно моему товарищу.

Еще я хочу подключить к этому гейту мою жену, чтобы было проще слать SMS сообщения в роуминге из командировок. Может даже android приложение для этого сделаю. Кто знает.

Может вы что-то еще подскажете? Было бы интересно послушать, что можно еще сделать с такой штукой. Ограничение у него только одно: получателя СМС нужно предварительно регистрировать в системе.

Автор: akava

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js