• Publicidad

Asterisk y Base de datos

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

Asterisk y Base de datos

Notapor rjimenez » 2012-09-12 10:36 @483

Necesito ayuda. Quiero, como práctica, leer una base de datos desde Asterisk. Soy principiante en Perl y en MySQL pero tengo mucha experiencia con Asterisk.

Este es el conector:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. use Asterisk::AGI;
  5. use DBI;
  6.  
  7. my $AGI    = new Asterisk::AGI;
  8. my %input  = $AGI->ReadParse();
  9. my $Cedula = $AGI->get_variable('Cedula');
  10.  
  11. my $dbh = DBI->connect( "DBI:mysql:host=10.100.117.102;database=asterisk;port=3306", "root", "vicidialnow" )
  12.     or die "Error en la conexion: $DBI::errstr";
  13.  
  14. my $sth = $dbh->prepare('select Cedula from asterisk.roberto where ID = 1');
  15.  
  16. $sth->execute($Cedula) or die("Error en la consulta");
  17.  
  18. my ( $ID, $Cedula, $Ciudad, $telefono );
  19.  
  20. while ( ( $ID, $Cedula, $Ciudad, $telefono ) = $sth->fetchrow_array() ) {
  21.  
  22.     print join( ", ", $Ciudad, $ID ), "\n";
  23. }
  24. $AGI->set_variable( 'ID',       "$ID" );
  25. $AGI->set_variable( 'Cedula',   "$Cedula" );
  26. $AGI->set_variable( 'Ciudad',   "$Ciudad" );
  27. $AGI->set_variable( 'telefono', "$telefono" );
  28.  
  29. $sth->finish;
  30. $dbh->disconnect;
  31.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este es el extension.conf
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[bancontext]



exten => s,1,Answer()
exten => s,n,Set(COUNT=1)
exten => s,n,WaitExten(1)
exten => s,n,Background(vicidial-welcome)
exten => s,n,Background(vicidial-welcome)
exten => s,n,WaitExten(5)

exten => _XXXXXXXXXXX,1,Set(Cedula=${EXTEN})
exten => _XXXXXXXXXXX,n,Agi(myconector.pl)
exten => _XXXXXXXXXXX,n,Festival(${Ciudad})
exten => _XXXXXXXXXXX,n,Goto(menu,s,1)
exten => s,n,WaitExten(2)

exten => i,1,Background(Invalid)
exten => i,n,Goto(interno,s,1)
exten => t,1,Playback(vm-last)
exten => t,n,Set(COUNT=$[${COUNT} + 1])
exten => t,n,GotoIf($[${COUNT} > 3]?5:4)
exten => t,n,Goto(interno,s,5)
exten => t,n,Playback(vm-goodbye)
exten => t,n,Hangup()

[menu]

exten => s,1,Background(minute)
exten => s,n,Background(millon_es)
exten => s,n,Background(peso_es)
exten => s,n,WaitExten(10)
exten => 1,1,Goto(Notas,s,1)
exten => 2,1,Goto(Seminarios,s,1)
exten => 3,1,Goto(Actividades,s,1)
exten => i,1,Background(Grabacion/Invalida)
exten => i,n,Goto(menu,s,1)
include => Basicas

[Notas]

exten => s,1,Background(id_number)
exten => s,n,WaitExten(2)
exten => s,n,Festival(${Cedula})
exten => s,n,WaitExten(1)
exten => s,n,Festival(${ID})
exten => s,n,WaitExten(1)
exten => s,n,EndWhile()
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Nota esto es copiado de otro for y modificado...
Mysql:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Enter password: vicidialnow
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 52
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select * from asterisk.roberto;
+----+------------+----------+------------+
| ID | Cedula     | Ciudad   | telefono   |
+----+------------+----------+------------+
|  1 | 0310221812 | Santiago | 8092519382 |
|  2 | 0221812211 | moca     | 8092519383 |
|  3 | NULL       | NULL     | 8092519384 |
|  4 | NULL       | NULL     | 8092519385 |
|  5 | NULL       | NULL     | 8092519386 |
|  6 | NULL       | NULL     | 8092519387 |
|  7 | 8092519388 | Moca     | 8092519388 |
|  8 | 031        | Bien     | 8092519389 |
+----+------------+----------+------------+
8 rows in set (0.05 sec)

mysql>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
rjimenez
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2012-09-11 15:30 @687

Publicidad

Re: Asterisk y Base de datos

Notapor explorer » 2012-09-12 11:11 @507

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

Creo que solo hay que hacer un cambio...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sth = $dbh->prepare('select Cedula from asterisk.roberto where ID = ?');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

siempre y cuando $Cedula contenga el ID que estamos buscando.

Si no contiene eso, pues habrá que modificar la consulta.
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: Asterisk y Base de datos

Notapor cgz10 » 2012-12-26 11:13 @509

Buenas, quisiera saber cómo puedo hacer para llamar a otro script AGI Perl en un script AGI Perl, porque ¡ya intenté de todo! ¿Tendrían algún ejemplo?

Y cuando se ejecuta alguna llamada, ¿cómo sabe el Asterisk que es un humano o un contestador el que atiende? Es que necesito hacer llamadas bajo el protocolo DAHDI desde un servidor Asterisk.

Saludos cordiales

cgz - http://www.construyomiexito.tk/
cgz10
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2012-12-26 09:03 @418


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 19 invitados