Click2Dial automático en Firefox

Actualizado 24-09-2007: Nueva versión. Mejoras en la deteccion de numeros. Añadidos todos los prefijos de paises. Mi idea es poder adaptar la detección a números locales de cada país. En la actualidad funciona con números en formato internacional, y números españoles.

Actualizado 24-09-2007: Sí, otra actualización :). Mejorada la presentación, al no permitir el salto de línea. A veces se quedaba la bandera en una línea y el número en otra. También se ha añadido el nombre completo del país. Se puede ver dejando el ratón unos segundos encima del icono de llamada .

A raíz de un mensaje en la lista de correo de asterisk-es, intenté encontrar un sistema similar, pero que no dependiese de Skype o similares. La idea era que se detectasen los números de teléfono que hubiese en una página web, y automáticamente convertirlos en un enlace a un servicio click2dial.

Greasemonkey es una extensión para Firefox, que permite ejecutar codigo javascript en la página que está cargando. Estos scripts permiten analizar y modificar la página web, y como son persistentes, se ejecutan cada vez que se carga.

Existe ya un script, Skype Linkify, que sustituye los números que encuentra por un enlace a “skype:elnumero?call“. Lo he tomado como base, para hacerle unas mejoras:

  • Soporte de números en formato internacional +34 928000000, 00 34 928000000, 011 34 928000000.
  • Soporte para números españoles: [6-9]xxxxxxxx.ww
  • Se añade una banderita con el país al que pertenece el número de teléfono, que queda muy mono ;)

Instalación

  1. Instalar la extensión Greasemonkey
  2. Descargar e instalar el script PhoneLink (original, eh?)
  3. En Greasemonkey, editar el script, y modificar las variables “myExt” y “url”. La primera corresponde a tu extensión. Si pones 201, el canal utilizado será SIP/201. La segunda corresponde al script (en php por ejemplo) que se llamará cuando pulséis en un teléfono. %DEST% se sustituye por el número de teléfono solicitado.
  4. Abrir una página que tenga números de teléfono.

Por supuesto, tendréis que tener alojado un php o similar que inicie la llamada en asterisk. El que he usado para pruebas (cuidado con dejarlo accesible, que no es seguro) es este: webcall.php

Ejemplos de patrones que se detectan bien:

  • +34 928 00 00 00
  • 0034 928000000
  • +1 212-000-1234
  • 928000000
  • 91-800-00-00
  • 928.00.00.00

Seguro que falla con otros, y que da falsos positivos en determinados casos. La expresión regular tiene bastante margen de mejora.

Screenshots ;)

Antes:

Página original

Después:

Página después de ser procesada por PhoneLink

PopUp:

Popup de información

Escrito por julianjm el 20/09/2007. |
Tags: , , ,

