Inicio > Manuales y tutoriales > Asterisk SIP Realtime , extensiones sip desde base de datos

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

Anuncio publicitario
Categorías: Manuales y tutoriales
  1. agosto 10, 2010 a las 2:51 pm

    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. Armando Guerra
    abril 27, 2011 a las 2:30 am

    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. abril 27, 2011 a las 9:05 pm

    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

    • Armando Guerra
      abril 27, 2011 a las 9:28 pm

      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. abril 27, 2011 a las 10:05 pm

    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. Armando Guerra
    abril 27, 2011 a las 11:08 pm

    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.

  6. abril 27, 2011 a las 11:14 pm

    Armando

    Esto esta desarrollado para asterisk 1.4.x , me parece que en 1.6 el manejo de realtime es diferente.

    Saludos

    • Italo
      mayo 10, 2012 a las 9:27 pm

      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.

  7. diciembre 29, 2012 a las 6:20 pm

    A work mate recommended me to this site. Thnx for the details.

  8. Help
    mayo 16, 2013 a las 9:31 pm

    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.

  9. marzo 14, 2014 a las 9:20 pm

    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?

    • marzo 14, 2014 a las 11:54 pm

      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

  10. julio 31, 2015 a las 10:14 pm

    Hola el script de la bbdd ya no está activo 😦

  11. Alejandro
    agosto 7, 2015 a las 9:36 pm

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

    • Paulo César
      agosto 7, 2015 a las 9:57 pm

      a que te refieres con registre en dos maquinas distintas?

  12. yordan estrada
    septiembre 21, 2015 a las 12:20 pm

    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?

    • septiembre 21, 2015 a las 9:15 pm

      Hola Yordan

      Claro! , es posible con odbc para postgresql solo es necesario que respetes la estructura de campos como en MYSQL.

      Saludos
      Juan Oliva

      • yordan estrada
        septiembre 22, 2015 a las 12:50 pm

        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)

  13. yordan estrada
    septiembre 22, 2015 a las 3:18 pm

    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

  14. mayo 31, 2017 a las 9:57 pm

    hola juan mira es que necesito conectar un crm a elastix tu de pronto me podría ayudar como me conecto y por que puerto, el crm es en la nube y trabaja con mysql

  15. Gerardo Jacinto Astudillo
    junio 20, 2020 a las 4:51 am

    Hola, tengo extensiones PJSIP y mi extensions.ael no funciona en la parte donde mando llamar la funcion REALTIME.

    macro permiso(campo,dest) {
    Set(Fila=${REALTIME(services,exten,${CALLERID(num) },&)});
    //Set(${CUT(Fila,&,2)}); // Password
    Set(valor=${CUT(CUT(Fila,&,${campo}),=,2)}); // Campo correspondiente

    switch (${valor}) {
    case 1: // Salir a todo
    goto from-internal|${dest}|1;
    break;
    case 2: // Pedir pass
    Authenticate(${password});
    goto from-internal|${dest}|1;
    break;
    default: // No salir a nada
    Playback(privacy-incorrect);
    Congestion(10);
    Hangup;
    };
    };

    en mi extconfig.conf ya di de alta las familias

    [settings]
    services => mysql,general,services
    huespedes => mysql,general,huespedes

    Incluso ya esta la conexion con la base de datos pero no me lee los datos la funcion REALTIME. Estoy utilizando FreePBX 14 con asterisk 13.

    Antes funcionaba bien cuando tenia elastix 2.5 y todas mis extensiones eran sip

    Saludos

  16. Daniel
    mayo 6, 2022 a las 10:41 am

    Hola como cambio el nombre las extenesiones?

  1. No trackbacks yet.

Deja una respuesta

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. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: