<?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>Fred Posner (.com) &#187; VoIP</title>
	<atom:link href="http://www.fredposner.com/category/voip/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fredposner.com</link>
	<description>The World of FISPosner.</description>
	<lastBuildDate>Fri, 27 Jan 2012 21:26:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blogged&#8230;</title>
		<link>http://www.fredposner.com/voip/1024/blogged/</link>
		<comments>http://www.fredposner.com/voip/1024/blogged/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 14:31:24 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.fredposner.com/?p=1024</guid>
		<description><![CDATA[I actually blogged today, on VoIP Tech Chat about Sprint&#8217;s 4G &#8220;Coverage.&#8221; =) » Read the blog post at VoIP Tech Chat]]></description>
			<content:encoded><![CDATA[<p>I actually blogged today, on <strong>VoIP Tech Chat</strong> about Sprint&#8217;s 4G &#8220;Coverage.&#8221; =)</p>
<p><a title="Sprint 4G Coverage - Maps Lie on VoIP Tech Chat" href="http://www.voiptechchat.com/voip/727/sprint-4g-coverage-maps-lie/" onclick="pageTracker._trackPageview('/outgoing/www.voiptechchat.com/voip/727/sprint-4g-coverage-maps-lie/?referer=');">» Read the blog post at VoIP Tech Chat</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fredposner.com/voip/1024/blogged/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hi. My name is Fred, and I&#8217;m a Kamailian.</title>
		<link>http://www.fredposner.com/voip/901/i-am-a-kamailian/</link>
		<comments>http://www.fredposner.com/voip/901/i-am-a-kamailian/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 21:31:23 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[Kamailio]]></category>
		<category><![CDATA[OpenSER]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.fredposner.com/?p=901</guid>
		<description><![CDATA[I got thrown into VoIP in a sink or swim situation — and thankfully, I&#8217;m a strong swimmer. I&#8217;ve talked previously about my love of phones. Growing up in New York City, my family would purposely avoid walking on certain &#8230; <a href="http://www.fredposner.com/voip/901/i-am-a-kamailian/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got thrown into VoIP in a sink or swim situation — and thankfully, <strong>I&#8217;m a strong swimmer</strong>. I&#8217;ve talked previously about my love of phones. Growing up in New York City, my family would purposely avoid walking on certain blocks to avoid me seeing pay-phones. As a child, I loved phones. <strong>I still love phones</strong>.</p>
<p>My love of phones made me what I am today. I am a Kamailian. <span id="more-901"></span></p>
<p>I didn&#8217;t invent this word. <strong>I flat out stole it</strong> from <a href="http://by-miconda.blogspot.com/2011/07/3-years-of-kamailio.html" onclick="pageTracker._trackPageview('/outgoing/by-miconda.blogspot.com/2011/07/3-years-of-kamailio.html?referer=');">Daniel-Constantin Mierla</a> (<em>he&#8217;s to Kamailians what L. Ron Hubbard is to Scientologists</em>).</p>
<h2>What are you talking about? What&#8217;s a Kamailian?</h2>
<p>Kamailians are those who believe and practice the art of Kamailio — the greatest SIP server that the world has ever seen.</p>
<blockquote><p>Kamailio (former OpenSER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Among features: asynchronous TCP, UDP and SCTP, secure communication via TLS for VoIP (voice, video), SIMPLE instant messaging and presence, ENUM, least cost routing, load balancing, routing fail-over, accounting, authentication and authorization against MySQL, Postgres, Oracle, Radius, LDAP, XMLRPC control interface, SNMP monitoring. It can be used to build large VoIP servicing platforms or to scale up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk™, FreeSWITCH™ or SEMS. (<a href="http://www.kamailio.org" onclick="pageTracker._trackPageview('/outgoing/www.kamailio.org?referer=');">www.kamailio.org</a>)</p></blockquote>
<p>For my non-geek readers (like you&#8217;d even still be reading), Kamailio allows phones to communicate with each other. Lots of phones. <strong>Think US Budget numbers</strong>. Kamailio does this in a way that is very efficient, very fast, and very stable — which is exactly what you need when deploying phone systems.</p>
<p>Of course Kamailio isn&#8217;t limited to phones&#8230; but we&#8217;ll talk about that another day.</p>
<h2>Why Kamailio? What does Kamailio mean?</h2>
<p>When I first started in VoIP, I used a product named OpenSER (SER stands for SIP Express Router). The product was actually a &#8220;fork&#8221; of the original SER started years earlier. OpenSER worked extremely well — and we used the product to handle 30k+ concurrent registrations, thousands of simultaneous calls, and blistering call set-up rates. The product worked. It worked well. It worked often. Color Fred impressed.</p>
<p><strong>I tell you that story to tell you this story&#8230;</strong> sometimes open-source projects are a happy-happy-joy-joy group of people where disagreements are settled using skills learned from My Little Ponies. <strong>More often, it&#8217;s not</strong>. In 2008, the OpenSER project split (&#8220;forked&#8221;) in a very bad way. This was a very black/white, my side/your side, bloods/crips, Luke/Vader kind of split. You were one or the other&#8230; and many of us didn&#8217;t know where to go.</p>
<p>I talked to as many OpenSER users as possible. Many of whom I only knew by IRC handles or email; some were unsure, some were choosing one side, and some chose the other. In the end, I joined the side with the majority of people I respected in the industry&#8230; and haven&#8217;t looked back. The split, to this day, remains one of the ugliest I&#8217;ve seen in open-source projects— well at least with projects that I&#8217;ve been active.</p>
<p><strong>Kamailio</strong> is the former OpenSER project. <strong>Kamailio</strong>, a Hawaiian word, <strong>means talk, to converse</strong>. Those that embrace Kamailio are Kamailians.</p>
<p>So, if you&#8217;re looking for an amazing SIP server that can handle all the traffic you can bring, can provide stability, and loves to work, look no further than Kamailio. It&#8217;s what you&#8217;ve been looking for. The <a href="http://qxork.com" onclick="pageTracker._trackPageview('/outgoing/qxork.com?referer=');">consultants</a> are friendly, professional, and reliable. Plus&#8230; we have cookies.</p>
<p>Congratulations on 10 years of SER and a huge thank you to all of the contributors to Kamailio — celebrating it&#8217;s 3rd year of drama free SIP serving.</p>
<h3>Read More</h3>
<ul>
<li>By MiConDa: <a href="http://by-miconda.blogspot.com/2011/07/3-years-of-kamailio.html" onclick="pageTracker._trackPageview('/outgoing/by-miconda.blogspot.com/2011/07/3-years-of-kamailio.html?referer=');">3 years of Kamailio</a></li>
<li><a href="http://www.kamailio.org/w/" onclick="pageTracker._trackPageview('/outgoing/www.kamailio.org/w/?referer=');">Kamailio SIP Server</a></li>
<li><a href="http://www.kamailio.org/w/business-directory/" onclick="pageTracker._trackPageview('/outgoing/www.kamailio.org/w/business-directory/?referer=');">Kamailio Business Directory</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fredposner.com/voip/901/i-am-a-kamailian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geeky Item of the Day &#8211; Free CNAM</title>
		<link>http://www.fredposner.com/voip/413/geeky-item-of-the-day-free-cnam/</link>
		<comments>http://www.fredposner.com/voip/413/geeky-item-of-the-day-free-cnam/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 13:57:57 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.fredposner.com/?p=413</guid>
		<description><![CDATA[Ok, if you use Asterisk (or a Do It Yourself type VoIP service), you sometimes do not receive the CNAM (think Caller ID with Name data) from your carrier. Well, since geeks like information and anything &#8220;free,&#8221; there&#8217;s a simple &#8230; <a href="http://www.fredposner.com/voip/413/geeky-item-of-the-day-free-cnam/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ok, if you use Asterisk (or a Do It Yourself type VoIP service), you sometimes do not receive the CNAM (think Caller ID with Name data) from your carrier. Well, since geeks like information and anything &#8220;free,&#8221; there&#8217;s a simple way to use the internet to do a reverse number lookup query. So, if you&#8217;re a technical type, keep reading&#8230; otherwise, non-geek posts will return very soon.</p>
<p><span id="more-413"></span>So, using a simple Perl script, you can check many resources and attempt to get the calling party&#8217;s name. There are tons of caller id lookup scripts out there, but most require the Asterisk Perl AGI module, a localized NPA/NXX database, or a local database query.</p>
<p>Since I don&#8217;t like installing the module, don&#8217;t want to install a local lookup table, and don&#8217;t wish to cache CID names in a database, I&#8217;ve modified publicly available scripts as follows (<a href="http://www.teamforrest.com/voip/89/using-agi-to-get-caller-id-name-cnam/" onclick="pageTracker._trackPageview('/outgoing/www.teamforrest.com/voip/89/using-agi-to-get-caller-id-name-cnam/?referer=');">also, check up the write up on Team Forrest, with a little more detail</a>):</p>
<p class="alert">Update: AnyWho changed their url and format, the new code is live on <a href="http://www.teamforrest.com/voip/89/using-agi-to-get-caller-id-name-cnam/" onclick="pageTracker._trackPageview('/outgoing/www.teamforrest.com/voip/89/using-agi-to-get-caller-id-name-cnam/?referer=');">Team Forrest</a> but the old code is still below.</p>
<pre>#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
$|=1;
sub trim($);

my %AGI; my $tests = 0; my $fail = 0; my $pass = 0; my $result = ""; my $cidnum = ""; my $cidname = "";
my $npa = ""; my $nxx = ""; my $station = ""; my $name = "";

$cidnum = $ARGV[0];

while(&lt;STDIN&gt;) {
	chomp;
	last unless length($_);
	if (/^agi_(\w+)\:\s+(.*)$/) {
		$AGI{$1} = $2;
	}
}

my $AnyWho = '1' ;
my $Google = '1' ;
my $www411 = '1' ;

if(substr($cidnum,0,1) eq '1'){
$cidnum=substr($cidnum,1);
}

if(substr($cidnum,0,2) eq '+1'){
$cidnum=substr($cidnum,2);
}

if ($cidnum =~ /^(\d{3})(\d{3})(\d{4})$/) {
	$npa = $1;
	$nxx = $2;
	$station = $3;
	}
elsif($cidnum =~/\&lt;(\d{3})(\d{3})(\d{4})\&gt;/){
	$npa = $1;
	$nxx = $2;
	$station = $3;
	}
else {
	print qq(VERBOSE "ERROR: unable to parse caller id" 2\n);
	exit(0);
} 

if ($AnyWho &gt; '0') {
	print qq(VERBOSE "STATUS: checking AnyWho for name lookup" 2\n);
	if ($name = &amp;anywho_lookup ($npa, $nxx, $station)) {
		$cidname = $name;
		print qq(SET VARIABLE CALLERID\(name\) "$cidname"\n);
		print qq(VERBOSE "STATUS: AnyWho said name was $cidname " 2\n);
		exit(0);
		}
	else {
		print qq(VERBOSE "STATUS: unable to find name with AnyWho" 2\n);
		}
	}
else {
	print qq(VERBOSE "STATUS: AnyWho lookup disabled" 2\n);
}

if ($Google &gt; '0') {
	print qq(VERBOSE "STATUS: checking Google for name lookup" 2\n);
	if ($name = &amp;google_lookup ($npa, $nxx, $station)) {
		$cidname = $name;
		print qq(SET VARIABLE CALLERID\(name\) "$cidname"\n);
		print qq(VERBOSE "STATUS: Google said name was $cidname " 2\n);
		exit(0);
		}
	else {
		print qq(VERBOSE "STATUS: unable to find name with Google" 2\n);
		}
	}
else {
	print qq(VERBOSE "STATUS: Google lookup disabled" 2\n);
}

if ($www411 &gt; '0') {
	print qq(VERBOSE "STATUS: checking www411 for name lookup" 2\n);
	if ($name = &amp;www411_lookup ($npa, $nxx, $station)) {
		$cidname = $name;
		print qq(SET VARIABLE CALLERID\(name\) "$cidname"\n);
		print qq(VERBOSE "STATUS: www411 said name was $cidname " 2\n);
		exit(0);
		}
	else {
		print qq(VERBOSE "STATUS: unable to find name with www411" 2\n);
		}
	}
else {
	print qq(VERBOSE "STATUS: www411 lookup disabled" 2\n);
}

print qq(SET VARIABLE CALLERID\(name\) "$cidnum"\n);
print qq(VERBOSE "STATUS: Unknown name for $cidnum " 2\n);
exit(0); 

sub anywho_lookup {
	my ($npa, $nxx, $station) = @_;
	my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
	my $URL = 'http://www.anywho.com/qry/wp_rl';
	$URL .= '?npa=' . $npa . '&amp;telephone=' . $nxx . $station;
	$ua-&gt;agent('AsteriskAGIQuery/1');
	my $req = new HTTP::Request GET =&gt; $URL;
	my $res = $ua-&gt;request($req);
	if ($res-&gt;is_success()) {
		if ($res-&gt;content =~ /&lt;!-- listing --&gt;(.*)&lt;!-- \/listing --&gt;/s) {
			my $listing = $1;
			if ($listing =~ /&lt;B&gt;(.*)&lt;\/B&gt;/) {
				my $clidname = $1;
				return $clidname;
			}
		}
	}
	return "";
}

sub google_lookup {
  my ($npa, $nxx, $station) = @_;
  my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
  my $URL = 'http://www.google.com/search?rls=en&amp;q=phonebook:' .  $npa . $nxx . $station . '&amp;ie=UTF-8&amp;oe=UTF-8';
  $ua-&gt;agent('AsteriskAGIQuery/1');
  my $req = new HTTP::Request GET =&gt; $URL;
  my $res = $ua-&gt;request($req);
  if ($res-&gt;is_success()) {
    if ($res-&gt;content =~ /&lt;font size=-2&gt;&lt;br&gt;&lt;\/font&gt;&lt;font size=-1&gt;(.+)&lt;font color=green&gt;/) {
      my $temp = $1;
      my $clidname = "";
      if ( $temp =~ /(.+)&lt;font color=green&gt;/o ) {
        $clidname = substr($1, 0, -3);
      } else {
        $clidname = substr($temp, 0, -3);
      }
      if ($clidname =~ /&lt;a href(.+)\//) {
        $clidname = $1 ;
        if ($clidname =~ /&gt;(.+)&lt;/) {
          $clidname = $1 ;
        }
      }
      return $clidname;
    }
  }
  return "";
} 

sub www411_lookup {
  my ($npa, $nxx, $station) = @_;
  my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
  my $URL = 'http://www.411.com/search/Reverse_Phone?phone=' .  $npa . $nxx . $station;
  $ua-&gt;agent('AsteriskAGIQuery/1');
  my $req = new HTTP::Request GET =&gt; $URL;
  my $res = $ua-&gt;request($req);
  if ($res-&gt;is_success()) {
    if ($res-&gt;content =~ /Location: &lt;strong&gt;(.*)&lt;\/strong&gt;/s) {
      my $temp = $1;
      my $clidname = "";
      $temp =~ s/&amp;amp\;/&amp;/g;
      $temp =~ s/%20/ /g;
						$clidname = $temp;
		    return $clidname;
     }
  }
  return "";
}</pre>
<p>Basically, what the script does is lookup the cidname from the CID number. I pass the script an argument (the caller id number) and it checks AnyWho, Google, and 411.com (in order). I chose 411 last and just use it to replace an NPA/NXX table. Basically, if AnyWho and Google fail, I&#8217;m assuming it&#8217;s a cell phone or unlisted number and will assume 411 will only return a location. If all fails, the script sets the callerid name to be the callerid number.</p>
<p>I&#8217;ve integrated it into asterisk by first creating a lookup context:</p>
<pre>[cidname-lookup]
exten =&gt; s,1,NoOp(looking up callerid name)
exten =&gt; s,n,GotoIf($["foo${CALLERID(NAME)}" = "foo" ]?getname)
exten =&gt; s,n,GotoIf($["${CALLERID(NAME)}" = "${CALLERID(NUM)}" ]?getname)
exten =&gt; s,n,NoOp(caller id name exists as ${CALLERID(NAME)})
exten =&gt; s,n,Return
exten =&gt; s,n(getname),AGI(calleridname.pl,${CALLERID(NUM)})
exten =&gt; s,n,NoOp(Caller ID Name is now ${CALLERID(NAME)})
exten =&gt; s,n,Return</pre>
<p>Basically, if the callerid name is present (and not the phonenumber), run the script. You can then call the script from anywhere in your Asterisk dialplan using a gosub routine. Such as:</p>
<pre>exten =&gt; s,n,Gosub(cidname-lookup,s,1)
exten =&gt; s,n,dial(${FREDPHONE},30,mt)</pre>
<p>Are there other ways to do this? Absolutely. And some even better <img src='http://www.fredposner.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  This way works for me&#8230; until I see a better way of doing it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fredposner.com/voip/413/geeky-item-of-the-day-free-cnam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geeky Item of the Day</title>
		<link>http://www.fredposner.com/yeni/393/geeky-item-of-the-day/</link>
		<comments>http://www.fredposner.com/yeni/393/geeky-item-of-the-day/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 15:31:32 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Yeni]]></category>
		<category><![CDATA[Ann Arbor]]></category>
		<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[polycom]]></category>
		<category><![CDATA[telephone]]></category>

		<guid isPermaLink="false">http://www.fredposner.com/?p=393</guid>
		<description><![CDATA[I have a new phone on my desk (or as Yeni calls it, the mesk). Why mesk? Combines messy and desk… but I digress (as usual). As I was saying, I recently purchased a Polycom Soundpoint IP 450 phone. The &#8230; <a href="http://www.fredposner.com/yeni/393/geeky-item-of-the-day/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_396" class="wp-caption alignright" style="width: 310px"><a href="http://www.fredposner.com/wp-content/uploads/2009/01/polycom-weather.jpg"><img class="size-medium wp-image-396" title="polycom-weather" src="http://www.fredposner.com/wp-content/uploads/2009/01/polycom-weather-300x200.jpg" alt="Yeni Weather Script" width="300" height="200" /></a><p class="wp-caption-text">Yeni Weather Script</p></div>
<p>I have a new phone on my desk (or as Yeni calls it, the mesk). Why mesk? Combines messy and desk… but I digress (as usual).</p>
<p>As I was saying, I recently purchased a <a href="http://www.mgraves.org/voip/2008/11/polycoms-new-soundpoint-ip450/" onclick="pageTracker._trackPageview('/outgoing/www.mgraves.org/voip/2008/11/polycoms-new-soundpoint-ip450/?referer=');">Polycom Soundpoint IP 450 phone</a>. The phone is great — small foot print, clean, great speakerphone, and enables HD Voice. HD Voice is going to change the way we think of how phone calls sound. I admit, I was reluctant at first, but then I got to know <a href="http://www.mgraves.org/voip/" onclick="pageTracker._trackPageview('/outgoing/www.mgraves.org/voip/?referer=');">Michael Graves</a>; and after listening to him praise the benefits of HD Voice for many, many months, I decided it was time to embrace the technology.</p>
<p>Let me say this — HD Voice is amazing. I won&#8217;t say too much more, because I&#8217;m planning to write about it big time on <a href="http://www.voiptechchat.com" onclick="pageTracker._trackPageview('/outgoing/www.voiptechchat.com?referer=');">VoIP Tech Chat</a> and <a href="http://www.teamforrest.com" onclick="pageTracker._trackPageview('/outgoing/www.teamforrest.com?referer=');">Team Forrest</a>; but bottom line: HD Voice = amazing.</p>
<p>So the other nice thing about the phone? It has a little micro-mini browser. Which means what you ask? It means that know whenever Yeni asks me the weather… I can answer. A <a href="http://pbx.teamforrest.com/a2weather.html" onclick="pageTracker._trackPageview('/outgoing/pbx.teamforrest.com/a2weather.html?referer=');">nice little Perl script</a> checks the local Ann Arbor weather and gives me the temp (in F and C), current condition, and quick day&#8217;s forecast. The phone reads the website every 5 minutes and constantly displays the results. It&#8217;s nice. <img src='http://www.fredposner.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fredposner.com/yeni/393/geeky-item-of-the-day/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

