<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: Cómo integrar Asterisk con eGroupWare</title>
	<atom:link href="http://www.sinologic.net/2008-05/como-integrar-asterisk-con-egroupware/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sinologic.net/blog/2008-05/como-integrar-asterisk-con-egroupware/</link>
	<description>Tu blog sobre VoIP y Asterisk</description>
	<lastBuildDate>Tue, 09 Mar 2010 09:42:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: ru080</title>
		<link>http://www.sinologic.net/blog/2008-05/como-integrar-asterisk-con-egroupware/comment-page-1/#comment-824</link>
		<dc:creator>ru080</dc:creator>
		<pubDate>Mon, 19 May 2008 10:03:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.sinologic.net/?p=1459#comment-824</guid>
		<description>Pues parece que no, podéis verlo en la lista:
http://groups.google.es/group/asterisk-es/browse_frm/thread/2698983dacb56fd0/b9e4708e538d763f?hl=es&amp;lnk=gst&amp;q=Actualizaci%C3%B3n+din%C3%A1mica#b9e4708e538d763f</description>
		<content:encoded><![CDATA[<p>Pues parece que no, podéis verlo en la lista:<br />
<a href="http://groups.google.es/group/asterisk-es/browse_frm/thread/2698983dacb56fd0/b9e4708e538d763f?hl=es&amp;lnk=gst&amp;q=Actualizaci%C3%B3n+din%C3%A1mica#b9e4708e538d763f" rel="nofollow">http://groups.google.es/group/asterisk-es/browse_frm/thread/2698983dacb56fd0/b9e4708e538d763f?hl=es&amp;lnk=gst&amp;q=Actualizaci%C3%B3n+din%C3%A1mica#b9e4708e538d763f</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ru080</title>
		<link>http://www.sinologic.net/blog/2008-05/como-integrar-asterisk-con-egroupware/comment-page-1/#comment-823</link>
		<dc:creator>ru080</dc:creator>
		<pubDate>Mon, 19 May 2008 10:01:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.sinologic.net/?p=1459#comment-823</guid>
		<description>A ver si así me deja...borrar &quot;//&quot;
//</description>
		<content:encoded><![CDATA[<p>A ver si así me deja&#8230;borrar &#8220;//&#8221;<br />
//</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ru080</title>
		<link>http://www.sinologic.net/blog/2008-05/como-integrar-asterisk-con-egroupware/comment-page-1/#comment-821</link>
		<dc:creator>ru080</dc:creator>
		<pubDate>Mon, 19 May 2008 09:57:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.sinologic.net/?p=1459#comment-821</guid>
		<description>* Script en php para pasar el XML al teléfono por HTTP en vez de
        usar el FTP:

</description>
		<content:encoded><![CDATA[<p>* Script en php para pasar el XML al teléfono por HTTP en vez de<br />
        usar el FTP:</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: ru080</title>
		<link>http://www.sinologic.net/blog/2008-05/como-integrar-asterisk-con-egroupware/comment-page-1/#comment-820</link>
		<dc:creator>ru080</dc:creator>
		<pubDate>Mon, 19 May 2008 09:56:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.sinologic.net/?p=1459#comment-820</guid>
		<description>Otra forma de hacerlo es sincronizar la &quot;Asterisk CallerID database&quot; 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: &quot;gs_phonebook.xml&quot; con la agenda para el teléfono, en mi caso un GPX2000. Sólo pasará los contactos cuyo nombre empiece por &quot;*&quot;, no se cuanto es el límite de contactos para este teléfono, pero la agenda completa no me la acepta.

      * el script &quot;/tmp/phonebook.sh&quot; 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:
      * &quot;exten=&gt; s,n,LookupCIDName(${CALLERIDNUM})&quot; para Asterisk1.2
      * &quot;exten = s,n,Set(CALLERID(name)=
        ${DB(cidname/${CALLERID(num)})})&quot; 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 &quot;cron&quot; para automatizar la tarea:

crontab -l
# m h  dom mon dow   command
#0 4 * * *       curl http://localhost/gs.php &gt;/dev/null 2&gt;&amp;1 /dev/null
#15 4 * * *      sh /tmp/phonebook.sh &gt;/dev/null 2&gt;&amp;1 /dev/null

      * Script en php principal: gs.php:

&lt;?php

//Cambiar los **** por los datos de vuestra BBDD
$host = &quot;******&quot;;
$user = &quot;******&quot;;
$pass = &quot;******&quot;;
$database = &quot;******&quot;;
$linkID = mysql_connect($host, $user, $pass) or die(&quot;Could not connect
to host.&quot;);
mysql_select_db($database, $linkID) or die(&quot;Could not find database.&quot;);

//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 = &quot;SELECT fn, org_name, tel_work, tel_cell, tel_fax FROM
egw_addressbook ORDER BY fn&quot;;

$resultID = mysql_query($query, $linkID) or die(&quot;Data not found.&quot;);
print(&quot;\n&quot;);
$xml_output = &quot;\n&quot;;
$xml_output .= &quot;\n&quot;;
$sh_output = &quot;#!/bin/bash\n&quot;;

for($x = 0 ; $x &lt; mysql_num_rows($resultID) ; $x++){
//le damos &quot;forma&quot; a los datos
        $row = mysql_fetch_assoc($resultID);
        $msg = trim($row[&#039;fn&#039;]);
        $msg = ereg_replace(&quot;[[:space:]]&quot;,&quot;_&quot;,$msg);
        $msg = ereg_replace(&quot;_+&quot;,&quot;_&quot;,$msg);
        $msg2 = trim($row[&#039;org_name&#039;]);
        $msg2 = ereg_replace(&quot;[[:space:]]&quot;,&quot;_&quot;,$msg2);
        $msg2 = ereg_replace(&quot;_+&quot;,&quot;_&quot;,$msg2);
        $msg3 = substr($msg,1);
        $busqueda=array
(&#039;&#225;&#039;,&#039;&#193;&#039;,&#039;&#233;&#039;,&#039;&#201;&#039;,&#039;&#237;&#039;,&#039;&#205;&#039;,&#039;&#243;&#039;,&#039;&#211;&#039;,&#039;&#250;&#039;,&#039;&#218;&#039;,&#039;&#241;&#039;,&#039;&#186;&#039;,&#039;&#170;&#039;,&#039;&amp;&#039;,&#039;&#252;&#039;);
        $reemplazar=array
(&#039;a&#039;,&#039;A&#039;,&#039;e&#039;,&#039;E&#039;,&#039;i&#039;,&#039;I&#039;,&#039;o&#039;,&#039;O&#039;,&#039;u&#039;,&#039;U&#039;,&#039;n&#039;,&#039;o&#039;,&#039;a&#039;,&#039;&amp;&#039;,&#039;u&#039;);

//comprobamos el campo del teléfono móvil
if(is_numeric($row[&#039;tel_cell&#039;])){
        $num = trim($row[&#039;tel_cell&#039;]);
        $cadena3=&#039;(M)&#039;.$msg3.&#039;-&#039;.$msg2;
        $cadena=&#039;(M)&#039;.$msg.&#039;-&#039;.$msg2;
        $cadena2 = htmlentities($cadena);
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);

//si empieza por &quot;*&quot; lo añadimos al XML sin el &quot;*&quot;
        if (eregi(&quot;^[*]&quot;,$msg)){
                $xml_output .= &quot;\t\n&quot;;
                $xml_output .= &quot;\t\t&quot; . $cadena3 .
&quot;\n&quot;;
                $xml_output .= &quot;\t\t\t\n\t\t\t\t&quot; .
$num . &quot;\n&quot;;
                $xml_output .= &quot;\t\t\t
\t0\n&quot;;
                $xml_output .= &quot;\t\t\t\n&quot;;
                $xml_output .= &quot;\t\n&quot;;
        }else{}
$sh_output .= &quot;/usr/sbin/asterisk -rx \&quot;database put cidname $num
$cadena2\&quot;\n&quot;;

}else{}

//comprobamos el campo del teléfono fijo
if(is_numeric($row[&#039;tel_work&#039;])){
        $num = trim($row[&#039;tel_work&#039;]);
        $cadena3=&#039;(T)&#039;.$msg3.&#039;-&#039;.$msg2;
        $cadena=&#039;(T)&#039;.$msg.&#039;-&#039;.$msg2;
        $cadena2 = htmlentities($cadena);
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);

//si empieza por &quot;*&quot; lo añadimos al XML sin el &quot;*&quot;
        if (eregi(&quot;^[*]&quot;,$msg)){
                $xml_output .= &quot;\t\n&quot;;
                $xml_output .= &quot;\t\t&quot; . $cadena3 .
&quot;\n&quot;;
                $xml_output .= &quot;\t\t\t\n\t\t\t\t&quot; .
$num . &quot;\n&quot;;
                $xml_output .= &quot;\t\t\t
\t0\n&quot;;
                $xml_output .= &quot;\t\t\t\n&quot;;
                $xml_output .= &quot;\t\n&quot;;
        }else{}
$sh_output .= &quot;/usr/sbin/asterisk -rx \&quot;database put cidname $num
$cadena2\&quot;\n&quot;;

}else{}

//comprobamos el campo del fax
if(is_numeric($row[&#039;tel_fax&#039;])){
        $num = trim($row[&#039;tel_fax&#039;]);
        $cadena=&#039;(F)&#039;.$msg.&#039;-&#039;.$msg2;
        $cadena2 = htmlentities($cadena);
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);
$sh_output .= &quot;/usr/sbin/asterisk -rx \&quot;database put cidname $num
$cadena2\&quot;\n&quot;;

}else{}
}

$xml_output .= &quot;\n&quot;;

//creamos el archivo XML para el teléfono
$fp = fopen(&#039;gs_phonebook.xml&#039;, &#039;wb&#039;);
fwrite($fp, $xml_output);
fclose($fp);

//creamos el script para actualizar &quot;Asterisk CallerID database&quot;
$fs = fopen(&#039;/tmp/phonebook.sh&#039;, &#039;wb&#039;);
fwrite($fs, $sh_output);
fclose($fs);

echo $xml_output;
?&gt;

      * Script en php para pasar el XML al teléfono por HTTP en vez de
        usar el FTP:

</description>
		<content:encoded><![CDATA[<p>Otra forma de hacerlo es sincronizar la &#8220;Asterisk CallerID database&#8221; y de paso te cree el XML para el teléfono.</p>
<p>Espero que os sirva, el código no está demasiado comentado, así que si tenéis alguna duda o alguna idea para mejorarlo&#8230;</p>
<p>El código a partir de una BBDD en MySQL, crea:</p>
<p>      * el archivo XML: &#8220;gs_phonebook.xml&#8221; con la agenda para el teléfono, en mi caso un GPX2000. Sólo pasará los contactos cuyo nombre empiece por &#8220;*&#8221;, no se cuanto es el límite de contactos para este teléfono, pero la agenda completa no me la acepta.</p>
<p>      * el script &#8220;/tmp/phonebook.sh&#8221; que pasa los contactos al Asterisk CallerID database.</p>
<p>Los datos los guardará con lo siguiente al inicio de cada contacto:<br />
      * (T): Para los teléfonos fijos.<br />
      * (M): Para los teléfonos móviles.<br />
      * (F): Para los Faxes. (Estos por lógica no se pasarán al XML)</p>
<p>De esta forma que cuando nos llamen, añadiendo:<br />
      * &#8220;exten=&gt; s,n,LookupCIDName(${CALLERIDNUM})&#8221; para Asterisk1.2<br />
      * &#8220;exten = s,n,Set(CALLERID(name)=<br />
        ${DB(cidname/${CALLERID(num)})})&#8221; para Asterisk1.4<br />
al dialplan tendremos el nombre de quien nos llama en la pantalla de<br />
nuestro teléfono y lo guardará en el CDR.</p>
<p>*Podemos usar &#8220;cron&#8221; para automatizar la tarea:</p>
<p>crontab -l<br />
# m h  dom mon dow   command<br />
#0 4 * * *       curl <a href="http://localhost/gs.php" rel="nofollow">http://localhost/gs.php</a> &gt;/dev/null 2&gt;&amp;1 /dev/null<br />
#15 4 * * *      sh /tmp/phonebook.sh &gt;/dev/null 2&gt;&amp;1 /dev/null</p>
<p>      * Script en php principal: gs.php:</p>
<p>&lt;?php</p>
<p>//Cambiar los **** por los datos de vuestra BBDD<br />
$host = &#8220;******&#8221;;<br />
$user = &#8220;******&#8221;;<br />
$pass = &#8220;******&#8221;;<br />
$database = &#8220;******&#8221;;<br />
$linkID = mysql_connect($host, $user, $pass) or die(&#8220;Could not connect<br />
to host.&#8221;);<br />
mysql_select_db($database, $linkID) or die(&#8220;Could not find database.&#8221;);</p>
<p>//Cambiar los campos de vuestra BBDD,<br />
//pero acordaros de hacerlo en todo el código<br />
//fn: Nombre<br />
//org_name: Empresa<br />
//tel_work: Número fijo<br />
//tel_cell: Número móvil<br />
//tel_fax: Número de Fax<br />
$query = &#8220;SELECT fn, org_name, tel_work, tel_cell, tel_fax FROM<br />
egw_addressbook ORDER BY fn&#8221;;</p>
<p>$resultID = mysql_query($query, $linkID) or die(&#8220;Data not found.&#8221;);<br />
print(&#8220;\n&#8221;);<br />
$xml_output = &#8220;\n&#8221;;<br />
$xml_output .= &#8220;\n&#8221;;<br />
$sh_output = &#8220;#!/bin/bash\n&#8221;;</p>
<p>for($x = 0 ; $x &lt; mysql_num_rows($resultID) ; $x++){<br />
//le damos &#8220;forma&#8221; a los datos<br />
        $row = mysql_fetch_assoc($resultID);<br />
        $msg = trim($row['fn']);<br />
        $msg = ereg_replace(&#8220;[[:space:]]&#8221;,&#8221;_&#8221;,$msg);<br />
        $msg = ereg_replace(&#8220;_+&#8221;,&#8221;_&#8221;,$msg);<br />
        $msg2 = trim($row['org_name']);<br />
        $msg2 = ereg_replace(&#8220;[[:space:]]&#8221;,&#8221;_&#8221;,$msg2);<br />
        $msg2 = ereg_replace(&#8220;_+&#8221;,&#8221;_&#8221;,$msg2);<br />
        $msg3 = substr($msg,1);<br />
        $busqueda=array<br />
(&#8216;&aacute;&#8217;,'&Aacute;&#8217;,'&eacute;&#8217;,'&Eacute;&#8217;,'&iacute;&#8217;,'&Iacute;&#8217;,'&oacute;&#8217;,'&Oacute;&#8217;,'&uacute;&#8217;,'&Uacute;&#8217;,'&ntilde;&#8217;,'&ordm;&#8217;,'&ordf;&#8217;,'&amp;&#8217;,'&uuml;&#8217;);<br />
        $reemplazar=array<br />
(&#8216;a&#8217;,'A&#8217;,'e&#8217;,'E&#8217;,'i&#8217;,'I&#8217;,'o&#8217;,'O&#8217;,'u&#8217;,'U&#8217;,'n&#8217;,'o&#8217;,'a&#8217;,'&amp;&#8217;,'u&#8217;);</p>
<p>//comprobamos el campo del teléfono móvil<br />
if(is_numeric($row['tel_cell'])){<br />
        $num = trim($row['tel_cell']);<br />
        $cadena3=&#8217;(M)&#8217;.$msg3.&#8217;-&#8217;.$msg2;<br />
        $cadena=&#8217;(M)&#8217;.$msg.&#8217;-&#8217;.$msg2;<br />
        $cadena2 = htmlentities($cadena);<br />
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);</p>
<p>//si empieza por &#8220;*&#8221; lo añadimos al XML sin el &#8220;*&#8221;<br />
        if (eregi(&#8220;^[*]&#8220;,$msg)){<br />
                $xml_output .= &#8220;\t\n&#8221;;<br />
                $xml_output .= &#8220;\t\t&#8221; . $cadena3 .<br />
&#8220;\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t\n\t\t\t\t&#8221; .<br />
$num . &#8220;\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t<br />
\t0\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t\n&#8221;;<br />
                $xml_output .= &#8220;\t\n&#8221;;<br />
        }else{}<br />
$sh_output .= &#8220;/usr/sbin/asterisk -rx \&#8221;database put cidname $num<br />
$cadena2\&#8221;\n&#8221;;</p>
<p>}else{}</p>
<p>//comprobamos el campo del teléfono fijo<br />
if(is_numeric($row['tel_work'])){<br />
        $num = trim($row['tel_work']);<br />
        $cadena3=&#8217;(T)&#8217;.$msg3.&#8217;-&#8217;.$msg2;<br />
        $cadena=&#8217;(T)&#8217;.$msg.&#8217;-&#8217;.$msg2;<br />
        $cadena2 = htmlentities($cadena);<br />
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);</p>
<p>//si empieza por &#8220;*&#8221; lo añadimos al XML sin el &#8220;*&#8221;<br />
        if (eregi(&#8220;^[*]&#8220;,$msg)){<br />
                $xml_output .= &#8220;\t\n&#8221;;<br />
                $xml_output .= &#8220;\t\t&#8221; . $cadena3 .<br />
&#8220;\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t\n\t\t\t\t&#8221; .<br />
$num . &#8220;\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t<br />
\t0\n&#8221;;<br />
                $xml_output .= &#8220;\t\t\t\n&#8221;;<br />
                $xml_output .= &#8220;\t\n&#8221;;<br />
        }else{}<br />
$sh_output .= &#8220;/usr/sbin/asterisk -rx \&#8221;database put cidname $num<br />
$cadena2\&#8221;\n&#8221;;</p>
<p>}else{}</p>
<p>//comprobamos el campo del fax<br />
if(is_numeric($row['tel_fax'])){<br />
        $num = trim($row['tel_fax']);<br />
        $cadena=&#8217;(F)&#8217;.$msg.&#8217;-&#8217;.$msg2;<br />
        $cadena2 = htmlentities($cadena);<br />
        $cadena2 = str_replace($busqueda, $reemplazar, $cadena2);<br />
$sh_output .= &#8220;/usr/sbin/asterisk -rx \&#8221;database put cidname $num<br />
$cadena2\&#8221;\n&#8221;;</p>
<p>}else{}<br />
}</p>
<p>$xml_output .= &#8220;\n&#8221;;</p>
<p>//creamos el archivo XML para el teléfono<br />
$fp = fopen(&#8216;gs_phonebook.xml&#8217;, &#8216;wb&#8217;);<br />
fwrite($fp, $xml_output);<br />
fclose($fp);</p>
<p>//creamos el script para actualizar &#8220;Asterisk CallerID database&#8221;<br />
$fs = fopen(&#8216;/tmp/phonebook.sh&#8217;, &#8216;wb&#8217;);<br />
fwrite($fs, $sh_output);<br />
fclose($fs);</p>
<p>echo $xml_output;<br />
?&gt;</p>
<p>      * Script en php para pasar el XML al teléfono por HTTP en vez de<br />
        usar el FTP:</p>
]]></content:encoded>
	</item>
</channel>
</rss>
