Google-Calendar API+GMAIL=FREE SMS ALERTS
Bueno, como podeis leer, gracias a la API de Calendar, y con una cuenta en Google Mail, podremos tener alertas gratuitas
en forma de SMS. Para hacerlo, seguiremos estos pasos, y además utilizaremos el pequeño programa en PHP que yo mismo he diseñado!
Tenemos que tener una cuenta en GMAIL, con ella crear un calendario nuevo, y en configuración, activar un telefono mobil
(enviara un codigo por SMS, lo poneis en la web, y activado).
Lo que el script hace es comprobar la cuenta de correo con la funcion IMAP de PHP, selecciona unicamente los NO-LEIDOS,
y los guarda en una variable, que luego introduzco como campo en un evento nuevo en calendario,
que se guarda como forma de recordatorio un SMS a enviar en un minuto, por tanto, el correo nuevo se enviara a tu movil sin ningun coste!!
Ahora, para hacer que funcione el Script, tendremos que descargarnos el FrameWork ZEND (Zend Framework 1.9).
Lo descargais y lo descomprimis todo en /opt/, luego en el archivo /etc/php5/apache2/php.ini , debereis indicar la ruta en el parametro path_include , os debera quedar asi:
include_path = «.:/opt/zend/library/»
Ahora instalamos las funciones IMAP para PHP5 (con la que podremos descargar correos con PHP..)
sudo apt-get install php5-imap
Y este es el codigo que he hecho, si lo quereis probar (esta un poco sin depurar), utilizarlo en un servidor Apache,
y modificar los campos E-mail, y pass, para que se loguee correctamente en vuestra sesion de Gmail.
<?php
/*Script creado por XaviGonzalez https://xavigonzalez.wordpress.com para crear eventos en Google Calendar con los mensajes nuevos de GMAIL y ser recordado con un SMS. Espero que sea de vuestro agrado. Cualquier duda o consulta: xavi.coupe@gmail.com */
$hostname = ‘{imap.gmail.com:993/imap/ssl}INBOX’;
$username = ‘TUCUENTA@gmail.com’;
$password = ‘CONTRASEÑA’;/* Intento de conexión */
$mbox = imap_open($hostname,$username,$password) or die(‘Cannot connect to Gmail: ‘ . imap_last_error());for ($i = 1; $i <= imap_num_msg($mbox); $i++)
{
$header = imap_headerinfo($mbox, $i, 80, 80);
if($header->Unseen == ‘U’ || $header->Recent == ‘N’) //Strange Behaviour in PHP
{
echo ‘<div>’;
$fromemail = $header->from[0]->mailbox.’@’.$header->from[0]->host;
$from = (strlen($header->from[0]->personal)>2) ? $header->from[0]->personal.’ <‘.$fromemail.’>’ : $fromemail;
$body2=imap_body($mbox , $i);
$subject = $header->fetchsubject;/* Comentado para no mostrar las variables
echo $from;
echo $fromemail;
echo $subject;
$body = $body[‘body’];
echo $body2;
echo ‘</p></div>’;*/}
}
require_once ‘Zend/Loader.php’;
Zend_Loader::loadClass(‘Zend_Gdata’);
Zend_Loader::loadClass(‘Zend_Gdata_ClientLogin’);
Zend_Loader::loadClass(‘Zend_Gdata_Calendar’);
Zend_Loader::loadClass(‘Zend_Http_Client’);
Zend_Loader::loadClass(‘Zend_Gdata_Extension_When’);
// Parameters for ClientAuth authentication$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = «TUCUENTA@gmail.com»;
$pass = «CONTRASEÑA»;// Crear una autentificacion de cliente HTTP
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);// Crear una instancia en el servicio del Calendario
$service = new Zend_Gdata_Calendar($client);// Crear una nueva entrada en el calendario
$event= $service->newEventEntry();// Poner el contenido deseado, en este caso las variables
$event->title = $service->newTitle($subject);
$event->where = array($service->newWhere(«$body2»));
$event->content =
$service->newContent($body2);// Set the date using RFC 3339 format.
$data=date(«Y-m-d»);
$hora=date(«H:i»);
$startDate = $data;
$startTime = «$hora»;
$endDate = $data;
$endTime = «$hora»;
$tzOffset = «+01»;$when = $service->newWhen();
$when->startTime = «{$startDate}T{$startTime}:00.000{$tzOffset}:00»;
$when->endTime = «{$endDate}T{$endTime}:00.000{$tzOffset}:00»;// Crear un recordatorio al usuario en 5 min
$reminder = $service->newReminder();
$reminder->method = «sms»;
$reminder->minutes = «5»;// Aplicar
//$when = $event->when[0];
$when->reminders = array($reminder);$event->when = array($when);
// Subir el evento al calendario
$newEvent = $service->insertEvent($event);?>
Y eso es todo. Ojala os sirva!
[…] Google-Calendar API+GMAIL=FREE SMS ALERTS […]
Muy buenas:
Me interesaría hacer un sistema de avisos via sms como lo has hecho tu. Lo que pasa es que el tema web no lo domino mucho (mas bien nada) y la explicación que has dado es mas para entendidos que para usuarios que , como yo, no hemos tocado nada de esto todavía.
No se que uso necesitás darle al sistema de avisos, pero quizás pueda ayudarte con el tema
Hola Jose, perdona que tarde tanto en contestar. La verdad es que es un código sin «depurar» por decirlo de alguna manera.
Entonces no es un código que sea fácil de implementar, ya que habría que mejorarlo primeramente. Además, con los SmartPhones con conexión a Internet esto ya no interesa. Se ha quedado algo desfasado. De todas maneras, gracias por visitar mi blog!
No me parece estar desfazado, si lo vemos desde el punto de vista de lo «Estandar» es decir crear en una pagina funcionalidad que trabaje casi con todos los tipos de celulares y demas .. pq no todos tenemos un SmartPhone.
Me encanta este post .. es el unico que dice que lo puede hacer (enviar sms aprovechando las librerias de google ):D , en google se niegan a poner la funcionalidad de envio de sms mas alla de GoogleCalendar.
Aun ando probando este codigo pero no me sale :P. Muchas gracias por el dato.
[…] Php con los que recibiriamos alertas SMS gratis a nuestro movil cada vez que nos llegara un Mail. Lo podeis ver aquí. Viendo el “exito” que tuvo, he decidio hacer un poco más sencillo, pero seguramente […]
Hola , yo tengo windows y creo que esas instrucciones no valen para este sistema. O creo que yo soy incapaz de hacerlo funcionar, ya que no veo la carpeta opt.
Podrías darnos algún tutorial para correrlo en windows?
me gustaria saber si se puede enviar y recivir sms desde una aplicacion web con eso gracias