Este articulo es una guía para usar el servicio de envío de SMS provisto por el proveedor
SMSMASIVOS (ver http://www.smsmasivos.com.ar/ ).
Seteo inicial del entorno
La arquitectura de mensajería soporta
múltiples servidores de ingreso y egreso de mensajes. Como tal el
primer paso es configurar un servidor de SMS saliente en el entorno.
Ingresar con una cuenta que tenga
permisos de administrador y abrir el menú “Administración” ->
“Mensajería” -> “Nuevo Servidor”
Completar los campos como se muestra a
continuación:
Tomar nota del código asignado al
servidor, en este caso es el “2”
Una vez creado el servidor saliente,
hay que indicar que este será el servidor por defecto. Para eso hay
que editar el archivo /www/includes/configuration/any.php
y agregar un define con el dato.
//Fin
de la configuración
define("DEFAULT_SMS_SERVER",2);
En este caso, ponemos el valor “2”
que es el código del servidor recién creado. En cada implementación
el numero puede ser diferente.
Uso del servicio:
- a) Incluir el archivo “common/cmessaging.php” al comienzo del script.
- b) Crear un objeto mensaje ( $msg = new cmessage(); )
- c) Invocar al método SendSMS ( $msg->SendSMS(); )
Ejemplo:
Se crea una clase y un formulario para
enviar mensajes SMS. El código de envío se implementa en el hook.
Clase (Modelo):
<!--
Clase SMS TEST -->
<make
object="class">
<build
out_file="csms_test.php"
classname="csms_test"
classlabel="Test
SMS">
<parse
tablename="reg_test"
/>
<field
name="sms_destino"
type="varchar"
size="30"/>
<field
name="sms_mensaje"
type="varchar"
size="140"/>
</build>
</make>
La
clase define dos campos, uno para el numero de teléfono y otro para
el mensaje a enviar.
Table
Maint (Vista):
<!--
ABM de SMS TEST -->
<make
object="table_maint">
<build
out_file="sms_maint.php"
classname="csms_test"
title="Test
de envio de SMS">
<group
title="Mensaje"
id="basicos">
<field
name="sms_destino"
presentation="PHONE"
label="Destino"
ismandatory="true"
note="Usar
formato 15-4444-5555"/>
<field
name="sms_mensaje"
presentation="TEXTAREA"
label="Mensaje"
ismandatory="true"
rows="2"
cols="70"/>
</group>
</build>
</make>
El
formulario simplemente presenta estos dos campos al operador.
Hook (controller):
<?php
include_once
"common/cmessaging.php";
class
csms_test_hooks extends
cclass_maint_hooks {
public
function canSaveDB()
{
return
false;
}
public
function beforeSaveDB() {
$err
= array();
$data
= $this->m_data;
$dest
= $data->getField("sms_destino")->getValue();
$mensaje
= $data->getField("sms_mensaje")->getValue();
$msg
= new cmessage();
$ret
= $msg->sendSMS(DEFAULT_SMS_SERVER,$dest,$mensaje);
if($ret!="OK")
$err[]
= "MENSAJE: ".$ret;
return
$err;
}
}
?>
El
Hook utiliza el método beforeSaveDB() y el canSaveDB() para evitar
que el framework quiera salvar el registro a la base de datos
(recordar que la clase no se basa en una tabla real en la base).
Se
recuperan los valores del formulario y se los pasa al método
sendSMS() para el envío del mensaje. Si todo esta bien, el servicio
contesta “OK” caso contrario responde con el mensaje de error
apropiado.
En
este ejemplo, el mensaje de error, se empuja al usuario, con el
prefijo “MENSAJE: “ (Si no se le pone este prefijo, el error no
llega al usuario, solo va a los logs de errores).
Proceso de la cola de mensajes:
Para que los mensajes efectivamente salgan a la calle, hay que ejectuar un proceso de envío de la cola de mensajes. Es semejante al proceso de envío de mails.
Crear
un script:
#!/bin/bash
#Envio
mensajes
cd
/Users/jcordero/plataforma4/modules/messaging
/Applications/XAMPP/xamppfiles/bin/php
-dinclude_path=.:/Users/jcordero/plataforma4_sites/roac/www/includes:/Users/jcordero/plataforma4/includes
-f email_process.php $1
/Applications/XAMPP/xamppfiles/bin/php
-dinclude_path=.:/Users/jcordero/plataforma4_sites/roac/www/includes:/Users/jcordero/plataforma4/includes
-f sms_process.php $1
En
este script deberá ajustar:
- La ubicación del ejecutable php
- La ubicación del sitio del proyecto y su nombre
- La ubicación del código de plataforma4
Una
vez creado el script apropiado (verificar bien los paths). En el
ejemplo yo llame el script “run.sh”
Darle
permiso de ejecutable con “chmod +x run.sh” y acceso a la cuenta
del cron de ser necesario.
Finalmente
hay que modificar el crontab del sistema.
Hacerlo
con el comando crontab -e (editar)
*
* * * * /Users/jcordero/plataforma4/modules/messaging/run.sh
www.ombu-test.com.ar
Nuevamente
ajustar el path absoluto adonde se encuentra el script anterior
(run.sh). Pasarle el ultimo valor con el identificador del sitio.
El
editor del crontab es el “vi” así que recuerden que se inserta
con la “i”, borra con la “x” y se sale con “ESC” ->
“:” -> “wq”
Las
cinco * indican que el script se ejecutara una vez por minuto.



No hay comentarios:
Publicar un comentario