<?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>TEAM FORREST Blog &#187; communication</title>
	<atom:link href="http://www.teamforrest.com/blog/tag/communication/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.teamforrest.com/blog</link>
	<description>Kamailio, Asterisk, VoIP, and IT Consulting</description>
	<lastBuildDate>Fri, 11 Mar 2011 04:48:24 +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>Residential VoIP</title>
		<link>http://www.teamforrest.com/blog/124/residential-voip/</link>
		<comments>http://www.teamforrest.com/blog/124/residential-voip/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 14:38:54 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[home office]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[residential]]></category>
		<category><![CDATA[telephone]]></category>

		<guid isPermaLink="false">http://www.teamforrest.com/?p=124</guid>
		<description><![CDATA[VoIP Tech Chat posted a new article discussing residential VoIP (and the savings you can get from switching). It&#8217;s an interesting read, especially the data with wireless only usage and some of the savings breakdown. For a typical household, VoIP &#8230; <a href="http://www.teamforrest.com/blog/124/residential-voip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>VoIP Tech Chat posted a <a href="http://www.voiptechchat.com/voip/274/voip-and-the-residential-phone-bill/">new article discussing residential VoIP</a> (and the savings you can get from switching). It&#8217;s an interesting read, especially the data with wireless only usage and some of the savings breakdown.</p>
<blockquote><p>For a typical household, VoIP remains a very cost-effective telephone solution; although you must remember that without good (and we mean good), high-speed Internet, your VoIP will be unusable. Many local phone companies offer a “dial tone only” line for less than $15.00 monthly. With the use of VoIP and a dial-tone only landline, you can still save more than $150.00 yearly while providing your family a reliable method of calling during emergencies and power outages.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.teamforrest.com/blog/124/residential-voip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk Consulting Services</title>
		<link>http://www.teamforrest.com/blog/119/asterisk-consulting-services/</link>
		<comments>http://www.teamforrest.com/blog/119/asterisk-consulting-services/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 12:38:30 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[voicemail]]></category>

		<guid isPermaLink="false">http://www.teamforrest.com/?p=119</guid>
		<description><![CDATA[Team Forrest offers Asterisk Consulting Services for a wide variety of VoIP, Call Center, and other Telephony Based needs. From small, family business to large Corporations, Team Forrest’s simple philosophy of “Help the Client” ensures we provide great service to &#8230; <a href="http://www.teamforrest.com/blog/119/asterisk-consulting-services/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-42 alignright" title="asterisk-by-digium" src="http://www.teamforrest.com/blog/wp-content/uploads/2008/12/asterisk-by-digium-300x245.gif" alt="Asterisk is a registered trademark of Digium" /></p>
<p>Team Forrest offers Asterisk Consulting Services for a wide variety of VoIP, Call Center, and other Telephony Based needs. From small, family business to large Corporations, Team Forrest’s simple philosophy of “Help the Client” ensures we provide great service to meet your needs.</p>
<h2>Asterisk Consulting</h2>
<p>From carrier services to traditional PBX services, Team Forrest’s Asterisk Consulting Service provides you the solution you need. Services include:</p>
<ul>
<li>IVR Development</li>
<li>Custom AGI Scripting / Programming</li>
<li>OpenSER Integration</li>
<li>Calling Card Systems</li>
<li>Call Center / Sales Queue Development</li>
<li>Call Recording (call spying, call barging, whisper, etc.)</li>
<li>Database Integration (Microsoft SQL MSSQL, MySQL, Oracle, etc.)</li>
<li>Custom Solutions</li>
</ul>
<h2>Emergency Asterisk Support</h2>
<p>When a problem comes along, we provide <strong>24/7 Emergency Support </strong>to bring your system back to life. Both new and existing clients benefit from our immediate support response.</p>
<p>For immediate support please <a href="/contact/">contact</a> us or call <strong>+1 (212) 937-7844</strong>.</p>
<h2>Remote and Onsite Support</h2>
<p>Team Forrest offers <strong>immediate</strong> remote assistance across the globe. Local, onsite service is also available, with quick response to Michigan, Florida, and New York locations.</p>
<h2>Asterisk? Ask us.</h2>
<p>With Team Forrest, you get professional consulting at a great price — <strong>increased productivity</strong> at a <strong>lower cost</strong>. To see how Team Forrest can help improve your communication needs, <a href="/contact">contact us</a>. We enjoy talking with clients and look forward to seeing how we can help you.</p>
<p>Asterisk, developed and released by <a href="http://www.digium.com">Digium, Inc.</a>, is the world’s leading open source telephony engine and tool kit. Asterisk empowers communication with it’s flexibility. Whether working as a simple office telephone system, a robust Call Center platform, or anything in-between, Asterisk provides advanced features at a very low deployment cost.  Asterisk is released as open source under the GNU General Public License (GPL), and it is available for download free of charge. Asterisk is the most popular open source software available, with the Asterisk Community being the top influencer in VoIP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teamforrest.com/blog/119/asterisk-consulting-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using AGI to get Caller ID Name CNAM</title>
		<link>http://www.teamforrest.com/blog/89/using-agi-to-get-caller-id-name-cnam/</link>
		<comments>http://www.teamforrest.com/blog/89/using-agi-to-get-caller-id-name-cnam/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 19:13:53 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[AGI]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[CNAM]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.teamforrest.com/?p=89</guid>
		<description><![CDATA[Everyone has them — and here&#8217;s Team Forrest&#8217;s version of a Caller ID to Name (CNAM, CIDNAME, etc.) lookup using AnyWho, Google, and 411.com. The first file is the calleridname.pl: UPDATE April 4, 2009 — Frank (user comment) let us &#8230; <a href="http://www.teamforrest.com/blog/89/using-agi-to-get-caller-id-name-cnam/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Everyone has them — and here&#8217;s Team Forrest&#8217;s version of a Caller ID to Name (CNAM, CIDNAME, etc.) lookup using AnyWho, Google, and 411.com. The first file is the <a title="Download CallerIDName.zip" href="http://www.teamforrest.com/tf-downloads/calleridname.zip">calleridname.pl</a>: <span id="more-89"></span></p>
<p class="alert"><strong>UPDATE April 4, 2009 —</strong> Frank (user comment) let us know that AnyWho had changed their website. As a result the code has been updated. Thanks Frank!</p>
<p class="alert"><strong>UPDATE November 18, 2009 —</strong> Robert (user comment) let us know of another change. As a result the code has been updated. Thanks Robert!</p>
<pre>#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
$|=1;

my ($cidnum,$cidname,$npa,$nxx,$station,$name);

#----------------------------------------------------------------
# get asterisk initial info
#----------------------------------------------------------------

while(&lt;STDIN&gt;) {
	chomp;
	last unless length($_);
}

#----------------------------------------------------------------
# check if we have a caller id
#----------------------------------------------------------------

if ($ARGV[0]) {
		$cidnum = $ARGV[0];
	} else {
		print qq(VERBOSE &quot;ERROR: no callerid provided&quot; 2\n);
		exit(0);
}

#----------------------------------------------------------------
# check caller id and split into npa, nxx, and station
#----------------------------------------------------------------

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 &quot;ERROR: unable to parse caller id&quot; 2\n);
		exit(0);
}

print qq(VERBOSE &quot;STATUS: CID is $npa-$nxx-$station&quot; 2\n);

#----------------------------------------------------------------
# check npa, nxx, and station for cid name
# 1 = check. 0 = skip.
#----------------------------------------------------------------

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

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

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

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

#----------------------------------------------------------------
# return results and exit
#----------------------------------------------------------------

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

#----------------------------------------------------------------
# parse anywho
# http://whitepages.anywho.com/results.php?qnpa=$npa&amp;qnpanxx=$npa$nxx&amp;qnxx=$nxx&amp;qp=$nxx$station&amp;qstation=$station
# Find More Information for First Last&lt;/a&gt;
#----------------------------------------------------------------

sub anywho_lookup {
	my ($npa, $nxx, $station) = @_;
	my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
	my $URL = 'http://whitepages.anywho.com/results.php';
	$URL .= qq(?qnpa=$npa&amp;qnpanxx=$npa$nxx&amp;qnxx=$nxx&amp;qp=$nxx$station&amp;qstation=$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 =~ /Find More Information for (.*)&lt;\/a&gt;/) {
			my $clidname = $1;
			return $clidname;
		}
	}
	return &quot;&quot;;
}

#----------------------------------------------------------------
# parse google
# http://www.google.com/search?rls=en&amp;q=phonebook:$npa$nxx$station
# &lt;td&gt;First Name&lt;td&gt;(&lt;b&gt;$npa
#----------------------------------------------------------------

sub google_lookup {
	my ($npa, $nxx, $station) = @_;
	my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
	my $URL = qq(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;td&gt;(.+)&lt;td&gt;\(&lt;b&gt;$npa/) {
			my $clidname = $1;
			return $clidname;
		}
	}
	return &quot;&quot;;
}

#----------------------------------------------------------------
# parse 411
# http://www.411.com/search/Reverse_Phone?phone=$npa$nxx$station
# View map, driving directions, and more&quot;&gt;Name&lt;/a&gt;
#----------------------------------------------------------------

sub www411_lookup {
	my ($npa, $nxx, $station) = @_;
	my $ua = LWP::UserAgent-&gt;new( timeout =&gt; 45);
	my $URL = qq(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 =~ /View map, driving directions, and more\&quot;&gt;(.*)&lt;\/a&gt;/) {
			my $clidname = $1;
			if ($clidname eq &quot;Listing Detail&quot;) {
				if ($res-&gt;content =~ /Type: &lt;strong&gt;(.*)&lt;\/strong&gt;/) {
					$clidname = $1;
					if ($res-&gt;content =~ /Location: &lt;strong&gt;(.*)&lt;\/strong&gt;/) {
						$clidname = $clidname . &quot; $1&quot;;
					}
				}
			}
			return $clidname;
		}
	}
	return &quot;&quot;;
}
</pre>
<p>This perl script will work well as an AGI script — checking AnyWho, Google, and then 411 for a caller&#8217;s name or location. If all else fails, the callerid name is set as the callerid number.</p>
<p>The perl script was designed to only use the Internet with minimal installation; so it will work without a database, Perl Asterisk module, or locally hosted NPA / NXX (phone number to region) file.</p>
<p>Team Forrest recommends using a subroutine context to get the callerid when needed; calling the script with either a <strong>GoSub</strong> or <strong>GosubIf</strong> command, such as:</p>
<pre>exten =&gt; s,n,Gosub(cidname-lookup,s,1)
exten =&gt; s,n,dial(${PHONE},30,t)
...

...
[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>Enjoy the file (<a title="Download the script" href="http://www.teamforrest.com/tf-downloads/calleridname.zip">download here</a>) and remember, Team Forrest is here to assist you will all of your Asterisk, VoIP, or technical needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teamforrest.com/blog/89/using-agi-to-get-caller-id-name-cnam/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>VoIP Tech Chat discusses Level 3 Outage</title>
		<link>http://www.teamforrest.com/blog/85/voip-tech-chat-discusses-level-3-outage/</link>
		<comments>http://www.teamforrest.com/blog/85/voip-tech-chat-discusses-level-3-outage/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 19:22:01 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.teamforrest.com/?p=85</guid>
		<description><![CDATA[On Sunday December 29th, 2008, Level 3 (one of the nation&#8217;s largest Internet backbone providers) suffered a slight disruption — causing issues to sites such as Amazon, ESPN, and CNN. VoIP Tech Chat posted an opinion piece regarding Level 3&#8242;s &#8230; <a href="http://www.teamforrest.com/blog/85/voip-tech-chat-discusses-level-3-outage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Sunday December 29th, 2008, <a href="http://www.level3.com">Level 3</a> (one of the nation&#8217;s largest Internet backbone providers) suffered a slight disruption — causing issues to sites such as Amazon, ESPN, and CNN.</p>
<p><a href="http://www.voiptechchat.com">VoIP Tech Chat</a> posted an opinion piece regarding Level 3&#8242;s handling of the outage. And, as with most opinion pieces from VoIP Tech Chat, <a href="http://www.voiptechchat.com/voip/189/level3-outage-leaves-room-for-speculation/">we like to pass it on</a>.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teamforrest.com/blog/85/voip-tech-chat-discusses-level-3-outage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are you following us on Twitter?</title>
		<link>http://www.teamforrest.com/blog/59/are-you-following-us-on-twitter/</link>
		<comments>http://www.teamforrest.com/blog/59/are-you-following-us-on-twitter/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 19:19:36 +0000</pubDate>
		<dc:creator>Fred Posner</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.teamforrest.com/?p=59</guid>
		<description><![CDATA[TEAM FORREST constantly works to provide the best service possible. And with 2009, we look forward to launching some new products, new services, as well as continuing to work with our clients to exceed expectations. To help communicate new services &#8230; <a href="http://www.teamforrest.com/blog/59/are-you-following-us-on-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong></p>
<div id="attachment_56" class="wp-caption alignright" style="width: 138px"><a href="http://twitter.com/teamforrest"><img class="size-full wp-image-56" title="twittersm" src="http://www.teamforrest.com/wp-content/uploads/2008/08/twittersm.png" alt="Follow us on Twitter" width="128" height="128" /></a><p class="wp-caption-text">Follow us on Twitter</p></div>
<p>TEAM FORREST</strong> constantly works to provide the best service possible. And with 2009, we look forward to launching some new products, new services, as well as continuing to work with our clients to exceed expectations.</p>
<p>To help communicate new services to our clients, potential clients, friends, and team, we provide several methods of contact, such as:</p>
<ul>
<li><strong><a href="http://www.teamforrest.com/feed/">RSS Feed</a></strong> for news / notices</li>
<li><strong><a href="http://twitter.com/teamforrest">Twitter</a></strong> account for updates</li>
<li>The Team Forrest <strong><a href="http://www.teamforrest.com">Website</a></strong></li>
<li>e-mail newsletters</li>
<li>not to mention&#8230; the telephone</li>
</ul>
<p>So, if you&#8217;re not on <a href="http://twitter.com/teamforrest">Twitter</a>, please consider getting an account and following us. It&#8217;s a great method to keep up to date on the latest events and happenings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teamforrest.com/blog/59/are-you-following-us-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

