Asterisk SIP Realtime , extensiones sip desde base de datos

A petición de los alumnos del curso de Telefonía IP con Asterisk , el cual tengo el gusto de  dictar en la U. del Callao , aquí les dejo un pequeño manual de como configurar Realtime en Asterisk para la creación de extensiones sip desde una base de datos mysql.

1.-CREACION DE TABLA “sip_buddies”

Esta tabla es la cual va almacenar las extensiones sip, la menara mas sencilla de crearla es atravez de phpmyadmin , aqui les dejo el scrip

http://www.silcom.com.pe/soft/asterisk/sip_buddies.sql

2.- CONFIGURACION DE ASTERISK Y REALTIME

a) Ingresar a los archivos “res_mysql.conf”  y “extconfig.conf”  e ingresar la siguiente informacionrespectiva

#vi /etc/asterisk/res_mysql.conf

[general]
dbhost = 127.0.0.1 ;en caso de que Asterisk y mySQL compartan el mismo servidor.
dbname = mibasededatos
dbuser = miusuario
dbpass = micontrasena
dbport = 3306 ;puerto por defecto en mySQL

#vi /etc/asterisk/extconfig.conf

sipusers => mysql,asteriskcdr,sip_buddies
sippeers => mysql,asteriskcdr,sip_buddies

3) CONFIGURACIÓN DEL ARCHIVO “sip.conf”

#vi /etc/asterisk/sip.conf

[general]
language=es
context = micontexto
bindport = 5060
bindaddr = 0.0.0.0
srvlookup=yes
rtcachefriends=yes
disallow=all
allow=ulaw
allow=allaw
allow=gsm

4.- AGREGANDO EXTENSIONES SIP A LA BASE DE DATOS

Agregarmos las extensiones 101 y 102 a la tabla “sip_buddies” , esto lo pueden hacer desde phpmyadmin sin problema alguno , de la siguiente forma :

INSERT INTO sip_buddies (name, callerid, secret, host, context, mailbox, qualify, dtmfmode) VALUES (101, “101”, 101, “dynamic”, “micontexto”, “101@default”, “yes”, “RFC2833”);
INSERT INTO sip_buddies (name, callerid, secret, host, context, mailbox, qualify, dtmfmode) VALUES (102, “102”, 102, “dynamic”, “micontexto”, “102@default”, “yes”, “RFC2833”);

5.- CONFIGURANDO SOFPHONE PARA REGISTRO

A) Configurar un sofphone (el de su prefencia) para registrarlo como extension valida en el servidor asterisk , esta seria la configuracion usando ekiga

b) Verficar registro , si todo esta correcto al pulsar aceptar , el servidor Asterisk debera recibir la peticion de registro y lo consultara con la base de datos y tabla configurara , de la siguiente forma en el CLI de Asterisk:

Connected to Asterisk currently running on centralpbx1 (pid = 2234)
Verbosity is at least 13
— Remote UNIX connection
— Registered SIP ‘101’ at 192.168.1.101 port 5060 expires 3600
— Saved useragent “Ekiga/3.2.6” for peer 101
[May  1 08:10:15] NOTICE[2334]: chan_sip.c:12669 handle_response_peerpoke: Peer ‘101’ is now Reachable. (5ms / 2000ms)

Lo cual nos indica que la extension 101 , ha sido correctamente registrada , y lo podemos comprobar de la siguiente forma :

Asterisk *CLI>sip show peers

centralpbx1*CLI> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status     Realtime
102/102                                                 D                      5060     UNREACHABLE
101/101                    192.168.1.101      D                      5060     OK (3 ms)
2 sip peers [Monitored: 1 online, 1 offline Unmonitored: 0 online, 0 offline]

6.- DESARROLLANDO EL DIALPLAN

a) Configurar el archivo “extensions.conf” de la siguiente forma :

#vi /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]

[ramales]
; Carga de datos via RealTime
switch => Realtime/@

;Comunicacion entre anexos
exten=>_102,1,Dial(SIP/102,10,Ttr)
exten=>_101,1,Dial(SIP/101,10,Ttr)

7.- REALIZAR PRUEBAS

Una vez configurado el dialplan , ingresar al CLI de Asterisk y ejecutar el comando “dialplan reload” , luego probar la comunicación entre los anexos 101 y 102 (evidentemente tienen que registrar el anexo 102 antes) , si todo esta correcto podran tener comunicacion entre las dos extensiones.

Tarea pendiente : Con esto ya podrian desarrollar una interface de usuario para ingresar extensiones a la base de datos.

Espero que les Sirva la información

Anuncios
Esta entrada fue publicada en Manuales y tutoriales por jroliva. Guarda el enlace permanente.

Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

