Una de las mejores alternativas al popular Microsoft Exchange, es sin duda eGroupWare entre otros motivos porque además de ser libre y gratuito (no hay que pagar licencias como el caso del software de Microsoft), se integra perfectamente con todo tipo de software utilizado normalmente en la empresa como el Outlook, Thunderbird, Evolution, Kontact, e incluso permite sincronización con BlackBerrys, PDAs y teléfonos móviles mediante SyncML.

Una de las ventajas de que sea libre (algo que mucha gente parece no entender o no interesar) es que cualquier persona puede desarrollar una aplicación que interactue con este software sin tener que dar explicaciones ni pagar licencias ocultas.

Pues bien, la empresa sevillana Ene Soluciones acaba de publicar un sencillo manual para integrar eGroupWare aplicación con nuestro Asterisk, permitiéndonos ver con nuestro softphone preferido el nombre de la persona que nos llama si previamente hemos introducido los datos de esta persona en la base de datos de eGroupWare con nuestro cliente de correo o desde el interfaz de la aplicación.

Esto, unido a uno de tantos click-to-dial para hacer llamadas desde nuestro cliente de email con nuestro Asterisk, nos permitirá tener al jefe contento y a los clientes aún más.

Enlace al manual para integrar Asterisk con eGroupWare.

4 Comentarios

  • Otra forma de hacerlo es sincronizar la “Asterisk CallerID database” y de paso te cree el XML para el teléfono.

    Espero que os sirva, el código no está demasiado comentado, así que si tenéis alguna duda o alguna idea para mejorarlo…

    El código a partir de una BBDD en MySQL, crea:

    * el archivo XML: “gs_phonebook.xml” con la agenda para el teléfono, en mi caso un GPX2000. Sólo pasará los contactos cuyo nombre empiece por “*”, no se cuanto es el límite de contactos para este teléfono, pero la agenda completa no me la acepta.

    * el script “/tmp/phonebook.sh” que pasa los contactos al Asterisk CallerID database.

    Los datos los guardará con lo siguiente al inicio de cada contacto:
    * (T): Para los teléfonos fijos.
    * (M): Para los teléfonos móviles.
    * (F): Para los Faxes. (Estos por lógica no se pasarán al XML)

    De esta forma que cuando nos llamen, añadiendo:
    * “exten=> s,n,LookupCIDName(${CALLERIDNUM})” para Asterisk1.2
    * “exten = s,n,Set(CALLERID(name)=
    ${DB(cidname/${CALLERID(num)})})” para Asterisk1.4
    al dialplan tendremos el nombre de quien nos llama en la pantalla de
    nuestro teléfono y lo guardará en el CDR.

    *Podemos usar “cron” para automatizar la tarea:

    crontab -l
    # m h dom mon dow command
    #0 4 * * * curl http://localhost/gs.php >/dev/null 2>&1 /dev/null
    #15 4 * * * sh /tmp/phonebook.sh >/dev/null 2>&1 /dev/null

    * Script en php principal: gs.php:

    <?php

    //Cambiar los **** por los datos de vuestra BBDD
    $host = “******”;
    $user = “******”;
    $pass = “******”;
    $database = “******”;
    $linkID = mysql_connect($host, $user, $pass) or die(“Could not connect
    to host.”);
    mysql_select_db($database, $linkID) or die(“Could not find database.”);

    //Cambiar los campos de vuestra BBDD,
    //pero acordaros de hacerlo en todo el código
    //fn: Nombre
    //org_name: Empresa
    //tel_work: Número fijo
    //tel_cell: Número móvil
    //tel_fax: Número de Fax
    $query = “SELECT fn, org_name, tel_work, tel_cell, tel_fax FROM
    egw_addressbook ORDER BY fn”;

    $resultID = mysql_query($query, $linkID) or die(“Data not found.”);
    print(“n”);
    $xml_output = “n”;
    $xml_output .= “n”;
    $sh_output = “#!/bin/bashn”;

    for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){
    //le damos “forma” a los datos
    $row = mysql_fetch_assoc($resultID);
    $msg = trim($row[‘fn’]);
    $msg = ereg_replace(“[[:space:]]”,”_”,$msg);
    $msg = ereg_replace(“_+”,”_”,$msg);
    $msg2 = trim($row[‘org_name’]);
    $msg2 = ereg_replace(“[[:space:]]”,”_”,$msg2);
    $msg2 = ereg_replace(“_+”,”_”,$msg2);
    $msg3 = substr($msg,1);
    $busqueda=array
    (‘á’,’Á’,’é’,’É’,’í’,’Í’,’ó’,’Ó’,’ú’,’Ú’,’ñ’,’º’,’ª’,’&’,’ü’);
    $reemplazar=array
    (‘a’,’A’,’e’,’E’,’i’,’I’,’o’,’O’,’u’,’U’,’n’,’o’,’a’,’&’,’u’);

    //comprobamos el campo del teléfono móvil
    if(is_numeric($row[‘tel_cell’])){
    $num = trim($row[‘tel_cell’]);
    $cadena3='(M)’.$msg3.’-‘.$msg2;
    $cadena='(M)’.$msg.’-‘.$msg2;
    $cadena2 = htmlentities($cadena);
    $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);

    //si empieza por “*” lo añadimos al XML sin el “*”
    if (eregi(“^[*]”,$msg)){
    $xml_output .= “tn”;
    $xml_output .= “tt” . $cadena3 .
    “n”;
    $xml_output .= “tttntttt” .
    $num . “n”;
    $xml_output .= “ttt
    t0n”;
    $xml_output .= “tttn”;
    $xml_output .= “tn”;
    }else{}
    $sh_output .= “/usr/sbin/asterisk -rx “database put cidname $num
    $cadena2″n”;

    }else{}

    //comprobamos el campo del teléfono fijo
    if(is_numeric($row[‘tel_work’])){
    $num = trim($row[‘tel_work’]);
    $cadena3='(T)’.$msg3.’-‘.$msg2;
    $cadena='(T)’.$msg.’-‘.$msg2;
    $cadena2 = htmlentities($cadena);
    $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);

    //si empieza por “*” lo añadimos al XML sin el “*”
    if (eregi(“^[*]”,$msg)){
    $xml_output .= “tn”;
    $xml_output .= “tt” . $cadena3 .
    “n”;
    $xml_output .= “tttntttt” .
    $num . “n”;
    $xml_output .= “ttt
    t0n”;
    $xml_output .= “tttn”;
    $xml_output .= “tn”;
    }else{}
    $sh_output .= “/usr/sbin/asterisk -rx “database put cidname $num
    $cadena2″n”;

    }else{}

    //comprobamos el campo del fax
    if(is_numeric($row[‘tel_fax’])){
    $num = trim($row[‘tel_fax’]);
    $cadena='(F)’.$msg.’-‘.$msg2;
    $cadena2 = htmlentities($cadena);
    $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);
    $sh_output .= “/usr/sbin/asterisk -rx “database put cidname $num
    $cadena2″n”;

    }else{}
    }

    $xml_output .= “n”;

    //creamos el archivo XML para el teléfono
    $fp = fopen(‘gs_phonebook.xml’, ‘wb’);
    fwrite($fp, $xml_output);
    fclose($fp);

    //creamos el script para actualizar “Asterisk CallerID database”
    $fs = fopen(‘/tmp/phonebook.sh’, ‘wb’);
    fwrite($fs, $sh_output);
    fclose($fs);

    echo $xml_output;
    ?>

    * Script en php para pasar el XML al teléfono por HTTP en vez de
    usar el FTP:

  • * Script en php para pasar el XML al teléfono por HTTP en vez de
    usar el FTP:

  • A ver si así me deja…borrar “//”
    //

Archivos

© 2014 Sinologic, inc. All rights reserved.

Menú

Redes sociales