Pull to refresh

SMS Уведомления + Логирование событий в Google Calendar на PHP

Reading time 2 min
Views 2.6K
Навеяло: Чудеса автоматизации или как отправляют SMS настоящие гики.
Если люди делают такие изощрения — значит сильно надо.

За пару часов был разработан класс для добавления в Google Calendar событий. А уже календарь гугла станет нам слать СМСки.

Для использования нам нужно правильно настроить наш каллендарь(стоит завести для этого отдельный аккаунт):
1. Установить часовой пояс календаря такойже как на сервере.
2. Настроить СМС уведомления (Настройки -> Настройка для мобильных устройств)
3. Настроить уведомление по умолчанию для календаря.(Настроки календаря — Уведомления)
Ставим по умолчанию уведомить за 1 минуту до события по СМС. Можно добавить Дополнительно уведомление по почте.
Всё. Календарь подготовлен.

Для работы скрипта нам понядобится часть ZendFramework.
Набор классов gdata: framework.zend.com/download/gdata.

И код скрипта с классом и примером использования:

<?
  require_once 'Zend/Loader.php';
  Zend_Loader::loadClass('Zend_Gdata');
  Zend_Loader::loadClass('Zend_Gdata_AuthSub');
  Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
  Zend_Loader::loadClass('Zend_Gdata_Calendar');

  class GCAlerter
  {
    public $gcCalendar;
    public $gcTimeCorrect;
  
    public function __construct($user, $pass, $tc)
    {
      $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, "cl");
      $this->gcCalendar = new Zend_Gdata_Calendar($client);
      $this->gcTimeCorrect = $tc;
    }
  
    public function Alert($text)
    {
      $quickAddText = "$text ".date("h:i",time() + $this->gcTimeCorrect);
      $event = $this->gcCalendar->newEventEntry();
      $event->content = $this->gcCalendar->newContent($quickAddText);
      $event->quickAdd = $this->gcCalendar->newQuickAdd('true');
      $newEvent = $this->gcCalendar->insertEvent($event);
      return $newEvent->id->text;
    }
  }
  
  $user = "mycal@gmail.com";
  $pass = 'mypass';
  $timecorr = 2*60;// 2*60 = 2 min, 10*60 = 10min

  $gcAlerter = new GCAlerter($user, $pass, $timecorr);
  $gcAlerter->Alert("OMG I`m die!!!");
?>


* This source code was highlighted with Source Code Highlighter
.


$timecorr — переменная корректировки времени.
Время на сервере и время гугла могут различаться изза неверного времени сервера. Не всегда есть возможность это исправить.
По сути — этим параметром подгоняем нужное время так, чтобы уведомление приходило не позднее, чем через минуту после события.
Tags:
Hubs:
+19
Comments 18
Comments Comments 18

Articles