20 pensamientos en “Asterisk SIP Realtime , extensiones sip desde base de datos

  1. La información está muy buen escrita y es bueno encontrar este tipo de artículos que son tan difíciles de ubicar en la red. Por supuesto que la tecnología de asterisk todavía se encuentra en pañales en el concierto de la telefonía latinoamericana, pero a medida que vaya pasando el tiempo podemos constatar efectivamente que habrá un mayor acercamiento de la sociedad hacia este tipo de servicio que sin duda es de un gran alivio y significa una gran ayuda para toda la población en general. Muy bien por este post.

  2. Amigo una consulta lo que estas haciendo es combinar Asterisk Realtime para anexos SIP y extensions.conf plano ya que la configuracion de los anexos lo haces por base de datos y su comportamiento en archivo plano podrias indicarme como es posible la integracion para tenerlo mas claro que significa.
    [ramales]
    ; Carga de datos via RealTime
    switch => Realtime/@
    Que es lo que hace esta funcion.

    Te agradezco anticipadamente por la atencion y la repsuesta a mi duda.

  3. Hola

    [ramales] ; seria le conexto que usas para las extensiones
    switch => Realtime/@ ; es justamente la variable que hace el “link” con la base de datos , es decir fuerza a que las extensiones sean buscadas en la bd.

    Saludos
    Juan

    • Quiere decir que puedo combinar realtime extensions con archivo plano extensions.conf, por otro lado tengo el siguiente problema
      WARNING[6669]: res_config_mysql.c:317 realtime_mysql: MySQL RealTime: Invalid database specified: asteriskrt (check res_mysql.conf)
      a que se puede deber este error ya he probado de todo.

      Gracias anticipadamente por la atencion a mi pregunta.

      Armando

  4. Hola , en realidad si , puedes combinar ambos , sobre tu error verifica bien el nombre de la base de datos y tabla o los campos por que el error es claro

    Invalid database specified: asteriskrt (check res_mysql.conf)

    Saludos

  5. Doctor he cargado el script de base de datos que esta publicado por tu persona ademas he probado y si hay conectividad, realtime mysql status y si es correcto, al igual que cdr mysql status, tambien he probado que el modulo este cargado correctamente solo al registrar el anexo me muestra el error arriba indicado que puedo estar haciendo mal, estoy utilizando asterisk 1.6 y asterisk-addons-1.6 me puedes indicar por donde puede estar mi error en base a tu experiencia se me olvida tambien le he dado los permisos pertinentes de base de datos.

    • El problema esta aqui:

      [general] // cambiar por el nombre de la base “mibasededatos”
      dbhost = 127.0.0.1 ;en caso de que Asterisk y mySQL compartan el mismo servidor.
      dbname = mibasededatos
      dbuser = miusuario
      dbpass = micontrasena
      dbport = 3306 ;puerto por defecto en mySQL

      osea:

      [mibasededatos]
      dbhost = 127.0.0.1 ;en caso de que Asterisk y mySQL compartan el mismo servidor.
      dbname = mibasededatos
      dbuser = miusuario
      dbpass = micontrasena
      dbport = 3306 ;puerto por defecto en mySQL

      Saludos.

  6. Amigos soy muy novato en este ambiente y tengo unos problemas agradezco que me guiaran de la mejor forma.

    1. Mis archivos de llamada no se guardan con el numero de extension.
    2. Nec hacer q desde una web pueda acceder a esos archivos y escucharlos, es necesario tenerlos una BD para poder tenerlos asociados con la info de la llamada ?

    tengo asterisk , mysql.

  7. Hola
    He encontrado muy interesante su ejercicio sobre asterisk.
    Actualmente llevo 2 semanas configurando asterisk (elastix) para su integración con MS Active Directory, y anda bien el jale de usuarios, datos, y asignación de extensiones, exceptuando cuando se quiere hacer una llamada.

    Al realizarla, no funciona el realtime muy bien, no sabe donde dirijir la llamada, nunca enlaza y borra del registro la IP de los teléfonos.

    Tiene alguna sugerencia de extensions.conf para su trabajo con realtime y LDAP?

    • Hola ummm , hace ya un tiempo que no juego con realtime , en todo caso seria interesante que postees tu avance , así se puede replicar y encontrar el problema.

      Saludos
      Juan Oliva

  8. Amigos, como puedo hacer para que 1 extensiones no se registre en dos maquinas distintas..?!?! Por favor podrian darme una mano?.
    Gracias..!

  9. Hola, se que este comentario es ya algo viejo, pero estoy usando asterisk 1.11, y me gustaria saber si es posible cargar los clientes sip desde una base de datos en postgresql?

      • Si, con odbc claro que es posible, me referia a si era posible hacerlo sin usar odbc, como lo hace con mysql sin necesidad de un intermediario (odbc)

  10. Si, ya veo, supongo que la configuración para el asterisk 1.11 en ubuntu sea semejante, voy a intentarlo a ver que tal me va. Por otro lado juan, dime si sabes de algun tutorial donde configuren correctamente la videoconferencia en asterisk, porque donde lo he encontrado no me funciona bien.
    muchas gracias por responderme

    salu2s
    yordan

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s