Voy a explicar como crear un servicio de avisos por SMS con la renovada api de google calendar (la han actualizado hace poco) y PHP.
En el ejemplo explico la creación de una función PHP que nos añade eventos en google calendar con notificación SMS para recibirlos en nuestro móvil vía SMS .
Lo primero es crear una cuenta o loguearnos en google calendar (si tienes una cuenta google para otro servicio también nos sirve).
Una vez dentro clickamos sobre Configuración/Cofiguración de Calendar y luego en la pestaña Configuración para móviles. Una vez verifiquemos nuestro móvil (nos envían un mensaje con un código) ya no tendremos que hacer nada más en google calendar.
*Puedes hacer pruebas en google calendar añadiendo eventos con aviso de notificación por móvil. Te llegará un mensaje con el título del evento, el lugar y la hora 😀
Ahora vamos a utilizar el potencial de google calendar para enviar desde nuestro servidor avisos por SMS.
Por ejemplo cuando deja de hacer ping nuestro servidor, cuando falla el backup, cuando nos hacen un pedido … como ves tiene multitud de aplicaciones.
Tenemos que tener en nuestro servidor instalado Zend Gdata. (link de descarga al final)
Si no quieres cargar los módulos siempre desde PHP.ini puedes hacerlo manualmente cuando te haga falta simplemente incluyendo la ruta donde se encuentra la librería (tal y como explico en el siguiente código)
<?php // Carga manual de librerías Zend_Gdata ini_set('include_path', '/ruta hasta las librerías/ZendGdata-1.11.0/library'); require_once ('/ruta hasta las librerías/ZendGdata-1.11.0/library/Zend/Loader.php'); // Declaramos las clases 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'); // Función para crear evento SMS en Google Calendar //Título indica el título del SMS; Texto indica parte del cuerpo del SMS; //Minutos indica la demora del aviso; Email indica el login de la cuenta //Password indica la contraseña de la cuenta function crearEventoSMS ($titulo, $texto='', $minutos=5, $email='micuenta@gmail.com', $password='micontraseña') { // Nombre del servicio de Google Calendar $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; $client = Zend_Gdata_ClientLogin::getHttpClient($email,$password,$service); $gdataCal = new Zend_Gdata_Calendar($client); $event = $gdataCal->newEventEntry(); $event->title = $gdataCal->newTitle($titulo); // Añadimos texto if($texto!=''){ $event->where = array($gdataCal->newWhere($texto)); $event->content = $gdataCal->newContent("$texto"); } // Calculamos la hora de creación del evento con la demora incluida para que nos avise $time=time()+$minutos*60; // Hora en formato RFC 3339 $endDate = $startDate = date("Y-m-d", $time); $endTime = $startTime = date("H:i", $time); $tzOffset = "+01"; $when = $gdataCal->newWhen(); $when->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00"; $when->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00"; // Añadimos el recordatorio SMS $reminder = $gdataCal->newReminder(); $reminder->method = "sms"; // Tiempo de adelanto (no tiene sentido en el ejemplo actual) $reminder->minutes = 0; // Aplicamos $when->reminders = array($reminder); $event->when = array($when); // Añadimos el evento a google calendar $newEvent = $gdataCal->insertEvent($event); } ?>
Para añadir notificaciones ya solamente tenemos que llamar a la función (por supuesto debemos incluirla en nuestro código)
<?php // Requerimos el archivo de la función require_once('ruta_hasta_nuestra_funcion.php'); // La llamamos crearEventoSMS('SinPing'); // Otra llamada para dentro de 2 horas crearEventoSMS('ComprobarPago', 'Tenemos que comprobar pago XXX', 120); // Otra llamada para otra cuenta que no es la default crearEventoSMS('EncargoOnline', 'El cliente tal tiene avería.', 10, 'fontanero@gmail.com', 'chirigota'); ?>
Espero que les sirva de utilidad 😀
– Documentación Api Google Calendar
Entradas relacionadas
- » Problema al actualizar PHP 5.3 - XCache requires Zend Engine API version
- » Mostrar url competa en la barra de dirección de Firefox
» Actualizar Repositorios Centos 5.5 64 bits
» Averigua cuanto tarda en cargar tu sitio web desde todo el mundo con Internet Supervicion
» Ordena y edita tablas en javascript con EditableGrid
8 Comentarios
Muy bueno, oye y lo puedo aplicar a mi website?
Se puede adaptar y acoplar a todo lo que se te ocurra 😀
Hola, ante todo, perdona mi ignorancia,lo he revisado mil veces y me da un error que no debería …
Warning: require_once(/ZendGdata-1.11.0/library/Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in C:\AppServ\www\EnvioSMS\enviasms.php on line 4
Fatal error: require_once() [function.require]: Failed opening required ‘/ZendGdata-1.11.0/library/Zend/Loader.php’ (include_path=’/ZendGdata-1.11.0/library’) in C:\AppServ\www\EnvioSMS\enviasms.php on line 4
Podrías ayudarme .. mil gracias y saludos!!!
asegúrate de que tienes la librería zend instalada en la ruta que le indicas (o si ya la tienes/activada) no hace falta añadirla
la carga manual de librerías requiere indicar la ruta correcta a los archivos
wowwww….. genial….. la use desde localhost y wualaaaa..
excelente………. gracias
Perdón por escribir en una entrada tan antigua.
Yo usaba un código parecido y andaba de lujo, pero desde hace unas semanas ya no funciona. ¿Alguien sabe si recientemente a cambiado google algo de la api?
no encuentro comentarios al respecto por toda la web.
Como nota final diré que primero dejó de funcionar como un día, luego resucitó unas horas y finalmente murió.
Gracias y saludos.
Ey! disculpa la tardanza, a mí me sigue funcionando con normalidad 😀
estimados, desde el 17 de noviembre creo que no está funcionando. Alguien tiene alguna solución? Saludos
1 Trackbacks and Pingbacks
[…] [TUTORIAL] Crear servicio de aviso por SMS con google calendar y PHP […]
Escribir un Comentario