18 Comments »

  1. Julián,

    Intentando instalar tu script tengo los sgtes mensajes de error:

    [Wed Oct 03 16:30:18 2007] [error] [client 172.20.1.4] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /export/www/html/webcall.php on line 14
    [Wed Oct 03 16:30:18 2007] [error] [client 172.20.1.4] PHP Warning: fclose(): supplied argument is not a valid stream resource in /export/www/html/webcall.php on line 15

    Tengo PHP versión 5, ¿sabés que pueda ser?

    Gracias,
    Juanjo

    Comment by Juanjo ARGENTINA Windows XP Mozilla Firefox 2.0.0.7 — 3 October 2007 @ 19:32

  2. El problema es que el usuario que ejecuta el script (apache), no tiene permisos de escritura en /var/spool/asterisk/outgoing/

    Puedes hacer, por ejemplo, un
    chmod 777 /var/spool/asterisk/outgoing

    Esto dará permisos de escritura a todo el mundo. No me hago responsable ;)

    Comment by julianjm SPAIN Ubuntu Linux Mozilla Firefox 2.0.0.6 — 3 October 2007 @ 21:05

  3. Yo había probado poniendo webcall.call con 777, pero parece que tiene que ser el directorio :)

    Pués bien, ahora puse el directorio con 777 y el error no aparece, pero no hace la llamada :(

    El contenido de webcall.call (con la ext e IP mias) es:

    Channel:SIP/3
    CallerId:Webcall 0034911516748
    MaxRetries:0
    WaitTime:12
    Context:telsip
    Extension:0034911516748
    Priority:1

    Que fallará? habrá que poner por que proveedor sale la llamada por algún lado?

    Saludos,
    Juanjo

    Comment by Juanjo ARGENTINA Windows XP Mozilla Firefox 2.0.0.7 — 3 October 2007 @ 21:22

  4. Primero comprueba que el contexto telsip admite la marcación de esos números:

    CLI> dialplan show 0034910000000@telsip

    Segundo, revisa el log del asteris, porque puede que se trate de permisos nuevamente, pero esta vez que no pueda leer el archivo generado.

    Modifica el fichero webcall.php, y añade esta línea, justo antes del fopen

    umask(0);

    Y ya nos cuentas que tal ;)

    Comment by julianjm SPAIN Ubuntu Linux Mozilla Firefox 2.0.0.6 — 3 October 2007 @ 22:18

  5. Hola me gusta mucho tu, es muy practico, bueno para un novato como yo.
    He montado el script como indicas pero no consigo hacer funicionar, me devuelve una y otra vez lo siguiente:

    — Attempting call on SIP/22 for 22@from-internal:1 (Retry 1)
    [Nov 14 11:10:47] WARNING[22853]: chan_sip.c:2860 create_addr: No such host: 22
    [Nov 14 11:10:47] NOTICE[22853]: channel.c:3074 __ast_request_and_dial: Unable to request channel SIP/22
    [Nov 14 11:10:47] WARNING[22853]: cdr.c:831 ast_cdr_init: CDR already initialized on ‘**Unknown**’
    [Nov 14 11:10:47] NOTICE[22853]: pbx_spool.c:341 attempt_thread: Call failed to go through, reason (0) Call Failure (not BUSY, and not NO_ANSWER, maybe Circuit busy or down?)

    podrías orientarme sobre lo que está ocurriendo ?
    He cambiado el contexto pero sigue igual.
    un saludo y gracias
    Ignacio

    Comment by ignacio SPAIN Windows 2000 Mozilla Firefox 2.0.0.9 — 14 November 2007 @ 10:17

  6. Ignacio, todo apunta a que no tienes creado el usuario SIP 22. Revisa tu sip.conf.

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.9 — 14 November 2007 @ 11:43

  7. Hola Julian que tal.. funciona perfecto y es muy util, muy comodo. Una cosa, el script se podria configurar para que pueda llamar a SIP, ZAP, IAX2 o lo que sea? Dentro de myext=? si pone 100(pej) llama al SIP/100 si pones myext=IAX2/100 llama al SIP/IAX2/100, se podria modificar de alguna forma?

    Muchas gracias

    Un saludo

    Comment by javivi SPAIN Windows XP Mozilla Firefox 2.0.0.9 — 17 December 2007 @ 8:46

  8. Javivi, sí, pero antes tienes que modificar las primeras líneas del webcall.php para que queden así:

    < ?php
    $ext=$_GET['ext']; # Sin el +0
    $dest=$_GET['dest'];
    #
    $callfile="Channel:$ext # Sin el SIP/

    Eso sí, protege bien el acceso a este script, porque podría ser abusado mucho más facilmente por gente “maliciosa” ;)

    Comment by julianjm SPAIN Ubuntu Linux Mozilla Firefox 2.0.0.11 — 17 December 2007 @ 8:54

  9. Ahh bueno si claro cierto. Ok muchas gracias tio

    Comment by javivi SPAIN Windows XP Mozilla Firefox 2.0.0.9 — 17 December 2007 @ 12:00

  10. Genial, como siempre. Solo una pregunta, sabes (o alguien) como hacer una banderita de las que salen delante del numero? Esque he cambiado el script para que “detecte” las extensiones de la empresa y quiero que delante pinte nuestro logo. Supongo que sera algun “gif to url” o similar, pero no encuentro nada.
    Un saludo!

    Comment by juanmol SPAIN Debian GNU/Linux Mozilla Firefox 2.0.0.11 — 14 January 2008 @ 16:52

  11. Yo lo hice con un pequeño script en PHP:

    < ?
    $argv=$_SERVER['argv'];
    if (count($argv)<=1)
            die("Not enough params");
    $filename=$argv[1];
    $h=@fopen($filename,"rb");
    if ($h) {
            $data=fread($h,filesize($filename));
            $finfo = finfo_open(FILEINFO_MIME);
            $mime=finfo_file($finfo, $filename);
            $encoded=rawurlencode($data);
            echo "data:$mime,$encoded\n";
    } else {
            die("File not found\n");
    }
    ?>
    

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.11 — 14 January 2008 @ 17:21

  12. Más información aquí: http://es.wikipedia.org/wiki/Data:_URL

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.11 — 14 January 2008 @ 17:24

  13. Hola necesita urgente poder leer tambien telefonos de argentina con el siguiente formato

    4111-1111
    41119999
    011-111-2222

    Por mas que hice mi propia expresion regular no eh podido hacer que funcione con tu script, tiene algun punto que se debe cambiar tambien?

    desde y muchas gracias!!

    Comment by martin Windows XP Mozilla Firefox 2.0.0.12 — 19 March 2008 @ 13:32

  14. Hombre, yo copiaría la que hay para ‘es’. En la ultima versión añadí soporte para los USA (’us’).

    Tampoco tengo muy claro lo que significa cada número que has puesto (empiezan todos por 4?), el resto de los números tienen algún patrón?

    El tercer patron, corresponde a una llamada internacional? Si es así, me parecen pocos números…

    Respecto a la expresión regular, la verdad es que tardé lo suyo haciendo pruebas hasta que conseguí detectar la mayor parte de números, y limitar al máximo los falsos positivos.

    Si necesitas una solución urgente, porque se trata de un proyecto comercial, escribeme un email e igual podemos llegar a un acuerdo ;)

    Comment by julianjm SPAIN Windows XP Mozilla Firefox 2.0.0.12 — 20 March 2008 @ 17:20

  15. Hola Julian, he intentado ver el contenido del archivo webcall.php pero no se ve el codigo solo se ve la pagina en html como si la extension txt no estuiera, ojala me peudas explicar como ver el codigo para habilitarlo en mi navegador.

    Gracias de antemano

    javs

    Comment by javs Windows XP Mozilla Firefox 2.0.0.15 — 4 July 2008 @ 2:58

  16. Hola Julian,

    me sucede exactamente lo mismo que a Javs. Podrías mirar que es lo que ha sucedido?

    Un saludo y muchas gracias.

    Comment by Andreu SPAIN Linux Mozilla Firefox 3.0 — 16 July 2008 @ 9:20

  17. Ya está corregido… :)

    Comment by julianjm SPAIN Linux Mozilla Firefox 3.0 — 16 July 2008 @ 9:34

  18. Me volví loco hasta encontrar donde se almacenaban los iconos de las banderas xD, muy bien pensado. Ahora en la empresa usamos todos el script para hacer llamadas por asterisk desde la agenda, nos ha sido de gran utilidad.
    Gracias y un saludo.

    Comment by Jose Maria Olea SPAIN Windows XP Mozilla Firefox 3.0.3 — 5 November 2008 @ 12:53

RSS feed for comments on this post. | TrackBack URI

XHTML ( Puedes usar estas etiquetas): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .