<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Guax &#187; php</title>
	<atom:link href="http://www.guax.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guax.net</link>
	<description>“…is like having your brains smashed out by a slice of lemon wrapped round a large gold brick.”</description>
	<lastBuildDate>Mon, 21 Jun 2010 16:17:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>pub: Asterisk novo e remoção do php</title>
		<link>http://www.guax.net/2010/01/pub-asterisk-novo-e-remocao-do-php/</link>
		<comments>http://www.guax.net/2010/01/pub-asterisk-novo-e-remocao-do-php/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 01:02:26 +0000</pubDate>
		<dc:creator>guax</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[guax.net]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pub/]]></category>

		<guid isPermaLink="false">http://www.guax.net/?p=283</guid>
		<description><![CDATA[Mais uma atualização no pub/. Atualizei o asterisk para o 1.4.29 e removi o php já que a versão que vem no slackware 13.0+ contém as flags que eu queria. =)]]></description>
			<content:encoded><![CDATA[<p>Mais uma atualização no <a href="http://www.guax.net/pub/">pub/</a>. Atualizei o <a href="http://www.guax.net/pub/slackware/sources/asterisk/">asterisk</a> para o 1.4.29 e removi o php já que a versão que vem no slackware 13.0+ contém as flags que eu queria. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guax.net/2010/01/pub-asterisk-novo-e-remocao-do-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slackbuild: PHP</title>
		<link>http://www.guax.net/2009/08/slackbuild-php/</link>
		<comments>http://www.guax.net/2009/08/slackbuild-php/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 16:47:26 +0000</pubDate>
		<dc:creator>guax</dc:creator>
				<category><![CDATA[Slackbuilds]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[slackbuild]]></category>

		<guid isPermaLink="false">http://www.guax.net/?p=47</guid>
		<description><![CDATA[Mais um slackbuild para o pub/. Este é o segundo script de construção de pacotes customizado por mim distruibuido aqui. Trata-se do slackbuild oficial do Slackware para PHP 5.2.10 modificado para incluir suporte a PostgreSQL. A lista de modificações é: Suporte a PostgreSQL, também via PDO. Compilado para i686. Make com 3 jobs e não [...]]]></description>
			<content:encoded><![CDATA[<p>Mais um slackbuild para o <a href="http://www.guax.net/pub/" target="_blank">pub/</a>. Este é o segundo script de construção de pacotes customizado por mim distruibuido aqui. Trata-se do slackbuild oficial do Slackware para PHP 5.2.10 modificado para incluir suporte a PostgreSQL. A lista de modificações é:</p>
<ul>
<li>Suporte a PostgreSQL, também via PDO.</li>
<li>Compilado para i686.</li>
<li>Make com 3 jobs e não 7 (sou pobre).</li>
</ul>
<p>É isso <img src='http://www.guax.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Para download <a href="http://www.guax.net/pub/slackware/packages/" target="_blank">pub/slackware/packages/</a> ou <a href="http://www.guax.net/pub/slackware/sources/php/" target="_blank">pub/slackware/sources/php/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guax.net/2009/08/slackbuild-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capturas por grupo no Asterisk</title>
		<link>http://www.guax.net/2009/07/capturas-por-grupo-no-asterisk/</link>
		<comments>http://www.guax.net/2009/07/capturas-por-grupo-no-asterisk/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 20:56:54 +0000</pubDate>
		<dc:creator>guax</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agi]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.guax.net/?p=11</guid>
		<description><![CDATA[Um dos problemas que enfrentamos em sistemas com Asterisk é a captura por grupo. Elas não funcionam quando se tem tecnologias diferentes em ramais e/ou se usa driver de canais de terceiros. Administrar isso se torna uma tarefa monstruosa e épica caso seu sistema seja muito grande, já que apesar de macros e modelos nos [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.asterisk.org/"><img class="aligncenter size-full wp-image-24" title="Asterisk" src="http://www.guax.net/wp-content/uploads/2009/07/Asterisk_logo1.png" alt="Asterisk" width="120" height="70" /></a>Um dos problemas que enfrentamos em sistemas com <a href="http://www.asterisk.org/" target="_blank">Asterisk</a> é a captura por grupo. Elas não funcionam quando se tem tecnologias diferentes em ramais e/ou se usa driver de canais de terceiros. Administrar isso se torna uma tarefa monstruosa e épica caso seu sistema seja muito grande, já que apesar de macros e modelos nos arquivos de configuração de tecnologias você precisa administrar vários deles, tarefa esta que se torna especialmente dolorosa em sistemas integrados com ramais espelhados em banco de dados.</p>
<p>Uma solução que eu implementei com sucesso até agora é a implementação manual de um sistema de capturas usando um script AGI e a app <a href="http://www.voip-info.org/wiki/view/Asterisk+cmd+Pickup" target="_blank">Pickup</a> presente por padrão no Asterisk.</p>
<p>A aplicação Pickup efetua capturas de ligações recebendo como parâmetro uma extensão em um contexto. Esse tipo de captura não me ajuda em nada na maioria das vezes mas a app Pickup tem uma boa carta na manga: o contexto <strong><em>PICKUPMARK</em></strong>.</p>
<p>Quando o contexto passado como parâmetro para a aplicação é PICKUPMARK a aplicação vai procurar ligações que contenham a variável de canal definida como o conteúdo do exten.  Ex: Pickup(desenvolvimento@PICKUPMARK) irá procurar ligações que contenham a variável PICKUPMARK definida como &#8216;desenvolvimento&#8217;.</p>
<p>Para marcar e  capturar é necessário encontrar o real realizador da chamada e resolver seu grupo, para isso eu uso um script <a href="http://www.voip-info.org/wiki/view/Asterisk+AGI" target="_blank">AGI</a> que faz a identificação do grupo de captura baseado no callerid do originador da chamada.</p>
<pre>;Configuração para extensão de captura
exten =&gt; _*8,1,AGI(resolv_pickup_group.php,${CALLERID(num)})
exten =&gt; _*8,n,<strong>Pickup(${PICKUPGROUP}@PICKUPMARK)</strong>
exten =&gt; _*8,n,Hangup</pre>
<p>O funcionamento desse AGI é muito simples, o que ele faz é uma consulta no banco de dados onde estão configurados meus ramais e retornar o grupo de captura referente ao ramal passado como parâmetro.</p>
<p>Usa-se o mesmo script para definir o grupo da ligação quando uma ligação é efetuada para o ramal, não esqueça de executar isso antes de cada dial para o ramal que se deseja ter essa feature ativa.</p>
<pre>;Configuração para extensão de captura
exten =&gt; _X.,1,AGI(resolv_pickup_group.php,${CALLERID(num)})
exten =&gt; _X.,n,<strong>Set(__PICKUPMARK=${PICKUPGROUP})</strong>
exten =&gt; _X.,n,Dial(${EXTEN},60,twk)
exten =&gt; _X.,n,Hangup</pre>
<p>Perceba o pulo do gato: ao atribuir a variável eu estou <strong>usando dois _ (underlines)</strong> antes do nome da variável para determinar herença infinita na variável. Assim não é necessário defini-la como variável global e sem isso a captura não funciona quando se tem ligações concorrentes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guax.net/2009/07/capturas-por-grupo-no-asterisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
