La biblioteca tiene una aplicación de ejemplo por cada PDU del protocolo SMPP. Las aplicaciones se ejecutan sin parámetros y la idea es probar las funciones de la API a través de una serie de pasos:
Declarar 2 variables del mismo tipo, y cargar los campos que la componen en una de ellas.
Hacer un dump del PDU para ver la totalidad de los campos de la estructura.
Empacar la estructura en un buffer y hacer un dump del mismo.
Desempacar el buffer sobre la segunda variable definida en el punto 1.
Hacer un dump de la segunda estructura.
Se incorpora a todos los ejemplos un pequeño ESME que hace el submit de un mensaje y es posible configurarlo según la siguiente sintaxis:
[rtremsal@localhost bin]$ ./esme Error in parameters usage: ./esme -c file.xml [-h] -c /path/to/file.xml: config file path. -h : Help, show this message. [rtremsal@localhost bin]$ more esme.xml <?xml version="1.0"?> <config> <conn_tcp host="127.0.0.1" port="9090"/> <conn_smpp system_id="sytem" password="asdfg34" system_type="type01"/> <smpp_msg src="5565" dst="0911110000" msg="Este es un ejemplo 01"/> </config> |
El archivo de configuración tiene parámetros para hacer la conexión tcp, la conexión smpp y por último los parámetros necesarios para enviar un mensaje. La aplicación se ejecuta como:
[rtremsal@localhost bin]$ ./esme -c esme.xml Error in connect(127.0.0.1:9090) Error in tcp connect. [rtremsal@localhost bin]$ ./esme -c esme.xml ----------------------------------------------------------- SENDING PDU command_length [00000029] - [41] command_id [00000002] - [BIND_TRANSMITTER] command_status [00000000] - [ESME_ROK] : : : ----------------------------------------------------------- RECEIVE BUFFER 00 00 00 10 80 00 00 06 00 00 00 00 00 00 00 03 ........ ........ RECEIVE PDU command_length [00000010] - [16] command_id [80000006] - [UNBIND_RESP] command_status [00000000] - [ESME_ROK] sequence_number [00000003] - [3] |
En el primer caso, no habia un server smpp activo, por lo cual el error se da a nivel de tcp. En el segundo caso, y ayudado por un smpp server de pruebas sctt - (SMPP Client Test Tool) disponible en SMS Forum (http://www.smsforum.com).
En el segundo caso, se establece el envío del mensaje mediante los siguientes pasos.
Realizar la conexión a nivel TCP.
Realizar la conexión a nivel SMPP. Uso del PDU BIND con los datos de validación (hacemos la conexión en modo TRANSMITER donde solo podemos enviar mensajes). Esperamos una confirmación de conexion exitosa en el PDU BIND_TRANSMITER_RESP.
Enviamos el mensaje (PDU de SUBMIT_SM). Recibimos la confirmación de envio en el PDU SUBMIT_SM_RESP. A partir de aquí, estamos seguros que el mensaje se entrego al otro peer.
Realizamos la desconexión a nivel SMPP. Envio de PDU de UNBIND. Esperamos confirmación a través de UNBIND_RESP.
Realizamos la desconexión a nivel de TCP.
Si bien este ejemplo, es muy básico, permite ver más en detalle el uso que un ESME le puede dar a la biblioteca. Por otro lado, se recomienda estudiar y modificar el ejemplo para completar el entendimiento.