Page 1 of 7 123 ... LastLast
Results 1 to 15 of 105

Thread: Отправка SMS-оповещений при помощи Google

  1. #1

    Post Отправка SMS-оповещений при помощи Google

    не отправляет сообщения мой DIR-320 как я только и не настраивал его копаясь на прасторох инета наткнулся на токую вот вещь интересно можно ли ее прикрутить.

    ЗЗахотел я реализовать отправку смс себе на телефон когда завершается закачка нового торрента.
    Конечно, в интернете есть полно платных сервисов. Но недавно гугл открыл возможность отправки халявных смс оповещений о событиях себе на телефон. Для отправки оповещений создаем событие через 2-3 минуты и настраиваем отправку смс за 1 минуту до события.

    1) Заходим на http://www.google.com/calendar в настройки, выбираем вкладку "Настройка для мобильных устройств"
    Вводим свой телефон в соответствующее поле.
    Подтверждаем, что это ваш телефон путем ввода кода подтверждения из пробной смски, которую гугл отошлет на указаный номер.
    В поле "статус" на той-же вкладке должна появится зеленая птичка и надпись "Номер телефона успешно проверен"

    2) Скачиваем скрипт работы с календарем gcalcli: http://code.google.com/p/gcalcli/
    Кстати, пока писал статью, случайно обнаружил, что эта программа есть в репозиториях убунты. Не знаю, как она настраивается, поэтому лучше всё-таки скачать эту. Тем более что для установки достаточно пары комманд.
    UPD: Как подсказывают из комментариев, gcalcli есть во многих репах, всё настраивается точно также.

    Последний коммит был в 2007 году, но с тех пор ничего не поменялось (плюс в карму гугла) и скрипт отлично работает.

    wget http://gcalcli.googlecode.com/files/gcalcli-1.4.tgz
    tar xfv gcalcli-1.4.tgz
    rm gcalcli-1.4.tgz


    3) Далее создаем конфиг для gcalcli:
    В домашней папке создаем файл .gcalclirc с таким содержанием:

    Code:
    [gcalcli]
    user: USERNAME
    pw: PASSWORD

    На самом деле настроек гораздо больше, смотреть ./gcalcli --help
    Но на деле этих вполне достаточно для работы из скриптов.

    4) Заветный скрипт sendsms (по аналогии с sendxmpp, sendmail и др.)
    (перед запуском перейдите в папку со своими скриптами. например, ~/bin/ или, как у меня, ~/scripts/)
    wget http://dl.dropbox.com/u/3926517/scripts/sendsms && chmod +x sendsms

    Откройте скрипт и поменяйте значение переменных GCALCLI и LOG на свои (GCALCLI - путь к gcalcli, LOG - путь к лог-файлу)
    Теперь создадим символьную ссылку на него в папке /bin
    sudo ln -s ~/ВАША_ПАПКА/sendsms /bin/sendsms

    скрипт

    Code:
    #!/bin/bash
    
    GCALCLI=gcalcli
    LOG=~/log
    
    if [ ! -f "`which gcalcli 2>/dev/null`" ]; then
     echo "Для работы скрипта необходим gcalcli"
     exit
    fi
    
    time_h=`date "+%H" | bc`
    time_m=`date "+%M" | bc`
    time_m=$((time_m+3))
    
    if [ $time_m -gt 59 ]; then
    time_m=3
    time_h=$((time_h+1))
    if [ $time_h -gt 23 ]; then
    sleep 100
    time_h=0
    time_m=3
    fi
    fi
    
    if [ $time_h -lt 10 ]; then
    time_h="0${time_h}"
    fi
    if [ $time_m -lt 10 ]; then
    time_m="0${time_m}"
    fi
    
    read text
    $GCALCLI --nc quick "$text $time_h:$time_m"
    
    echo "SMS SENT: $text $time_h:$time_m" >> $LOG

    5) И, наконец, использование:
    В любых скриптах вы можете написать
    echo "Test message" | sendsms

    И через минуты 2 вам придет сообщение с похожим текстом "Напоминание: Test message @вс, 16 май 11:42 (antigluk@gmail.com)"

    я так понимаю сообщение остается и на сайте и отправляется на тел сам та в скриптах не очень селен.

  2. #2
    Как-то не могу завести. Все уперлось в сообщение об ошибке:

    Traceback (most recent call last):
    File "/opt/bin/gcalcli", line 59, in <module>
    from gdata.calendar.service import *
    ImportError: No module named gdata.calendar.service
    Гугление показывает, что ошибка возникает на Mac OS 10 (не мой случай), либо при отсутствии python-gdata. Как его поставить - не могу разобраться...

    ЗЫ. WL500GPV1 с прошивкой 1.9.2.7-d-r2174.

  3. #3
    у меня все завелось работает как часы сообщение добавляться а вот напоминание не как не хочет без него добавляться

  4. #4
    Quote Originally Posted by MMax View Post
    Как-то не могу завести. Все уперлось в сообщение об ошибке:


    Гугление показывает, что ошибка возникает на Mac OS 10 (не мой случай), либо при отсутствии python-gdata. Как его поставить - не могу разобраться...

    ЗЫ. WL500GPV1 с прошивкой 1.9.2.7-d-r2174.
    у меня ubuntu у меня в репах а на хрюшке я не знаю как поставить видимо скачать и добавить к python

  5. #5
    Quote Originally Posted by MMax View Post
    Как-то не могу завести. Все уперлось в сообщение об ошибке:


    Гугление показывает, что ошибка возникает на Mac OS 10 (не мой случай), либо при отсутствии python-gdata. Как его поставить - не могу разобраться...

    ЗЫ. WL500GPV1 с прошивкой 1.9.2.7-d-r2174.
    Аналогичная ситуация. Прошивка 1.9.2.7-d-r1825.
    Очень заинтересовала данная тема, так как позволяет отправлять сообщения на оператора МТС (Украина).
    Может у кого-то будут еще идеи как прикрутить єтот "python-gdata package" ?

  6. #6
    вот еще накапал скрипты как отправлять сообщения из php
    http://framework.zend.com/manual/en/....calendar.html

  7. #7
    Quote Originally Posted by gaur View Post
    у меня ubuntu у меня в репах а на хрюшке я не знаю как поставить видимо скачать и добавить к python
    раз уж взялся описывать установку надо все по шагам расписать (для установки на роутер)... указать что необходимо установить
    Code:
    ipkg install python
    ipkg install bc
    изменить путь к "питону" в gcalcli
    скачать и установить:
    http://code.google.com/p/gdata-pytho...-2.0.13.tar.gz
    http://www.labix.org/download/python...til-1.5.tar.gz
    да и все равно мероприятие создает, а напоминания нет ... буду дальше ковырять...

  8. #8
    я так понял в скрипте стоит быстрое " Quick " добавление события и по этому не добавляться напоминала
    я так понемаю нужно переделать в " Remind " напоминание точнее подправить скрипт в файле " sendsms "
    вот еще надыбал на сайте у googla как это сделать
    ниже пояснения и пример реализации
    сам в скриптах не особо разбераюсь


    Создание одного появления события

    События добавляются в календарь путем создания Zend_Gdata_Calendar_EventEntry и наполнения его соответствующими данными. Экземпляр Zend_Gdata_Calendar затем используется для POST XML для конкретных Календаря Google. В этом случае, события, размещенные в календарь из зарегистрированного пользователя.

    Следующие атрибуты события должны быть установлены:

    * Название, устанавливается с помощью SetTitle, указывает заголовок, который появится над событие в Календарь Google пользовательского интерфейса.
    * Когда, устанавливается с помощью setWhen, обозначает время и продолжительность события. Время начала и окончания мероприятия указаны с setStartTime и setEndTime, соответственно, с использованием RFC 3339 отформатированных строк. Весь день события создаются путем указания даты без времени, и нулевой длительности события устанавливаются опуская конец времени полностью. При желании, до пяти напоминания о событии может быть создана путем присоединения их, когда объект. Напоминания будут рассмотрены более подробно далее в этом руководстве.

    Другие полезные функции включают, но не ограничиваясь ими:

    * Автор, получить с помощью getAuthor, могут быть использованы для доступа пользователя, который создал событие. Отметим, что календарь API не будет принимать пользователем представленных новинках данного атрибута.
    * Содержание, устанавливается с помощью setContent, предоставляет дополнительную информацию о событии, которое появляется, когда сведения о мероприятии, предлагается изнутри Календаря Google. При желании, мим описание's типа устанавливается с помощью setType указать HTML вместо обычного текста.
    * EventStatus, устанавливается с помощью setEventStatus, означает ли события подтвердили, предварительное или отменены. См. GD: eventStatus в Google Data Общие элементы ведения списка возможных значений.
    * Прозрачности, задать с помощью setTransparency показывает, является ли событие должны потреблять время на свободном пользователь занят списка.
    * Видимости, устанавливается с помощью setVisibility, позволяет мероприятия, которое будет скрыта от общественности пользователя каналы.

    Для получения полного списка событий атрибутов, обратитесь к пакету данных Google в Zend Framework Документация по API, события такого рода в Google Data API, список общих элементов. Атрибут, который может содержать несколько значений, таких, как, где, реализованы как массивы и должны быть созданы соответствующим образом. Помните, что все эти атрибуты объектов требуют в качестве параметров. Попытка вместо заполнить их с помощью строки или примитивы приведет к ошибкам при преобразовании в XML.

    Code:
    function createEvent ($client, $title = 'Tennis with Beth',
        $desc='Meet for a quick lesson', $where = 'On the courts',
        $startDate = '2008-01-20', $startTime = '10:00',
        $endDate = '2008-01-20', $endTime = '11:00', $tzOffset = '-08')
    {
      $gdataCal = new Zend_Gdata_Calendar($client);
      $newEvent = $gdataCal->newEventEntry();
      
      $newEvent->title = $gdataCal->newTitle($title);
      $newEvent->where = array($gdataCal->newWhere($where));
      $newEvent->content = $gdataCal->newContent("$desc");
      
      $when = $gdataCal->newWhen();
      $when->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00";
      $when->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00";
      $newEvent->when = array($when);
    
      // Upload the event to the calendar server
      // A copy of the event as it is recorded on the server is returned
      $createdEvent = $gdataCal->insertEvent($newEvent);
      return $createdEvent->id->text;
    }
    
    createEvent($client, 'New Years Party',
        'Ring in the new year with Kim and I',
        'Our house', 
        '2006-12-31', '22:00', '2007-01-01', '03:00', '-08' );

  9. #9
    Quote Originally Posted by tempik View Post
    раз уж взялся описывать установку надо все по шагам расписать (для установки на роутер)... указать что необходимо установить
    Code:
    ipkg install python
    ipkg install bc
    изменить путь к "питону" в gcalcli
    скачать и установить:
    http://code.google.com/p/gdata-pytho...-2.0.13.tar.gz
    http://www.labix.org/download/python...til-1.5.tar.gz
    да и все равно мероприятие создает, а напоминания нет ... буду дальше ковырять...
    gdata установился нормально, а при установке python-dateutil-1.5 выдает следующую ошибку:
    #python setup.py install
    Traceback (most recent call last):
    File "setup.py", line 7, in <module>
    from setuptools import setup
    ImportError: No module named setuptools

  10. #10
    Quote Originally Posted by 0be1 View Post
    gdata установился нормально, а при установке python-dateutil-1.5 выдает следующую ошибку:
    #python setup.py install
    Traceback (most recent call last):
    File "setup.py", line 7, in <module>
    from setuptools import setup
    ImportError: No module named setuptools
    Я не стал заморачиваться почему так ... тупа скопировал из тарбола папку dateutil в /opt/lib/python2.5/ и усе ... может вечером доковыряю чтоб все заработало тогда отпишу все по шагам...

  11. #11
    Quote Originally Posted by tempik View Post
    Я не стал заморачиваться почему так ... тупа скопировал из тарбола папку dateutil в /opt/lib/python2.5/ и усе ... может вечером доковыряю чтоб все заработало тогда отпишу все по шагам...
    События создает, но напоминания не создаются и смс не приходят.
    Вот по этой ссылке указано: http://code.google.com/p/gcalcli/


    Not (Yet) Supported:

    * add (non-quick) events with ability to set reminders, repeat, guests, etc
    * configurable reminders (i.e. 30 mins before event every 5 mins)

    Из чего следует, что скрипт пока не поддерживает добавление напоминаний.
    Или у кого-то получилось отправить смс ?

  12. #12

    Post Отправка СМС с помощью google calendar

    У меня получилось отправлять сообщения с роутера с помощью google calendar

    по пунктам

    1. зарегистрироваться на google.com

    2. зайти в апплет "календарь" , там выбрать "настройки календаря"

    3. в настройках выбрать "Настройка для мобильных устройств" там активируете свой телефон

    4. заходите в свой роутер, и устанавливаете сначала питон

    Code:
    ipkg install python
    ipkg install bc
    5. Качайте gdata Google для питона, размер файла большой, поэтому в память роутера не распаковывайте

    Code:
    wget http://gdata-python-client.googlecode.com/files/gdata-2.0.13.tar.gz
    tar xfv gdata-2.0.13.tar.gz
    rm gdata-2.0.13.tar.gz
    6. Устанавливайте gdata
    Code:
    cd gdata-2.0.13
    python setup.py install
    7. создайте папку /opt/etc/calendarSMS

    Code:
    md /opt/etc/calendarSMS
    8. качайте скрипт calendarSMS.py из вложения и размещайте его на устройстве в папку /opt/etc/calendarSMS


    9. В папке /opt/etc/calendarSMS создаем файл calendarSMS.config с таким содержанием:

    Code:
    [sendsms]
    user: <username>
    pw: *******
    starttime: 120
    endtime: 180
    remindertime: 1
    calendar:fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com
    attempt:11
    delay:5
    10. Установка ntpclient для синхронизации времени

    Code:
    ipkg install ntpclient
    для синхронизации времени (Украина)

    Code:
    ntpclient -s -h 1.ua.pool.ntp.org
    11. создайте файл sendsms в папке /opt/etc/calendarSMS с содержанием:


    Code:
    #!/bin/sh
    PINGRESOURCE=google.com
    message=""
    
    case $# in 0)
     echo " sendsms [-inet] [-?] [-sync] [сообщ]"
     echo " "
     echo "  -inet 	позволяет перед отправкой проверить "
     echo "		доступ к интернету(google.com), "
     echo "		пока интернет не появится сообщение не отправится"
     echo " "
     echo "  -? 		эта справка"
     echo "  -sync 	перед отправкой синхронезировать время"
     echo "  сообщ 	сообщение которое будет отправлено"
     
    exit 3;
    ;;
    esac
    
    for p in $*;
     do
      case "$p" in -?)
       echo " sendsms [-inet] [-?] [-sync]  [Сообщение]"
       echo " "
       echo "  -inet 	позволяет перед отправкой проверить "
       echo "		доступ к интернету(google.com), "
       echo "		пока интернет не появится сообщение не отправится"
       echo " "
       echo "  -? 		эта справка"
       echo "  -sync 	перед отправкой синхронезировать время"
       echo "  сообщ 	сообщение которое будет отправлено"
       exit 0
      ;;
       -inet)
       while (! ping -c 3 -w 3 -W 2 ${PINGRESOURCE} >/dev/null  2>&1) do
       echo "calendarSMS: Сообщение не отправлено, подключение к интернету не обнаружено!!! "
       logger "calendarSMS: Сообщение не отправлено, подключение к интернету не обнаружено!!! "
       sleep 10s
       done
      ;;
      
      -sync)
       logger "calendarSMS:  Synchronizing time"
       if (! ntpclient -s -h pool.ntp.org >/dev/null  2>&1) then
        echo "calendarSMS: Не установлен ntpclient время не будет синхронезировано"
        logger "calendarSMS: Не установлен ntpclient время не будет синхронезировано"
       else
       logger "calendarSMS:  Synchronizing time"
       fi
      ;;
    
      *)
      message="$message $p"
      ;;
      esac
     done
    
    logger "calendarSMS: стартуем отправку SMS"
    log=`/opt/etc/calendarSMS/calendarSMS.py --title "$message"`
    echo "calendarSMS: $log"
    logger "calendarSMS: $log"
    даем права на запуск
    Code:
    chmod 777 /opt/etc/calendarSMS/sendsms
    12. Сохранение изменений

    Code:
    flashfs save&&flashfs commit&&reboot
    11. собственно сама отправка СМС

    Code:
    sendsms [text]
    отправка sms с проверкой доступности интернет(пинг google.com)

    Code:
    sendsms -inet [text]
    отправка sms с синхронизацией времени

    Code:
    sendsms -sync [text]
    пример
    Code:
    /opt/etc/calendarSMS/sendsms hello world
    Конфигурационный файл /opt/etc/calendarSMS/calendarSMS.config
    пример содержимого файла
    Code:
    [sendsms]
    user: vassio
    pw: *******
    starttime: 120
    endtime: 180
    remindertime: 1
    calendar: fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com
    attempt:11
    delay:5
    user аккаунт google
    pw пароль к аккаунту google
    starttime указывает через какое время будет начато мероприятие(в секундах)
    endtime указывает через какое время будет закончено мероприятие(в секундах)
    remindertime время напоминания(в минутах)
    calendar Идентификатор календаря (например fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com) . Можно посмотреть в настройках на https://www.google.com/calendar/render?tab=wc
    attempt Максимальное количество попыток установить новое напоминание в календарь
    delay Время ожидания между попытками

    Дополнительно

    1. Что бы при включении роутера отправлялось СМС с текущим IP адреса сервера, в файле /usr/local/sbin/post-mount добавить строчки

    Code:
    logger "Synchronizing time"
    ntpclient -s -h 1.ua.pool.ntp.org
    logger "sendsms:Отправляем информацию об успешной загрузке"
    sleep 5s                  
    ipaddr=`nvram get wan0_ipaddr`
    smslog=`/opt/etc/calendarSMS/sendsms -inet -sync "Your router $ipaddr is loaded"`
    logger $smslog
    2. Уведомление о закачке торрента в rtorrent
    в /opt/etc/rtorrent.conf дописать

    Code:
    on_finished=send_finish_sms,"execute = /opt/etc/calendarSMS/sendsms,Торрент,$d.get_name=,успешно,скачан"

    3. Уведомление о закачке торрента в Transmission



    Обновление(30.11.2010) Версия 2.0:
    - Добавил: при ошибке установлении оповещения на событие в календаре, событие удаляется и создается заново
    - в описании установки добавил установку ntpclient, ntp клиента для синхронизации времени

    - Переписал руководство по установке(для поддержки отправки сообщения не только под рутом)
    - Добавил: описание отправки СМС с rtorrent при завершении закачки

    Обновление(1.12.2010) Версия 2.1:
    - Исправил: при добавление напоминания к событию к календарю по умолчанию ставится тип напоминания SMS
    - переписал скрипт sendsms
    -Добавил: отправка СМС с ожиданием пока не появится интернет
    -Добавил: синхронизация времени
    -Добавил: для отправки текста не обязательно его брать в кавычки

    Обновление(10.12.2010) Версия 2.2:
    - Исправил: отправка смс кириллицей
    - Добавил: если добавить напоминание не удалось, то перед добавлением нового идет ожидание в течении 2 сек.
    -Добавил: попыток пересоздания события в случае ошибки увеличено до 10

    Обновление(22.05.2012) Версия 3.0:
    -Добавил:Возможность выбрать Календарь, в который будут записываются события
    -Добавил: Возможность указать кол-во попыток добавления в календарь и время ожидания между попытками
    -Исправил: В случае ошибки добавления напоминания событию в календаре, это событие удаляется и создается новое
    Attached Files Attached Files
    Last edited by vassio; 22-05-2012 at 11:20. Reason: Обновление 22.05.2012

  13. #13
    Проверил. Все работает! Спасибо! Вот только бы еще время напоминания не через 10 минут, а хотя бы через минуту. Смски приходят только через 10 минут.

  14. #14
    Quote Originally Posted by 0be1 View Post
    Проверил. Все работает! Спасибо! Вот только бы еще время напоминания не через 10 минут, а хотя бы через минуту. Смски приходят только через 10 минут.
    там в скрипте можно поправить посмотри там есть 10 мин тоесть напоминание через 10 мин выстави 1мин
    и поменяй 800 поменяй на 120 а 1200 на 420 и будет тебе счастье
    у меня другой вопрос отправляется только одно слово если стоит пробел между ними то уходит только одно слово
    Last edited by gaur; 26-11-2010 at 14:17.

  15. #15
    Quote Originally Posted by gaur View Post
    там в скрипте можно поправить посмотри там есть 10 мин тоесть напоминание через 10 мин выстави 1мин
    и поменяй 800 поменяй на 120 а 1200 на 420 и будет тебе счастье
    у меня другой вопрос отправляется только одно слово если стоит пробел между ними то уходит только одно слово
    Обновил скрипт calendarSMS.py

    для отправки нескольких слов ставь весь текст в кавычки.... Примерно так

    Code:
    python calendarSMS.py  --title "слово1 слово2 слово3"

Page 1 of 7 123 ... LastLast

Similar Threads

  1. Подключаем USB HDD к роутеру
    By Hornet in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 3172
    Last Post: 31-08-2011, 13:03
  2. IDE Platte mit SATA Festplaten-Konvert anschliessen
    By spankingherr in forum German Discussion - Deutsch (DE)
    Replies: 0
    Last Post: 24-04-2009, 18:11
  3. Тормоза при подключении винта
    By Diz74 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 14
    Last Post: 15-08-2008, 10:07

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •