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

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

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

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

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

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


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



    IVIlych, указал на более простой способ, без танцев с календарем.
    Оказалось, что сайт sms.ru уже несколько лет предоставляет бесплатные СМС для программистов.

    Регистрация проходит на номер мобильного телефона, никаких смс отправлять для этого не нужно. На номер придет только проверочный код.

    После регистрации можно отправлять до 60смс в день на свой номер, указанный при регистрации. Уже почти месяц как перевел все свои сервисы с гугла на данный сервис. Радует отсутствие минутной задержки перед отправкой и возможность получения статуса сообщения.

    Отправить можно разными способами, на сайте, в разделе «Программистам» есть множество готовых примеров:

    • HTTP
    • curl для командной строки (UTF-8)
    • php (с включенным модулем curl)
    • php (без curl)
    • php (усиленная авторизация)
    • PERL (усиленная авторизация)
    • Python


    Самый простой способ это открыть страницу:

    sms.ru/sms/send?api_id=xxxx-xxxx-xxxxx-xxxx-xxxx&to=номер_телефона&text=hello+world
    , где — xxxx-xxxx-xxxxx-xxxx-xxxx это id доступный после регистрации.

    Так же есть возможность пересылки email на смс. В разделе «Почта sms.ru» можно настроить свой почтовый ящик name@sms.ru письма на который будут пересылаться на телефон в виде смс. При включенной опции «обрезать до 1смс» все сообщения на свой номер будут бесплатны.

    Замечание о sms.ru взято из поста хабрюзера Wida: Отправка бесплатного sms сообщения в linux.




    Создать событие с напоминанием можно через гугл 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 приложение для этого сделаю. Кто знает.

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

    UPD: IVIlych, указал на более простой способ, без танцев с календарем.
    Оказалось что сайт sms.ru уже несколько лет предоставляет Бесплатные СМС для программистов.
    Отправить себе СМС можно обычным GET запросом вида:
    sms.ru/sms/send?api_id=xxxx-xxxx-xxxxx-xxxx-xxxx&to=номер_телефона&text=hello+world
    , где — xxxx-xxxx-xxxxx-xxxx-xxxx это id доступный после регистрации.
    Поделиться публикацией

    Похожие публикации

    Комментарии 52
      +16
      Люди, плиз, расскажите мне о «хабр магии».
      Добавлял теги, в автокомплите нажал enter — статья ушла в «опубликованные».
      Срочно перевел ее в черновики, поправил. Смотрю — статья как была в опубликованных, так и осталась.
      Мои правки тоже не сохранились. Исправил еще раз — перечитываю, обновляю, опять старя статья. Хорошо, что хоть код отображается кодом. Но вот с тэгами беда (2 раза их исправлял).

      Это моя вторая статья, со статьей из песочницы такого не было.
        +3
        Все это конечно хорошо но у гула есть проверки на предмет использования календаря для вот таких вещей. Я из за этого 2 года назад отказался от похожего применения.
          0
          Ага, я примерно такое и предполагал. А можно подробности, плиз? Какие, хоть примерно, ограничения и какие будут санкции в случае поимки?
          Сообщений ожидается не много, но и заблочить аккаунт из-за них не хочется.

          Спасибо
            +1
            думаю стоит поискать случаи, т.к. гугл не сообщает о своих органичениях )) аккаунт временно заблокировали только на отправку СМС
              +1
              Точно есть ограничение на число отправляемых смс в сутки, отказался от такого решения, для Zabbix. Если не ошибаюсь, было 20 смс в сутки.
                0
                Ага, спасибо. 20 СМС в сутки меня устраивают.
                С другой стороны, я пользуюсь оповещениями о событиях в календаре. 2 СМС по умолчанию: за 10 минут и за 1 минуту до события.
                Вот сейчас напрягаюсь и не могу вспомнить дня с 20 напоминаниями, наверное такого не было.
                Но может случиться, а если в этот же день будет какой форсмажор, то ан обеспечен.

                Соответственно вопрос (хоть я и понимаю, что гугл не публикует эти цифры): это ограничение на 1 календарь, 1 аккаунт или 1 номер телефона?

                P.S. Хотя что это я парюсь по поводу гугла, sms.ru, похоже, именно то что нужно. Но все равно интересно.

                  +1
                  1 аккаунт.
                    0
                    Получается можно попробовать зарегить второй аккаунт для оповещений. Спасибо!
              0
              А у вас так же, только для личного пользования в виде редких извещений, или там часто и систематически проходили? Я, просто, тоже сделал сигналку падения температуры у клиента в загородном доме через г календарь. Как они проверяют и что при этом делают уточните пожалуйста?
              +10
              Некоторое время назад тоже пользовался гуглом в кач-ве оповещений, но смски доходят не всегда, причем со временем это «не всегда» все чаще… Открыл для себя сервис sms.ru.
              На свой номер до 60 смс в день бесплатно, отправляться могут как с помощью api, так и обычным письмом на почту. Зарегистрировать себя, друга и жену — дело 5 минут ;)
                0
                Очень, очень интересно. Спасибо за ссылку.
                Надо только разобраться работают ли они с Белоруссией. Все работает, абалдеть!
                Нужно будет попробовать их в реальном использовании. Что-то мне не верится в такую щедрость. Похоже это замануха маркетинговый ход для программистов. Мол пользуйся, если нужно будет реализовать отсылку по работе — вспомни о нас. Если так, то все ОК. Понятный ход

                P.S. Вот даже ради этого одного комментария стоило писать статью. Спасибо еще раз.

                  +6
                  Всегда пожалуйста :)
                  Кто-то за это даже в карму нагадил, жаль не написали за что.
                  Пользуюсь сервисом несколько месяцев, тьфу-тьфу-тьфу никаких подводных камней не встретил. Использую для оповещения серверами о внештатных ситуациях.
                    0
                    Проверил HTTP API, сообщение пришло. Это даже круче чем гугл календарь :)
                    0
                    А как у вас получилось с Белорусью? Я из Украины, пишу номер — пишет что номер не в РФ.
                      0
                      У меня всё работает отлично (Украина).
                      Только бы спама много потом от них не было.
                        0
                        Ввел как там просили: (375) 29-ХХХ-ХХХХ. Пришла СМС, я зарегился.
                        Может с вашим оператором они не работают? Я бы предложил спросить у wowkin его оператора и сравнить с вашим. Может в этом дело.
                          0
                          (375) ??
                          Вводил: "+38(050)ХХХХХХХ",
                          только не помню вводил ли с плюсом или без.
                            0
                            Т.е. даже их формат соблюдать не нужно. Главное, чтобы было 12 цифр. Тогда похоже дело в операторе связи.

                            ПС: 375 это беларусь.
                              0
                              У меня вышло зарегиться только послу указания кода страны, Украина, Киевстар. Формат +38(097)ХХХХХХХ. Из консоли сообщение доходит на телефон секунды за 3. Это круто =) Спасибо)
                    +2
                    Более двух лет в своих проектах использую отправку смс. Поначалу использовал Google, о чем написал статью на хабре.
                    Пол года назад узнал на хабре о sms.ru. Проверил — отлично работает с Беларусью. Теперь везде использую их, пол года — полет нормальный.
                    По статистике с гугла смс прилетает 50/50. Два года назад успешных смс было намного больше. И с задержкой в 1минуту минимум.

                    Еще одно неудобство: с гугла смс прилетают всегда с разных номеров, поэтому настроить какую то определенную мелодию на них проблематично. А с смс.ру можно настроить что бы смс приходили с твоего номера.
                      0
                      На смс.ру Бесплатные смс тоже приходят с рандомного номера. Если смс платные — можно выбрать тариф с подменой номера.
                      Собственно после ужесточения правил приема смс у операторов такая система.
                        0
                        Это начало происходить после «революции опсосов» с запретом на произвольный текст в отправителе смс.
                          0
                          Не только произвольный текст — тут скорее запрет входящих (в сеть оператора) смс с номером отправителя данного оператора. Т.е. из сети Билайна нельзя доставить на Мегафоновский номер смс с Мегафоновским номером отправителя.
                          Ну и увеличение тарифов на прямые рассылки.
                            0
                            Не суть важно, важно что после появления новостей от обсосов смс спам почти пропал, а в смс отправляемых zabbix через сервис пропало название zabbix в отправителе, а номера стали рандомными.
                              0
                              Ну насчет пропажи спама ничего не скажу — буквально вчера получил спам от сантехников :)
                          0
                          У меня приходят с моего номера (типа я сам себе его отправил), но, возможно, это первые дни после регистрации. Ибо:
                          Сообщения на собственный номер: Так как эти сообщения бесплатные для вас (но платные для нас), мы отправляем их по дешевым каналам. Если ваш номер в МТС, Билайн, Мегафон, то сообщения к вам могут приходить от случайных номеров телефонов.
                            0
                            Еще как вариант — данные правила распространяются только на Россию :)
                            0
                            Velcom Беларусь — все смс приходят с моего номера. Похоже «революции опсосов» еще не добралась до нас.
                            0
                            Ага, IVIlych уже рассказал об этом и я опробовал. Действительно работает и в разы проще, чем через календарь.

                            Я, с вашего позволения, воспользуюсь текстом о sms.ru с вашего поста.
                              0
                              добавьте в конец статьи UPD, дабы читающим не приходилось рыться в комментариях.
                                0
                                Добавил его в начало статьи. UPD в конце все еще нужно добавлять?
                                  0
                                  извините, UPD в начале текста не бросился в глаза — изначально читал статью ДО внесения изменений, а потом уже просто глянул в её конец.
                                    0
                                    Тогда нужно добавить и в конец :) Не вопрос
                              0
                              sms.ru, как и многие смс-шлюзы после ужесточения условий опсосами, стал работать с запаздыванием и несовсем очевидно — смс приходят то от буквенного отправителя, то от левого номера (часто меняющегося). В итоге смс то попадают в спам, то приходят через пару часов после проявления проблемы (и ее устранения, естественно).
                              +1
                              Если вы изначально создаете некую железку, умный дом или что то еще, то можно туда поставить SIM900R — недорогой модуль, который позволит отправлять смс-ки напрямую из системы.
                              Как вариант. и ограничений никаких нет.
                                0
                                А в случае не законченной автономной железки — можно древний Сименс подключить через com порт.
                                  0
                                  Ну при стоимости Sim900R в 400р… даже не знаю, просто сначала придется разбираться с Сименсом, а потом с Sim900R… :)
                                    0
                                    Возможно, но телефон есть телефон с возможностью ввода pin и визуального контроля качества сигнала. К тому же, по большому счету, разбираться не в чем, обычная AT команда. Честно говоря, я видел вполне законченную железку, в корпусе, со входами и выходами, блоком питания. Внутри которой был сименс! Несмотря на кажущуюся кустарность, эта железка работала когда я пришел, когда я работал 5 лет и когда увольнялся.
                                      +2
                                      Да, все верно. Дело в том, что все эти модули сотовой связи появились не так уж и давно, а более менее качественные так и совсем недавно. Поэтому раньше было проще поставить недорогой телефон с COM-интерфейсом.
                                      Но в новую железку проще поставить готовый модуль. Он так же легко управляется через AT команды, с него так же можно получать информацию по уровню сигнала, балланс, следить за его работой и многое другое.
                                      Очевидный плюс его — низкое энергопотребление, причем его можно дополнительно снижать — контролируя модуль процессором (отключая модуль например когда он не нужен). А в случае если поставить новый модудь Sim800H (ну или посмотреть аналоги), то большим плюсом будет еще и крайне малый размер, что очень важно для небольших автономных устройств, типа GPS-трекера и т.д.
                                        0
                                        Тут не поспоришь, да, при условии, что руки откуда нужно растут. Однако на развалах этих стареньких мобилок на 200руб можно приобрести пучок, + нет проблем с питанием и обвязкой как в случае с модулем, а в некоторых случаях мобилка лучше принимает сигнал базовой станции. Для кустарных и бюджетных поделок — самое то, я считаю.
                                          0
                                          Согласен с вами, если охота поколхозить но не охота никуда далеко ходить — купить старую мобилку на развале самый быстрый вариант.
                                          Есть только некоторые особенности — мобилки могут оказаться не совсем исправны — утопленники какие, ну в общем очень потертые аппараты и их стабильность вызывает сомнения.
                                          А во вторых плюс модуля, что там нет антены, антенну ты сам выбираешь под задачу. Например для мест где прием хороший — можно поставить небольшую, для мест где прием плохой, например какое нибудь промышленное помещение или подвал — то можно поставить хорошую активную антенну и тогда телефон уже за такой конструкцией не угонится.
                                +2
                                Всеми нелюбимый МайлРу имеет возможность отправлять смс о новых письмах и событиях в календаре.
                                Пока особо не тестировал, но из календаря пару смс уже получил.
                                Может кто заинтересуется, можно ли из него сделать подобие смс-гейта?
                                  0
                                  Полноценный гейт создать нельзя, т.к. смс будут отправляться только владельцу учетной записи т.е. только на 1 номер.
                                    0
                                    Как и у гугла
                                      0
                                      МайлРу имеет возможность отправлять смс о новых письмах


                                      Полноценный гейт создать нельзя, т.к. смс будут отправляться только владельцу учетной записи


                                      почему нельзя? для каждого получателя sms зарегистрировать почтовый ящик и настроить уведомление, делать рассылку на почтовые ящики
                                    0
                                    удалено
                                      0
                                      Хм, а почему бы не использовать sms.ru или аналоги? На номер, указанный при регистрации, у sms-шлюзов бесплатно обычно отправлять можно уведомления. С api вроде тоже нет проблем, просто по url с get параметрами и поехали =)
                                        +1
                                        Упс, необходимо полностью читать комментарии =)
                                        0
                                        Приятно что django-calendar-sms в обиходе:)
                                          0
                                          Он на первом месте в выдаче гугла, делает свое дело. Вот и в обиходе :)
                                          Если вы автор этого модуля, то спасибо за него.
                                            +1
                                            Пожалуйста. И Вам спасибо.
                                          +1
                                          Important announcement about SMS notifications in Google Calendar
                                          Starting on 27 June 2015, SMS notifications from Google Calendar will no longer be sent. SMS notifications were launched before smartphones were available. Now, in a world with smartphones and notifications, you can get a richer, more reliable experience on your mobile device, even offline.

                                          To receive notifications on your smartphone, either configure the calendar app that came with your device or install Google Calendar for Android or iPhone. For more information on how to configure notification defaults, have a look in the Help Centre.

                                          Please note: Please note: This change will not affect Google Drive for Work, Google Apps for Work (paid edition), Education and Government customers.

                                          — The Google Calendar team

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое