• Publicidad

Envíos SMS

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Envíos SMS

Notapor Rivert Villanueva » 2009-09-28 17:04 @752

Hola a todos, espero que este foro alguien me pueda ayudar, soy muy nuevo en este lenguaje ya que yo soy full PHP. Bueno era ahora que recién entiendo a Perl me gusta más.

Mi problema es que copié este código que mi proveedor me envió para poder enviar SMS y no tengo problema en el funcionamiento pero ahora tengo una dificultad: necesito leer un archivo de texto que tiene la siguiente estructura de datos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
1999323232,prueba de envia1
1989892922,Segunda prueba en sms
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que necesito es leer el archivo de texto (ya lo hice) y luego que en el arreglo @params me agregue los datos de celular y mensaje según lo indicado el script siguiente.

Por favor se lo voy agradecer mucho.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #! /usr/bin/perl -w
  2. #Modulo de Cliente XML-RPC
  3. use Frontier::Client;
  4. my $client = Frontier::Client->new (url => "http://USUARIO:PASSWORD@HOST/mms/as ",debug => 1);
  5. # Vector de parametros:
  6. # Contiene dos mensajes, los dos primeros sin fecha agendada
  7. my @params = ({
  8.                         "celular" => Frontier::RPC2::String->new("1996615073"),
  9.                         "texto" => Frontier::RPC2::String->new("Hola Mundo 1"),
  10.                         "fecha" => Frontier::RPC2::String->new("")
  11.                         },{
  12.                         "celular" => Frontier::RPC2::String->new("1996615073"),
  13.                         "texto" => Frontier::RPC2::String->new("Hola Mundo 1"),
  14.                         "fecha" => Frontier::RPC2::String->new("")
  15.                         });
  16. # Ejecución del Cliente – Se especifica el método
  17. # y se entrega el vector de parámetros
  18. my $res = $client->call("Tqwea.SendMsg",[@params]);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Rivert Villanueva
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2009-09-28 16:29 @729

Publicidad

Re: Envíos SMS

Notapor explorer » 2009-09-28 18:10 @798

Bienvenido a los foros de Perl en Español, Rivert Villanueva.

Debes abrir, leer el fichero por líneas, separar los campos, y crear un hash anónimo por cada uno, que guardarás como un elemento de @params;

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use Frontier::Client;
  7.  
  8. my $client = Frontier::Client->new (
  9.     url     => 'http://USUARIO:PASSWORD@HOST/mms/as',
  10.     debug   => 1,
  11. );
  12.  
  13. my @params;
  14.  
  15. open my $fichero_sms_fh, q[<], 'kk.txt' or die "ERROR: No pude abrir el fichero: $!\n";
  16.  
  17. while (<$fichero_sms_fh>) {
  18.     chomp;
  19.     my ($celular, $texto) = split q[,];
  20.  
  21.     push @params, {
  22.                     celular => Frontier::RPC2::String->new($celular),
  23.                     texto   => Frontier::RPC2::String->new($texto),
  24.                     fecha   => Frontier::RPC2::String->new(''),
  25.     };
  26. }
  27.  
  28. close   $fichero_sms_fh;
  29.  
  30. my $res = $client->call("Tqwea.SendMsg",[@params]);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envíos SMS

Notapor Rivert Villanueva » 2009-09-28 18:35 @815

Lo máximoooooooooo, funciona perfectamente muchas gracias...

Tengo una duda, si tienes algo de tiempo me respondes...

Frontier::Client;

¿Exactamente qué es o para qué se utiliza?

Gracias por todo...
Saludos,
Rivert Villanueva
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2009-09-28 16:29 @729

Re: Envíos SMS

Notapor nemest » 2009-09-28 21:52 @953

Es un módulo (objeto, clase).
Mira: Frontier::Client
Avatar de Usuario
nemest
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2009-09-18 21:25 @934

Re: Envíos SMS

Notapor explorer » 2009-09-29 05:09 @256

Es el módulo que realiza el diálogo con el servidor, enviándole las órdenes de envío de mensajes. El protocolo es el XML-RPC.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envíos SMS

Notapor Rivert Villanueva » 2009-09-29 18:08 @797

Ok, ya entiendo... muchas gracias por todo explorer.

Ahora ya tengo todo funcionando correctamente pero no contaba que para ejecutar el Perl en Windows levanta una ventana de DOS y como el cron está configurado para que verifique si hay archivos cada 2 minutos no me deja trabajar tranquilo en la PC...

¿Habrá alguna forma para que el Perl trabaje sin necesidad de levantar la ventana de DOS?

Como siempre recontra agradecido por todos tus Tips.

Saludos,
Última edición por explorer el 2010-06-14 18:08 @797, editado 2 veces en total
Razón: Ortografía, anglicismos
Rivert Villanueva
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2009-09-28 16:29 @729

Re: Envíos SMS

Notapor explorer » 2009-09-29 19:10 @840

Si estás usando el Active Perl, mira a ver si en la carpeta bin/ del Perl hay un ejecutable llamado wperl.exe. Ese es el binario que debes ejecutar en lugar del perl.exe.

Hay un problema, sin embargo: los STDIN, STDOUT y STDERR estarán cerrados, así que si tu programa hace alguna salida hacía algún fichero de log mediante print() o warn(), deberás abrirlos antes.

Lo que también puedes hacer, en Windows, es asociar una extensión de fichero, digamos .wpl, a ese binario. Así, cuando hagas una doble pulsación en un programa Perl con esa extensión, lo ejecutará con el wperl.exe (juraría que esto último ya lo hace el ActivePerl en sus últimas versiones, pero ya no estoy seguro... hace mucho que no uso Windows :) ) Si lo tienes puesto en el gestor de tareas, pues con indicar el camino absoluto a wperl, te vale.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envíos SMS

Notapor Rivert Villanueva » 2009-09-30 09:14 @426

Hola, Explorer:
El wperl funciona a la perfección.

Te comento que yo utilizo el cron para Windows. Lamentablemente no puedo decidir el sistema operativo ya que son políticas de la empresa donde trabajo. Lo único que se me ocurrió para no alejarme de Linux fue instalarme un pack con muchos comandos básicos de Linux para Windows; con eso estoy trabajando mucho en línea de comandos.

Bueno, hasta una próxima oportunidad, Muchas gracias por todo...

Saludos Cordiales,
Rivert
Rivert Villanueva
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2009-09-28 16:29 @729

Re: Envíos SMS

Notapor explorer » 2009-09-30 11:23 @516

También en mi empresa, lo "oficial" es Windows, pero, desde el primer día, hice lo siguiente: particioné el disco duro en dos partes iguales. Luego, instalé Linux en la segunda parte.

Así, todos los días arranco con Linux. Y si viene el jefe a quejarse, entonces arranco el ordenador de nuevo y le demuestro que no he destruido ni borrado nada. El caso es que al jefe le da lo mismo lo que use, siempre y cuando las tareas estén bien hechas.

Yo he tenido suerte con mi empresa :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Envíos SMS

Notapor Rivert Villanueva » 2010-07-07 22:08 @964

Hola Explorer:

Después de tiempo que el código está funcionando perfectamente ahora estoy intentando escribir un log de seguimiento por lo que necesito recepcionar las respuestas de la variable $res:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $res = $client->call("Tqwea.SendMsg",[@params]);
open (FILE, ">> c:\\file.txt");
print FILE $res."\n";
close FILE;
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


pero lo que escribe es: ARRAY(AD343F). Por favor, dame un mano con este tema.
La idea es escribir el estado de cada uno de los envíos de los mensajes de texto.

Muchas gracias de antemano.
Rivert Villanueva
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2009-09-28 16:29 @729

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 48 invitados