9. Ejemplos incluidos en la librería.

9.1. Ejemplos para cada PDU.

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:

  1. Declarar 2 variables del mismo tipo, y cargar los campos que la componen en una de ellas.

  2. Hacer un dump del PDU para ver la totalidad de los campos de la estructura.

  3. Empacar la estructura en un buffer y hacer un dump del mismo.

  4. Desempacar el buffer sobre la segunda variable definida en el punto 1.

  5. Hacer un dump de la segunda estructura.

9.2. Un ESME de ejemplo.

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.

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.