<?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>Minded Software Solutions</title>
	<atom:link href="http://minded.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://minded.ca</link>
	<description>Web development and software services</description>
	<lastBuildDate>Mon, 09 Aug 2010 16:30:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Installing FreeSWITCH</title>
		<link>http://minded.ca/2010-07-20/installing-freeswitch/</link>
		<comments>http://minded.ca/2010-07-20/installing-freeswitch/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:26:56 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[freeswitch]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=111</guid>
		<description><![CDATA[As noted in a recent blog post, the FreeSWITCH telephony switching engine has seen a notable spike in popularity in the last couple years among VoIP system administrators and integrators.  Its exceptional stability and performance power all for extreme call volumes to be handled with less hardware than most other open-source systems available.  With projects [...]]]></description>
			<content:encoded><![CDATA[<p>As noted in a recent blog post, the <em>FreeSWITCH</em> telephony switching engine has seen a notable spike in popularity in the last couple years among VoIP system administrators and integrators.  Its exceptional stability and performance power all for extreme call volumes to be handled with less hardware than most other open-source systems available.  With projects like FreePBX v3 ramping up their efforts to improve front-end interactions with the immensely powerful <em>FreeSWITCH</em> engine, its wide-scale use seems inevitable.</p>
<p>Installing <em>FreeSWITCH</em> is rather straight forward.  I small list of dependencies are required, almost all of which should be available via the update / package manager of the distribution selected for the install.  For the making of this document, and CentOS 5 system was setup.  The systems configuration is based on XML files making the list of required tools to work with <em>FreeSWITCH</em> near non-existent.</p>
<p>First item to take care of prior to beginning the installation is to ensure the system is entirely up to date with current versions of all packages.</p>
<pre>yum -y update</pre>
<p>Once the system has completed its updates, install the necessary dependencies required by <em>FreeSWITCH</em>.</p>
<pre>yum -y install autoconf automake nano libtool gcc-c++ ncurses-devel make expat-devel
yum -y install zlib zlib-devel libjpeg-devel unixODBC-devel openssl-devel
yum -y install gnutls-devel libogg-devel libvorbis-devel curl-devel libtiff-devel</pre>
<p>The next step is to download the <em>FreeSWITCH</em> source files and unpack them.</p>
<pre>cd /usr/src/
wget http://files.freeswitch.org/freeswitch-1.0.6.tar.gz
tar -xvf freeswitch-1.0.6.tar.gz</pre>
<p>Move to the unpacked folder and run the installer&#8217;s configuration script.</p>
<pre>cd freeswitch-1.0.6
./configure</pre>
<p><a href="http://minded.ca/files/2010/07/centos-freeswitch-configure.png"><img class="alignnone size-full wp-image-113" title="FreeSWITCH Configure (CentOS)" src="http://minded.ca/files/2010/07/centos-freeswitch-configure.png" alt="" width="684" height="338" /></a></p>
<p>Once configuration of the installer has started, its break time.  The configuration script took approximately an hour to complete on the 512 MB test system.  After the configuration is complete, run the Makefiles and install.</p>
<pre>make
make install</pre>
<p><a href="http://minded.ca/files/2010/07/centos-freeswitch-install.png"><img class="alignnone size-full wp-image-114" title="FreeSWTICH Install (CentOS)" src="http://minded.ca/files/2010/07/centos-freeswitch-install.png" alt="" width="684" height="335" /></a></p>
<p>This will complete the install of the <em>FreeSWITCH</em> system binaries. Note the output of the install and its reference to the command &#8216;<code>make samples</code>&#8216;.  This can be used to generate test configuration files (very handy).  The default location of <em>FreeSWITCH</em> on CentOS systems is <code>/usr/local/freeswitch</code>.  Since it is often more convenient to have daemon software registered as a system service in CentOS, it will be done here as well.  Move to the folder containing the services scripts, download the script file (or just copy / paste if thats easier) and register the service.</p>
<pre>cd /etc/init.d
wget <a href="http://minded.ca/files/2010/07/freeswitch" target="_blank">http://minded.ca/files/2010/07/freeswitch</a>
chmod a+x freeswitch</pre>
<p>After the script is saved to <em>/etc/init.d/freeswitch</em> and permissions have been changed to allow the file to be executed, the service needs to be registered.</p>
<pre>chkconfig --add freeswitch
chkconfig --level 345 freeswitch on</pre>
<p>Finally, the service can be started just like any other.</p>
<pre>service freeswitch start</pre>
<p>Currently the service script for <em>FreeSWITCH</em> starts the service as user &#8216;root&#8217;.  If the desire is to run the daemon as a different user, modify the line in the script file  (near the top), &#8220;<code>FS_USER=${FS_USER-root}</code>&#8220;; changing &#8216;root&#8217; to the user account you wish to run the service as.  This completes the basic installation of the <em>FreeSWITCH</em> software.  Be sure to check the <em><a href="http://wiki.freeswitch.org/wiki/Main_Page" target="_blank">FreeSWITCH</a></em><a href="http://wiki.freeswitch.org/wiki/Main_Page" target="_blank"> wiki</a> for information and examples on configuring the different aspects and features of this excellent software system.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-07-20/installing-freeswitch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>First Impressions On FreeSWITCH</title>
		<link>http://minded.ca/2010-07-20/first-impressions-on-freeswitch/</link>
		<comments>http://minded.ca/2010-07-20/first-impressions-on-freeswitch/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 05:24:03 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[freeswitch]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=109</guid>
		<description><![CDATA[The telephone is nothing new to most of us non-cave dwelling human beings.  Its been around for as long as most people can remember and has even earned the legal right to be qualified as an essential service in most developed nations.  The telephone revolutionized the communications industry, and with recent open-source project support of [...]]]></description>
			<content:encoded><![CDATA[<p>The telephone is nothing new to most of us non-cave dwelling human beings.  Its been around for as long as most people can remember and has even earned the legal right to be qualified as an essential service in most developed nations.  The telephone revolutionized the communications industry, and with recent open-source project support of VoIP technologies; it shows no signs of letting up.</p>
<p>One of the most recent additions to the world of open-source telephony engines is <em>FreeSWITCH</em>.  Originally envisioned as a stable, robust and high-powered switching engine, it has grown through its development to be just that and much more.  Being one of the major players in the open-source telephony landscape, Asterisk has undergone extensive changes since its initial breakout in 1999.  After several years, many developers in the Asterisk community tabled the notion of an Asterisk 2.0 system.  A complete overhaul and re-coding of the Asterisk core was not a well received idea by the greater Asterisk development community and as result the idea was shelved.  With a difference in vision, a small group of developers disengaged from Asterisk development to proceed with a &#8220;bottom-up&#8221; build of a brand new open-source telephony engine; eventually known as <em>FreeSWITCH</em>.</p>
<p><em>FreeSWITCH</em> made its debut back in early 2007 and since then has been revised, currently to version 1.0.6.  The most recent version is; by all accounts, one of the most reliable and powerful telephony switching engines available (open-source or not!).  Of the many groups that are testing <em>FreeSWITCH</em> as a replacement for Asterisk (and other popular telephony engines), its most notable advantage is in its raw performance.  Some have touted that a single <em>FreeSWITCH</em> box is capable of replacing a 10-box Asterisk cluster.  With this sort of switching power, <em>FreeSWITCH</em> looks poised to assault the VoIP and switching stages.</p>
<p>The <em>FreeSWITCH</em> engine seemed to gain more and more popularity in 2009 as it moved out of its candidate versions and into official release versions.  Although most that adopted the official release did note its exceptional power and stability, its biggest criticisms remain on the lack of a decent administration GUI and available documentation.  Fast forward a year or so to today; the <em>FreeSWITCH</em> wiki now includes lots of information to assist in setup and configuration, system administrators and developers are posting tips and tricks for use-case issues, and administration GUIs are being developed (most notably FreePBX v3).</p>
<p>With its performance capabilities being tested to extremes and in real implementations, <em>FreeSWITCH</em> is impressing its users at every turn.  Now with other development communities working on its user-ended shortcomings, the <em>FreeSWITCH</em> engine will is setting itself up to be a major player in telephony universe.</p>
<p><strong>Related Links:</strong></p>
<p><a href="http://freeswitch.org" target="_blank">http://freeswitch.org</a></p>
<p><a href="http://ostatic.com/blog/freeswitch-poised-to-shake-up-the-open-source-voip-scene">http://ostatic.com/blog/freeswitch-poised-to-shake-up-the-open-source-voip-scene</a></p>
<p><a href="http://www.zdnet.com/blog/greenfield/open-source-voip-asterisk-or-freeswitch/233">http://www.zdnet.com/blog/greenfield/open-source-voip-asterisk-or-freeswitch/233</a></p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-07-20/first-impressions-on-freeswitch/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>FreePBX Module: TFTP Manager</title>
		<link>http://minded.ca/2010-06-06/freepbx-module-tftp-manager/</link>
		<comments>http://minded.ca/2010-06-06/freepbx-module-tftp-manager/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 18:39:30 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[freepbx]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[tftp]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=103</guid>
		<description><![CDATA[Over the past few months work on development of a FreePBX module for managing Cisco IP Phones has been started.  In the process of doing this, as well as through some research on existing FreePBX feature request tickets; a TFTP management module has been requested.  As a result of this, the development of the Cisco [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months work on development of a FreePBX module for managing Cisco IP Phones has been started.  In the process of doing this, as well as through some research on existing FreePBX feature request tickets; a TFTP management module has been requested.  As a result of this, the development of the Cisco module has been momentarily sidelined as a a TFTP module was created.  The intent is that this module will be used to support the Cisco modules TFTP file management.</p>
<p>The first version(s) of the module are planned to have very limited and basic functionality.  A new feature request ticket was created in the FreePBX Trac system (Ticket<a href="http://www.freepbx.org/v2/ticket/1032" target="_blank"> #1032</a>) several years ago and to date does not seem to have been addressed.  Having a need for this functionality ourselves, it seemed prudent to take on this smaller application prior to moving forward with the Cisco phone project.</p>
<p>In accordance with the feature request ticket, the aim of the module is to provide two basic interaction and a viewer.  The interaction being the ability to add a file and to delete a file.  Further planning has already started for expansion of the module to include more extensive file operations and folder control.</p>
<p><strong>TFTP Manager in FreePBX v2.X:</strong><a href="http://minded.ca/files/2010/06/v2-screenshot.png"><br />
<img class="alignnone size-medium wp-image-104" title="TFTP Manager Screenshot (FreePBX v2)" src="http://minded.ca/files/2010/06/v2-screenshot.png" alt="" width="600" height="427" /></a></p>
<p>A big thanks to the folks at <a href="http://abeautifulsite.net/" target="_blank">abeautifulsite.net</a> and to Cory LaViska for creating the very elegant <a href="http://abeautifulsite.net/2007/06/php-file-tree/" target="_blank">PHP File Tree</a> object used by the viewer.</p>
<p>In addition to addressing the needs of the logged ticket with FreePBX for version 2.X, our TFTP module is being developed for version 3 of FreePBX as well.  We are planning to commit both modules to the FreePBX repository once all functionality is stable.</p>
<p><strong>IMPORTANT:</strong> <em>Ensure the TFTP server has been installed with its root folder as /tftpboot.  Provide the webserver write access to the /tftpboot folder as well.</em></p>
<div class="dl-compressed">Download <a href="http://minded.ca/files/2010/06/tftpmanager-1.1.0.0.tgz">TFTP Manager 1.1.0.0 (for v2.X)</a></div>
<p>Development of the TFTP Manager module for blue.box (formerly FreePBX v3) has resumed with the initial release of the blue.box software from <a href="http://www.2600hz.org/" target="_blank">2600hz.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-06-06/freepbx-module-tftp-manager/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cisco IP Phone Background Images</title>
		<link>http://minded.ca/2010-03-18/cisco-ip-phone-background-images/</link>
		<comments>http://minded.ca/2010-03-18/cisco-ip-phone-background-images/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 15:13:21 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[configuration files]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=84</guid>
		<description><![CDATA[Many of the industry-leading executive style phones on the VoIP market today are part of the Cisco IP Phone series.  A large portion of these devices come built with a high resolution, full color display that can offer rich displays and unique interfaces when coupled with the use of the Cisco XML service objects.
One of [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the industry-leading executive style phones on the VoIP market today are part of the Cisco IP Phone series.  A large portion of these devices come built with a high resolution, full color display that can offer rich displays and unique interfaces when coupled with the use of the Cisco XML service objects.</p>
<p>One of the more user-facing features of these market topping devices is the ability to apply custom backgrounds.  Granted, the concept is simple and merely aesthetic; but having the option to apply a custom background can provide a sense of personalization to make a piece of technology feel less foreign.  However, this is not about the psychology of implementation choices.  The following contains helpful information and some useful tips on creating custom backgrounds for the Cisco IP Phones.  A free download pack of background samples has been included as well (package includes 8 background images, associated thumbnails, an XML definition file and README instruction file).  Installation follows the same process described below.</p>
<p><em>NOTE: The <em>7945, 7965, 7975, 7970, and Communicator</em> have been tested with SIP firmware and are confirmed as able to support this function.</em></p>
<h3>TFTP Folders:</h3>
<p>The first step is to prepare the folder structure on the TFTP server that is providing the Cisco IP Phones with their configuration files.  In the root of the TFTP servers directory, create a folder named <em>&#8216;Desktops&#8217;</em> (case sensitive).  The 7945 and 7965 models will look for their background images and XML file in a sub-folder of <em>Desktops</em> called <em>&#8216;320&#215;212x12&#8242;.</em> The other models (7970, 7975 and Communicator) will look in the <em>&#8216;320&#215;212x16&#8242;</em> subfolder of <em>Desktops</em>.  All background images, thumbnails and the XML file defining the backgrounds will ball be placed in these sub-folders.</p>
<h3>Images:</h3>
<p>All background images must be properly sized to avoid distortion during display.  The Cisco IP Phone firmware (SCCP and SIP) will adjust the image to best fit the display and its color depth.  As the folder names suggest, the standard size for background images on the Cisco IP Phones is 320 pixels wide by 212 pixels tall.  The last number in the folder names (12 or 16) is the color depth that the phone supports.  Testing shows that the firmware can adjust the color depth to suit the display.</p>
<h3>Thumbnails:</h3>
<p>When selecting the background on the phone, a list of thumbnails are presented to choose from.  These thumbnail images must be uploaded as separate image files, again sized properly to avoid display distortion.  The thumbnail size is 80 pixels wide by 53 pixels tall.  As with the full images, the color depth will be adjusted by the phones firmware to suit the display.</p>
<h3>XML Definition:</h3>
<p>Finally, an XML file is used to define the available backgrounds and associate them with their provided thumbnail images.  The file must be called <em>List.xml</em> (case sensitive).  Fortunately, it is rather straight forward.  Each XML node defines a background and has two properties, one for the background image location and one for the thumbnail image location.  Ensure that the folder name is entered in the XML definitions match the folder name that the XML file and images are placed in.  Here is an example of the XML file:</p>
<pre>&lt;CiscoIPPhoneImageList&gt;
     &lt;ImageItem Image="TFTP:Desktops/320x212x16/001-TN.png"
                  URL="TFTP:Desktops/320x212x16/001.png"/&gt;
     &lt;ImageItem Image="TFTP:Desktops/320x212x16/002-TN.png"
                  URL="TFTP:Desktops/320x212x16/002.png"/&gt;
&lt;/CiscoIPPhoneImageList&gt;</pre>
<p>In each node, the Image property specifies the TFTP location of the thumbnail image and the URL property specifies the full background image.  The location of the XML file does not need to be specified in the configuration file, the phones will locate <em>List.xml </em>if it exists within the phones supported background folder (along with the images).</p>
<p>After placing all files in the correct folders and upload the folders to the TFTP server with the phone configuration files, the phones will be able to access the newly added backgrounds.  No reset is required as the <em>List.xml</em> file gets pulled each time the background switching options are selected by the user.</p>
<div class="dl-compressed">Download <a href="http://minded.ca/files/2010/03/Cisco-IP-Phone-Backgrounds.zip">Cisco IP Phone Backgrounds</a></div>
<hr width="90%" />
<h2>Background Images Gallery:</h2>

<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-009/' title='Cisco IP Phone Background (009)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-009-e1269807367677-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (009)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-008/' title='Cisco IP Phone Background (008)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-008-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (008)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-007/' title='Cisco IP Phone Background (007)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-007-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (007)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-006/' title='Cisco IP Phone Background (006)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-006-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (006)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-005/' title='Cisco IP Phone Background (005)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-005-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (005)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-004/' title='Cisco IP Phone Background (004)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-004-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (004)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-003/' title='Cisco IP Phone Background (003)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-003-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (003)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-002/' title='Cisco IP Phone Background (002)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-002-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (002)" /></a>
<a href='http://minded.ca/2010-03-18/cisco-ip-phone-background-images/ciscobg-001/' title='Cisco IP Phone Background (001)'><img width="150" height="150" src="http://minded.ca/files/2010/03/CiscoBG-001-150x150.jpg" class="attachment-thumbnail" alt="" title="Cisco IP Phone Background (001)" /></a>

]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-18/cisco-ip-phone-background-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Smoothwall</title>
		<link>http://minded.ca/2010-03-16/php-smoothwall/</link>
		<comments>http://minded.ca/2010-03-16/php-smoothwall/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 05:39:37 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[smoothwall]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=87</guid>
		<description><![CDATA[We&#8217;ve recently started work on a new project in PHP development.  We are currently starting the process of building a PHP object class for Smoothwall data collection and processing.  Smoothwall is a function-specific, Linux based operating system thats primary design was to be a firewall and basic network controller.  As time passed and the project [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve recently started work on a new project in PHP development.  We are currently starting the process of building a PHP object class for Smoothwall data collection and processing.  Smoothwall is a function-specific, Linux based operating system thats primary design was to be a firewall and basic network controller.  As time passed and the project gained success, Smoothwall has grown and expanded its array of incorporated functions to include not only basic firewall controls and DHCP systems, but many others including static or dynamic DNS and a built in NTP time server.</p>
<p>Another beneficial feature that the Smoothwall OS offers is the ability to monitor several aspects of network use from many network locations.  This sort of information can be of great use to networking techs for things like traffic optimization and determining system availability requirements.  With this in mind, the initial version of the Smoothwall object being planned will be centered on statistics collection.</p>
<p>This coding project is being designed with public release in mind.  It can be expected to be seen on our website in the coming weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-16/php-smoothwall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco Services Project Update</title>
		<link>http://minded.ca/2010-03-13/cisco-services-project-update/</link>
		<comments>http://minded.ca/2010-03-13/cisco-services-project-update/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 23:52:17 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[freepbx]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[xml services]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=85</guid>
		<description><![CDATA[Over the past few weeks great strides have been made on the XML Services project for Cisco IP Phone systems.  The plan to make the project available through the FreePBX GUI is continuing on.  The module(s) install without issue and all currently implemented functionality works in a simple form.
One of the next major steps in [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few weeks great strides have been made on the XML Services project for Cisco IP Phone systems.  The plan to make the project available through the FreePBX GUI is continuing on.  The module(s) install without issue and all currently implemented functionality works in a simple form.</p>
<p>One of the next major steps in the development will be the ability to upload new service scripts into the module rather than by manual upload.  As mentioned in the previous post on this project, we are looking to have a user portal; hopefully integrated with FreePBX v3 that will allow users to change their passwords.  Currently the system does support multi-phone login to a single user profile.  A remote logout function to remove a phones attachment to a user profile through the portal is also being planned.</p>
<p>Here is an example service that was built by Minded for keeping an eye on email as well as weather conditions, both current and future.  The email information used to check for messages and the location to look up weather for are both supplied by the profile that the phone is currently logged into.<br />
<em>(we are aware of the crappy purple background, this is just the default background color for the &#8216;Services&#8217; panels on the Communicator.  Its honestly entirely Cisco&#8217;s fault! I swear.)</em></p>
<p><img class="aligncenter size-full wp-image-86" title="Cisco IP Communicator Idle Screen" src="http://minded.ca/files/2010/03/communicator-compact-idle.png" alt="" width="349" height="305" /></p>
<p>In setting up the module to be able to handle the various XML Services that could be used, we&#8217;ve also run into the idea of including support for directory XML objects as well.  At this point in the project the directories can be handled as if they were an XML services although the option has been tabled to add more specific support for directories and advanced organization of them.  Add a module for the directories support is also a possibility.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-13/cisco-services-project-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-Server Asterisk Network with IAX2 Trunks</title>
		<link>http://minded.ca/2010-03-05/multi-server-asterisk-network-with-sip-trunks/</link>
		<comments>http://minded.ca/2010-03-05/multi-server-asterisk-network-with-sip-trunks/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:29:09 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[iax2]]></category>
		<category><![CDATA[multi-server]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=71</guid>
		<description><![CDATA[Anyone who has worked with Asterisk will have undoubtedly realized the ease of implementation it can bring to setting up simple VoIP systems.  However, after some period of time, a desire to expand the system will arise.  The most common way of expanding these types of configurations is to add multiple servers in [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has worked with Asterisk will have undoubtedly realized the ease of implementation it can bring to setting up simple VoIP systems.  However, after some period of time, a desire to expand the system will arise.  The most common way of expanding these types of configurations is to add multiple servers in an inter-connected fashion.  In most installations of Asterisk, SIP connections will be the preferred method of communication. Trunk connections between asterisk servers can be made with a variety of protocols.  In this guide trunk connections will be made via IAX2 connections.</p>
<p>For the creation of this guide, an AsteriskNOW v1.5 turn-key installation server system was used.  This makes use of the Asterisk 1.4 server as its backend.  Installation of all major and required components is included as well as a common web interface for administering the system, FreePBX.  The local extensions for any given server are all basic SIP device connections with no special configurations.</p>
<p>As with most system implementations, a design will be required as a starting point.  When determining the layout of the VoIP network to be constructed, it is often suggested that a dial plan be considered as well.  A conscious dial plan design will make the rest of the implementation much easier.  The most common that results is that each physical location will end up with distinct extension subsets (e.g. Location A get extension 3XXX, Location B gets extensions 4XXX, and Location C gets extensions 5XXX).  Maintaining inter-server dial patterns is much easier with this sort of design, although it is not required.  This guide assumes the layout of the VoIP network will be configured as follows:</p>
<p>Master Server:</p>
<p style="padding-left: 30px">Hostname:   master.voip.domain.ext<br />
Extensions: 2XXX</p>
<p>Slave 1:</p>
<p style="padding-left: 30px">Hostname:   slave01.voip.domain.ext<br />
Extensions:  3XXX</p>
<p>Slave 2:</p>
<p style="padding-left: 30px">Hostname:   slave02.voip.domain.ext<br />
Extensions:  4XXX</p>
<p>The reasons for organizing any particular VoIP network in any particular way will usually be simply the preference of the person(s) that are  building the system.  The more organized and structured things are, the less difficult they will be to maintain later.</p>
<p>The first step is to setup all 3 servers for individual use.  All 3 servers need to function independently.  Completely install the Asterisk server system on each machine, and then ensure it is able to add an extension or 2 and make calls internally between extensions.  Don&#8217;t forget the extension layout and dial plan that was created earlier.  Its also a good idea to test that each server can connect to an external DID provider and make calls to an external phone network.  If a DID provider is not available it is not absolutely to test this at this point on all servers as only the master server will require this type of connection.</p>
<p>Once all three machines have been configured as stand-alone servers, we are able to setup the trunk connections between the servers.  All of the servers in the network will require knowledge of each other in order to direct calls to the correct location(s).</p>
<p style="padding-left: 30px">Trunks on <em>master.voip.domain.ext</em> in <em>iax_custom.conf</em>:</p>
<p style="padding-left: 60px">register =&gt; master:IAXpa$$@slave01.voip.domain.ext<br />
register =&gt; master:IAXpa$$@slave02.voip.domain.ext</p>
<p style="padding-left: 60px"><em>[slave1]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p style="padding-left: 60px"><em>[slave2]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p style="padding-left: 30px">Trunks on <em>slave01.voip.domain.ext</em> in <em>iax_custom.conf</em>:</p>
<p style="padding-left: 60px">register =&gt; slave1:IAXpa$$@master.voip.domain.ext<br />
register =&gt; slave1:IAXpa$$@slave02.voip.domain.ext</p>
<p style="padding-left: 60px"><em>[master]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p style="padding-left: 60px"><em>[slave2]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p style="padding-left: 30px">Trunks on <em>slave02.voip.domain.ext</em> in <em>iax_custom.conf</em>:</p>
<p style="padding-left: 60px">register =&gt; slave2:IAXpa$$@master.voip.domain.ext<br />
register =&gt; slave2:IAXpa$$@slave01.voip.domain.ext</p>
<p style="padding-left: 60px"><em>[master]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p style="padding-left: 60px"><em>[slave1]</em> ; peer name<br />
type=friend<br />
host=dynamic<br />
trunk=yes<br />
nat=yes<br />
secret=IAXpa$$<br />
context=from-internal</p>
<p>This trunking setup provides every asterisk server with direct knowledge of every other server within the network.  Save these settings in each server and reload asterisk on each server to have all the trunk connections established.  This can be verified by typing &#8216;<em>iax2 show peers</em>&#8216; into the asterisk CLI.  Once the trunks have been established, dial patterns need to be added to direct calls from one location to another where appropriate.</p>
<p>As indicated before, this example will assume that all extensions on <em>master.voip.domain.ext</em> are in the 2XXX range, <em>slave01.voip.domain.ext</em> in the 3XXX range, and <em>slave02.voip.domain.ext</em> in the 4XXX range.</p>
<p style="padding-left: 30px">Dial patterns on <em>master.voip.domain.ext</em> in <em>extensions_custom.conf</em>:</p>
<p style="padding-left: 60px">exten =&gt; _3XXX,1,Dial(IAX2/slave1/${EXTEN})<br />
exten =&gt; _4XXX,1,Dial(IAX2/slave2/${EXTEN})</p>
<p style="padding-left: 30px">Dial patterns on <em>slave01.voip.domain.ext</em> in <em>extensions_custom.conf</em>:</p>
<p style="padding-left: 60px">exten =&gt; _2XXX,1,Dial(IAX2/master/${EXTEN})<br />
exten =&gt; _4XXX,1,Dial(IAX2/slave2/${EXTEN})</p>
<p style="padding-left: 30px">Dial patterns on <em>slave02.voip.domain.ext</em> in <em>extensions_custom.conf</em>:</p>
<p style="padding-left: 60px">exten =&gt; _2XXX,1,Dial(IAX2/master/${EXTEN})<br />
exten =&gt; _3XXX,1,Dial(IAX2/slave1/${EXTEN})</p>
<p>After adding the dial patterns and reloading the asterisk servers one last time, calling an extension on any server from any other server should no complete the call.</p>
<p>Lastly, a few notes about this type of setup.  The IAX2 trunks are bi-directional and make use of the &#8220;friend&#8221; type instead of the &#8220;user/peer&#8221; model.  This was chosen due to simplicity of setup and troubleshooting.  The trunks are all entered with the option &#8216;nat=yes&#8217;, this is not required if all servers are on the same LAN.  Also, all servers within the network deliver calls to each other from the &#8216;from-internal&#8217; context.  This allows each server to treat calls from other servers as if they come from an internal extension.  If necessary this can be changed in the trunk settings, however, a dialing macro will be needed to accommodate the change.  Finally, in the configuration explained here, only server-to-server calling has been setup.  Removing the common &#8220;_9|.&#8221; dial pattern (for outbounds calls) and adding one for &#8220;_9.&#8221; (no &#8216;|&#8217;)  that directs the slave server to Dial(IAX2/master/${EXTEN}) will redirect outbound calls to the master server without removing the leading 9.  Maintaining the leading 9 will direct the master server to place the call as an outbound call.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-05/multi-server-asterisk-network-with-sip-trunks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VoIP Development with FreePBX</title>
		<link>http://minded.ca/2010-03-04/voip-development-with-freepbx/</link>
		<comments>http://minded.ca/2010-03-04/voip-development-with-freepbx/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 19:33:06 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[freepbx]]></category>
		<category><![CDATA[user profiles]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[xml services]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=77</guid>
		<description><![CDATA[Anyone who has looked around our site will quickly realize we have done a significant amount of development in VoIP systems.  The vast majority of the work done to date has been on Asterisk based VoIP systems.  We found the Asterisk engine was easy to install, simple to configure at a basic level, and allows [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has looked around our site will quickly realize we have done a significant amount of development in VoIP systems.  The vast majority of the work done to date has been on Asterisk based VoIP systems.  We found the Asterisk engine was easy to install, simple to configure at a basic level, and allows for a fair amount of scalability.  After getting a variety of Cisco IP Phone models to work with an Asterisk backend we have had a lot of fun customizing the operation of the Cisco IP Phones themselves.  Everything from dial pattern based routing right in Asterisk to custom built Cisco XML services scripts.</p>
<p>This lead us to our next development project.  We are currently working on creating FreePBX modules for administration of extended Cisco IP Phone functionality.  Our starting point has been the XML services that can be used by these phones and integrating them with customized user profiles.  Currently the module will contain two components, &#8216;User Profiles&#8217; and &#8216;XML Services&#8217;.</p>
<p>The &#8216;User Profiles&#8217; module will be for exactly what everyone things, managing user profiles and their associated customizations.  These user profiles can be expanded to include other data for custom services and more advanced functionality.  Here are a couple screenshots of the &#8216;User Profiles&#8217; component:</p>
<p style="text-align: left">Show User Profiles:<br />
<a href="http://minded.ca/files/2010/03/show-profiles.jpg"><img class="screenshot aligncenter size-full wp-image-79" title="Show User Profiles" src="http://minded.ca/files/2010/03/show-profiles.jpg" alt="lists all current user profiles in the table" width="475" height="239" /></a></p>
<p style="text-align: left">Add User Profile:<br />
<a href="http://minded.ca/files/2010/03/add-profile.jpg"><img class="screenshot aligncenter size-full wp-image-78" title="Add User Profile" src="http://minded.ca/files/2010/03/add-profile.jpg" alt="form for adding new user profiles to table" width="381" height="278" /></a></p>
<p>Also included in this module is the &#8216;XML Services&#8217; component.  Again, as expected this part of the module will allow for administration of installed Cisco XML Service scripts.  Service scripts are added to the &#8220;<em>services</em>&#8221; folder in the module on the server.  Once added to the server, the service can be added and filename of the service specified.  Once added, services can be previewed as they would appear on the Cisco IP Phone screens as well.  Here are some screenshots of the &#8216;XML Services&#8217; component:</p>
<p style="text-align: left">Show XML Services:<br />
<img class="screenshot aligncenter size-full wp-image-80" title="Show XML Services" src="http://minded.ca/files/2010/03/show-services-e1267730920756.jpg" alt="lists all XML services that have been added to the table" width="510" height="316" /></p>
<p style="text-align: left">Add XML Service:<br />
<a href="http://minded.ca/files/2010/03/add-service.jpg"><img class="screenshot aligncenter size-full wp-image-81" title="Add XML Service" src="http://minded.ca/files/2010/03/add-service.jpg" alt="form to add a new XML service to the table" width="356" height="233" /></a></p>
<p><strong>*NOTE*</strong>:  Announcements about FreePBX v3 have indicated that it will have a user portal as well as an administration portal.  With this in mind we will look to make our module(s) FreePBX v3 compatible, incorporating user-level profile management and other extended customization of XML services used.</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-04/voip-development-with-freepbx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco XML Services Scripting</title>
		<link>http://minded.ca/2010-03-01/cisco-xml-services-scripting/</link>
		<comments>http://minded.ca/2010-03-01/cisco-xml-services-scripting/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 16:12:45 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[xml services]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=72</guid>
		<description><![CDATA[For those who have taken the time (and frustration) to setup a VoIP network with Cisco IP Phones, it would seem natural to want to take full advantage of the more advanced functions available to these market-topping devices.  One of the more powerful and easily usable functions of the Cisco IP Phone series&#8217; is the [...]]]></description>
			<content:encoded><![CDATA[<p>For those who have taken the time (and frustration) to setup a VoIP network with Cisco IP Phones, it would seem natural to want to take full advantage of the more advanced functions available to these market-topping devices.  One of the more powerful and easily usable functions of the Cisco IP Phone series&#8217; is the standardized XML services that can be added to nearly all of the Cisco IP Phones.  These services can be found in various places on the internet in various different forms (links, downloads, etc.); or they can created from scratch.</p>
<p>The services are built by directing the phones to any of a number of predefined XML objects.  The objects have a wide range of abilities from regular text display to masked input fields all the way to image display.  Furthermore, the XML object creation is no limited to static XML files.  The resulting power lies in the ability to call scripts that dynamically generate Cisco &#8216;friendly&#8217; XML objects.  Additionally, the phones provide unique headers as part of their HTTP requests that contain information specific to the phone making the call.  This includes information such as the phone model and screen size.  As sent by the phones, these unique headers will be as follows (according to current Cisco documentation):</p>
<ul>
<li><em>x-CiscoIPPhoneModelName</em></li>
<li><em>x-CiscoIPPhoneDisplay</em></li>
<li><em>x-CiscoIPPhoneSDKVersion</em></li>
</ul>
<p>Many scripting languages may modify these for accessibility.  A commonly seen example of this is PHP, where the headers are accepted into the global $_SERVER array variable.  Each header is put into all uppercase letters and an &#8216;HTTP_&#8217; prefix is added to specify that they were sent with the HTTP headers.</p>
<p>The model names provided by the phones will be the Cisco model information, similar to format of &#8216;CP-7960G&#8217;.  Some models are capable of functionality that other models are not.  This may be useful to the programmer, although this header is more commonly used for determining if the request came from a Cisco IP Phone or not simply by its presence.</p>
<p>A very useful header to most programmers of Cisco XML services will be the <em>x-CiscoIPPhoneDisplay</em> header.  This header includes 4 pieces of information about the phones display, all comma seperated.  The first two numbers are the width and height of the available screen size in pixels.  The high resolution color screen Cisco phones usually have a size around 298&#215;156.  The 3rd number provided is the color depth available.  The color displays will have a depth of either 12 or 16 depending on the model.  Lastly, a &#8216;C&#8217; or &#8216;G&#8217; is given to indicate a Color or Greyscale display.  With image displays being one of the most useful display services available, this information can be invaluable to the image creation script(s).</p>
<p>Last in the list of transmitted headers is the SDK Version.  As indicated before, the functionality available to a phone can be determined by its model name, however a more robust and effective way to determine this is with the SDK Version.  It is possible that newer firmwares for any particular phone will support a different version of the SDK.  As a result, the SDK version is a better determining factor for supported functionality.</p>
<p>As with most application development, it is important to check the Cisco IP Phone documentation that is available on their website.  A complete list of usable XML service objects can be found there.  In addition, many extra useful features are explained including items like customized softkeys, internal URI functions and more.</p>
<p>Here are some freely available Cisco XML services provided by Minded:   (<em>services will redirect browser requests</em>)</p>
<ul>
<li> <a title="Simple Web Browser" href="http://minded.ca/2010-02-18/cisco-xml-services-browser/">Simple Web Browser</a>: http://minded.ca/cisco/browser.php</li>
</ul>
<p><strong>**NOTE**</strong>: We are currently looking for suggestions on XML services to create and make available to the public where possible.  Please comment with your suggestions!</p>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-03-01/cisco-xml-services-scripting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco XML Services: Browser</title>
		<link>http://minded.ca/2010-02-18/cisco-xml-services-browser/</link>
		<comments>http://minded.ca/2010-02-18/cisco-xml-services-browser/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:15:12 +0000</pubDate>
		<dc:creator>Tyler Winfield</dc:creator>
				<category><![CDATA[XML]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[xml services]]></category>

		<guid isPermaLink="false">http://minded.ca/?p=73</guid>
		<description><![CDATA[A simple XML service for Cisco IP Phones for simple web browsing.  This service requests ASCII input of a URL (without the http:// prefix).  The phone is then forwarded to the address that has been entered as if it were a normal HTTP request.
This service relies on the destination locations being capable of both detecting [...]]]></description>
			<content:encoded><![CDATA[<p>A simple XML service for Cisco IP Phones for simple web browsing.  This service requests ASCII input of a URL (without the http:// prefix).  The phone is then forwarded to the address that has been entered as if it were a normal HTTP request.</p>
<p>This service relies on the destination locations being capable of both detecting a Cisco IP Phone request and serving Cisco XML objects in response to these requests.  Detection of a Cisco IP Phone request via HTTP can be easily done by either the user agent of the request or by analyzing the incoming header information.  The phones make use of the &#8216;<em>Allegro</em>&#8216; user agent as well as sending unique Cisco HTTP headers.  The headers all begin with <em>x-CiscoIPPhone_____. </em>The three that noted in the Cisco documentation are the <em>x-CiscoIPPhoneModelName</em>, <em>x-CiscoIPPhoneDisplay</em>, and <em>x-CiscoIPPhoneSDKVersion</em>.  Creation of an XML object to respond with will depend on the nature of the site and the content it will serve the phone(s).</p>
<p>The browser will accept a single query string variable, <em>url</em>.  Specifying a <em>url</em> variable in the query string will forward the phone to &#8216;http://&#8217;+<em>url</em>.  No specification will bring up the &#8220;URL:&#8221; prompt and request an address to go to from the user in ASCII format.</p>
<p>To add this service to your Cisco IP Phone, add the following code to your services menu XML file:</p>
<pre>&lt;MenuItem&gt;
   &lt;Name&gt;Web Browser&lt;/Name&gt;
   &lt;URL&gt;http://minded.ca/cisco/browser.php&lt;/URL&gt;
 &lt;/MenuItem&gt;</pre>
<p>Or add a &#8216;Services&#8217; function line with the following URL:</p>
<pre>http://minded.ca/cisco/browser.php</pre>
]]></content:encoded>
			<wfw:commentRss>http://minded.ca/2010-02-18/cisco-xml-services-browser/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
