Hola el otro día vi en el blog de Ivan López como usaba las alarmas del google calendar, para enviarse SMS al móvil con 'alertas', y así poder tener controlado sus servidores.
El 'problema', es que esta en java, así que decidí hacer lo mismo pero en php, para que mas gente pudiese usarlo.
El modo de empleo es el mismo, necesitas PHP 5.1.4 o superior (son las necesarias para usar la API) y las librerías ZEND de Gdata.
Para mas información del uso de la API se puede mirar directamente a la web de google code.
PHP:
-
<?
-
/*
-
** Generador de alertas sms a traves de google
-
** Basado en el de Ivan Lopez (lopezivan.blogspot.com)
-
** Elias Badenes, 2007
-
** elias (at) badenes (dot) es
-
*/
-
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');
-
-
function crearAlerta($cliente, $texto) {
-
date_default_timezone_set('Europe/Madrid');
-
-
$gdataCal = new Zend_Gdata_Calendar($cliente);
-
$evento = $gdataCal->newEventEntry();
-
-
$startDate = $dia;
-
$endDate = $dia;
-
$tzOffset = '+02'; //en verano '+02' en invierno '+01'
-
$startTime = $hIni;
-
$endTime = $hFin;
-
-
//asigno el texto
-
$evento->title = $gdataCal->newTitle($texto);
-
-
//Asigno el tiempo
-
$cuando = $gdataCal->newWhen();
-
$cuando->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00";
-
$cuando->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00";
-
-
//alerta sms
-
$metodo = 'sms'; //alert, email o sms
-
$alerta = $gdataCal->newReminder();
-
$alerta->setMinutes(5);
-
$alerta->setMethod('sms');
-
-
-
$a = $gdataCal->insertEvent($evento);
-
}
-
echo "Uso: $argv[0] <usuario> <password> <texto>\n";
-
}
-
-
$usuario = $argv[1];
-
$password = $argv[2];
-
$texto = '';
-
-
for($i=3; $i<$argc; $i++) {
-
$texto .= $argv[$i].' ';
-
}
-
-
$servicio = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
-
$cliente = Zend_Gdata_ClientLogin::getHttpClient($usuario, $password, $servicio);
-
?>
Espero que lo disfruteis.
Entradas Relacionadas
Tags: google, programacion
ooohh! si señor facil rapido y sencillo XD
Eres el amo.
y limpio, te has dejado limpio, parece q vida de esto y to
Hola,
como ya te he respondido en mi blog, no hay ningún problema en que hayas “convertido” el código a php. Si más gente lo puede utilizar, perfecto. Has respetado los créditos que es lo único que pedía. Muchas gracias y buen trabajo.
Saludos, Iván.
Alarmas Sms (gracias a google)…
Pequeño script en PHP para mandarte alertas SMS….
Tengo apache2 instalado y php5 en mi ubuntu.
pero me da un error al abrir el fichero en el navegador.
Parse error: syntax error, unexpected T_DNUMBER in /srv/www/sms/index2.php on line 17
Me descargue la libreria de donde indicas aqui, librerías ZEND de Gdata pero no se que hacer con ella.
Hace falta el eclipse?????
Un saludo y gracias
[...] correos, pop-ups cuando estas en la cuenta o bien envio de mensajes al celular. En esta otra Web, Elias Baldenes implemento a partir de una libreria Java desarrollada por Iván Lopez el envio de mensajes en [...]
Olé por tí.
Muchas gracias.
Y para las Islas Canarias, $tzOffset = ‘+01′;
Además, está clarito, clarito.
Salu2
A.
Hola otra vez.
Leyendo más despacio y pasada la emoción inicial,
me he dado cuenta de que en el default timezone se le puede poner ‘Atlantic/Canary’
y ponerle el offset a 0
y sobre la variable ‘metodo’, ¿ te parece bien esto: ?
$metodo = ‘alert’; //alert, email o sms
…
$alerta->setMethod($metodo);
no ví que ‘metodo’ se usase salvo cuando le asignas un valor.
Y de ahí a poner el tipo de alerta como parámetro es solo un pispas.
O sea, que se puede usar el Calendar como un registro de errores y, si el error es muy grave, alerta sms al canto.
No sabeis cómo os lo agradezco a tí, Elias, y a Iván publicar esto.
Salu2
A.
Showman: Podrías pasarme el código en esa linea y le hecho un vistazo. Y yo no uso el eclipse para nada.
Alejandro: Como ya te he dicho por e-mail, lo hice para una cosa especifica, ahora la gente que lo adapte como crea conveniente para sus necesidades.
Gracias a ambos dos por leerme
Hola Elias,
Tengo una duda, sigue funcionando? o han cambiado las librerias? Muchas gracias!!!
Un saludo!
Como puedo probar este codigo en local?, alguien le funciona?, a mi no. Hay que añadirle alguna linea de codigo mas, alguna variable.
Buenas,
he realizado un par de modificaciones al script que permite indicar el calendario en el que queremos insertar el enveto (si no queremos indicar ninguno poner ‘default’) y cambio automático en invierno y verano en función de la zona horaria en la que nos encontremos. Yo lo ejecuto desde el prompt de la siguiente forma:
php5 GMailNotifier.php mi.direccion@gmail.com mi_password “mi_calendario” “Hola desde GNotifier”
Lo he modificado porque trabajo con varios calendarios. Me he creado un calendario para estas notificaciones así no se mezclan con las de otros calendarios. Espero que os sirva de ayuda.
newEventEntry();
//asigno el texto
$evento->title = $gdataCal->newTitle($texto);
//Asigno el tiempo
$cuando = $gdataCal->newWhen();
//Hora actual +6 Y +7 minutos en formato [UTC]
$cuando->startTime = date(“c”,strtotime(“+6 minutes”));
$cuando->endTime = date(“c”,strtotime(“+7 minutes”));
//alerta sms
$metodo = ‘sms’; //alert, email o sms
$alerta = $gdataCal->newReminder();
$alerta->setMinutes(5);
$alerta->setMethod(‘sms’);
$cuando->setReminders(array($alerta));
$evento->when = array($cuando);
//obtenemos el listado de todos los calendarios del usuario
$calFeed = $gdataCal->getCalendarListFeed();
echo “Calendarios Disponibles: \n\n”;
foreach ($calFeed as $calendar) {
echo ” \t\t” . $calendar->title->text . “\n”;
/*
si el calendario es el especificado nos quedamos con su ID $calURI
*/
if ( $calendar->title->text == $calendario ){
$ourCalUrl = explode(‘/’,$calendar->id);
$ourCalUrl = ‘http://www.google.com/calendar/feeds/’ . $ourCalUrl[6] . ‘/private/full’;
$calUri=$ourCalUrl;
}
}
/*
si existe el calendario indicado inserta el evento en ese calendario
sino se inserta en el calendario del usuario que tiene establecido como por defecto
*/
if (isset($calUri)){
echo “\n Insertando Alerta en $calendario: “.$texto.”\n”;
$calUri=str_replace(‘%40′,’@',$calUri);
$a = $gdataCal->insertEvent($evento, $calUri);
}else{
echo “\n No existe el calendario \”$calendario\”, se inserta en el calendario por defecto \n”;
$a = $gdataCal->insertEvent($evento);
}
}
if(count($argv) <5) {
echo “Uso: $argv[0] \n”;
die();
}
$usuario = $argv[1];
$password = $argv[2];
$calendario = $argv[3];
$texto = ”;
$argc = count($argv);
for($i=4; $i
Un Saludo,
Isma.
/ \
Gracias por tu aporte! esta tarde lo añado al propio post
Entonces..si que funciona?
Un saludo!
Si Marta, funciona. Copiate y pega el código fuente en nuevo fichero. Bájate la librerías de Zend para GData (puedes bajartelo de: http://framework.zend.com/rele.....7.4.tar.gz ).
Abre el *.tar.gz y dentro de él vete a ZendGdata-1.7.4 -> library
Hay una carpeta que se llama “Zend”. Cópiala en la misma carpeta en la que hayas guardado el script.
Te debe quedar de la siguiente forma:
GMailNotifier.php <—- Este es el script
Zend <—- Este es el directorio existente dentro del *.tar.gz
La carpeta Zend debe contener, por ejemplo, directorios como: GData, Http, Mime, Uri, Validate y otros archivox PHP, como por ejemplo: Exception.php, GData.php…. etc …etc…
Yo lo ejecuto desde la shell de Linux con la orden ‘php5′ pero también se podría ejecutar desde Windows (aunque yo no se por qué, a mi personalmente no me mola un huevo Windows, será por que soy administrador de Sistemas Unix? ….
será por deformación profesional …).
Un Saludo,
Isma.
/ \
Muchas gracias Isma!!!!Ya he creado una alerta! yuju!
Yo estoy empezando con Linux (Ubuntu 8.10) y la verdad es que cuesta empezar, pero luego te acostumbras y ofrece más ventajas.
Aqui os dejo un enlace de un interface web para motion:
http://code.google.com/p/kmotion/
Un saludo!!!!