Cursos Asterisk en México

UNIQUEID customizado

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • UNIQUEID customizado

    Hace algunos meses tuve la necesidad de asegurar que el campo de cdr UNIQUEID fuera unico en verdad, ya que se puso en marcha un proyecto con 6 Asterisk los cuales comparten la misma base de datos de CDR y temian que pudiera darse el caso de que se repitieran, entonces me pidieron agregar un identificador a cada uniqueid el cual indicara a que servidor pertenecia.
    Despues de estar googleando por varios dias y no encontrar una respuesta clara decidi meterle mano a los archivos de compilacion de Asterisk y hoy despues de 8 meses de estar en operacion no he tenido ningun problema con este cambio, es por eso que lo comparto por si alguien necesitara hacer lo mismo.

    Para empezar hay que editar el archivo channel.c ubicado en la carpeta donde se a descomprimido el tarball de Asterisk,yo lo descomprimi en:
    /usr/src/asterisk/

    El archivo channel.c se encuentra en:
    /usr/src/asterisk/asterisk-1.6.X.X/main/

    Editamos el archivo con:
    nano channel.c

    Ahora debemos buscar la linea siguiente:
    ast_string_field_build(tmp, uniqueid, "%li.%d", (long) time(NULL),

    Y la modificaremos por:
    ast_string_field_build(tmp, uniqueid, "1-%li.%d", (long) time(NULL),

    Tambien debemos modificar esta linea:
    ast_string_field_build(tmp, uniqueid, "%s-%li.%d", ast_config_AST_SYSTEM_NAME,

    Por:
    ast_string_field_build(tmp, uniqueid, "%s-1-%li.%d", ast_config_AST_SYSTEM_NAME,

    Si observamos detenidamente solo hemos agregado 1-, este sera el identificador de mi server 1.

    Esto nos dara como resultado un Uniqueid de la siguiente manera:
    1-123456789.123

    En resumen nuestros cambios quedan de la siguiente forma:
    if (ast_strlen_zero(ast_config_AST_SYSTEM_NAME)) {
    ast_string_field_build(tmp, uniqueid, "1-%li.%d", (long) time(NULL),
    ast_atomic_fetchadd_int(&uniqueint, 1));
    } else {
    ast_string_field_build(tmp, uniqueid, "%s-1-%li.%d", ast_config_AST_SYSTEM_NAME,
    (long) time(NULL), ast_atomic_fetchadd_int(&uniqueint, 1));
    }

    Al terminar de editar este archivo sera necesario recompilar Asterisk:
    ./configure
    make
    make install

    Si se tenian instalado Asterisk Addons tambien sera necesario recompilarlo:
    ./configure
    make
    make install

    Espero les sea de ayuda.
    Soluciones, NO culpables.

  • #2
    Re: UNIQUEID customizado

    Luis,

    Te fuiste por la ruta larga. Todo lo que debías de hacer era editar asterisk.conf y bajo [options] especificar:

    systemname=<tu identificador>

    Y así el uniqueid se habría guardado como <tu identificador>-1293123131.873

    Yo tengo un par de servidores que comparten tabla del CDR. Lo tengo puesto así y también puedo asegurar que el uniqueid nunca se repite.

    Saludos,
    dCAP Christian Cabrera R.
    Para aprender a usar Asterisk, asiste a uno de mis cursos Asterisk
    Si deseas asesoría pagada, por favor contáctame

    Comentario


    • #3
      Re: UNIQUEID customizado

      Pues tienes razon inge !!! Pero despues de buscar en la red y no encontrar info ! Lo tuve que hacer de esta manera !! Lo mejor de esto es que en este foro ya existiran dos formas de hacerlo !

      Saludos
      Soluciones, NO culpables.

      Comentario

      Principales Usuarios Activos

      Colapsar

      No hay usuarios activos superiores.
      Trabajando...
      X