<?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>Village Telco &#187; VTE Server</title>
	<atom:link href="http://www.villagetelco.org/category/village-telco/vte-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.villagetelco.org</link>
	<description>an easy-to-use, scalable, standards-based, wireless, local, do-it-yourself, telephone company toolkit</description>
	<lastBuildDate>Mon, 12 Jul 2010 08:23:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Billing calls from potatoes (Part III)</title>
		<link>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-iii/</link>
		<comments>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-iii/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 12:05:20 +0000</pubDate>
		<dc:creator>aep</dc:creator>
				<category><![CDATA[VTE Server]]></category>
		<category><![CDATA[Village Telco]]></category>

		<guid isPermaLink="false">http://www.villagetelco.org/?p=441</guid>
		<description><![CDATA[<p></p>
<p style="margin-bottom: 0in;">Here it comes the last posting of the “Billing calls from meshed potatoes” sequel.</p>
<p style="margin-bottom: 0in;">Coding is an interesting exercise of long term investment. In fact, “for  every minute spent in organizing, an hour is earned”. In October 2009, Areski (A2Billing) visited IT46 in Stockholm. There were two main answers to our “easy [...]


Related posts:<ol><li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/' rel='bookmark' title='Permanent Link: Billing calls from the potatoes (Part I)'>Billing calls from the potatoes (Part I)</a> <small> It has been a year now since we started...</small></li>
<li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-ii/' rel='bookmark' title='Permanent Link: Billing calls from potatoes (Part II)'>Billing calls from potatoes (Part II)</a> <small> In November 2008, Steve, Louise and myself sat down...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">Here it comes the last posting of the “Billing calls from meshed potatoes” sequel.</p>
<p style="margin-bottom: 0in;">Coding is an interesting exercise of long term investment. In fact, “<strong>for  every minute spent in organizing, an hour is earned</strong>”. In October 2009, Areski (A2Billing) visited IT46 in Stockholm. There were two main answers to our “easy billing” challenge: a quick hack that will never be reusable or to add an API to A2Billing so other applications could be build in the future.</p>
<p style="margin-bottom: 0in;">The “quick hack” consisted in collecting the information from the user (the Installation Wizard GUI) to later alter the SQL database (dump a bunch of nasty INSERTS!). The other alternative (the nice one) was to build an abstract layer at the top of A2Billing that could perform several “primitives” on behalf of the wizard.</p>
<p style="margin-bottom: 0in;">We spent a couple of days with pen and paper, starting with the technical requirements of the Village Telco. Finally, we concluded that an “ugly hack” was going to give us more problems in the long round&#8230; so we took the decision to build something that we should not be embarrassed of in the future. After all, open source is the result of peer pressure. <img src='http://www.villagetelco.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> .</p>
<p style="margin-bottom: 0in;">We decided (1) to build the Installation Wizard using a MVC framework (Cake PHP), (2) to use SOAP as a transport mechanism between the Wizard and A2Billing, (3) extend A2Billing to support our general API.</p>
<p style="margin-bottom: 0in;">This was a very nice arrangement, Areski could concentrate in building the internal logic. There are so many tables in A2Billing that I still wonder how Areski could figure out what everyone is doing!. In our side we decided to concentrate in building the Wizard (full of round corners!).  The Installation Wizard should be based in the well known user-friendly principle of (Next, Next, Next, Accept).</p>
<p style="margin-bottom: 0in;">Louise has been  programing intensively with Cake PHP  for the last 6 months, and she did not want to write the code in anything else. It has been a very nice programming project, the new API glued all together&#8230; and<strong> every day we were figuring out a way to reduce the number of clicks </strong>that the user need to put the scenario up and running.</p>
<p style="margin-bottom: 0in;">Our main finding was that there is still plenty of work to do in the provisioning of VoIP upstream providers and the potatoes themselves, when it comes to upstream providers our goal is to make sure that the user does no need to type any SIP parameters at all into the system (account, password, codec, etc). The wizard will present to the user a set of VoIP carriers and by means of an activation code the system will auto-provision! (One click!) There is plenty of things that can go wrong&#8230; when hooking our local telephony mesh to an external gateway&#8230; and that means lots of code inside.</p>
<p style="margin-bottom: 0in;"><a id="aptureLink_dPnDqz3ReW" style="margin: 0pt auto; padding: 0px 6px; text-align: center; display: block;" href="http://apture.s3.amazonaws.com/0000012563d1e7e18edb675a007f000000000001.wizard_overview.png" onclick="pageTracker._trackPageview('/outgoing/apture.s3.amazonaws.com/0000012563d1e7e18edb675a007f000000000001.wizard_overview.png?referer=');"><img style="border: 0px none;" title="wizard_overview" src="http://apture.s3.amazonaws.com/0000012563d1e7e18edb675a007f000000000001.wizard_overview.png" alt="" width="471.1061946902655px" height="532.35px" /></a></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">For the curious this is the last step of the Installation Wizard before launching the final installation against A2Billing.</p>
<p style="margin-bottom: 0in;">Today, we can bill local calls with a few clicks and<strong> it is time to start thinking in the overall provisioning</strong>!. Provisioning, it is definitely a Village Telco component that it is going to need more than our brains! We are getting there, it is easy to forget that one year ago we were just imagining something like this! <img src='http://www.villagetelco.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">


<p>Related posts:<ol><li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/' rel='bookmark' title='Permanent Link: Billing calls from the potatoes (Part I)'>Billing calls from the potatoes (Part I)</a> <small> It has been a year now since we started...</small></li>
<li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-ii/' rel='bookmark' title='Permanent Link: Billing calls from potatoes (Part II)'>Billing calls from potatoes (Part II)</a> <small> In November 2008, Steve, Louise and myself sat down...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-iii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Billing calls from potatoes (Part II)</title>
		<link>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-ii/</link>
		<comments>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-ii/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 12:50:04 +0000</pubDate>
		<dc:creator>aep</dc:creator>
				<category><![CDATA[VTE Server]]></category>
		<category><![CDATA[Village Telco]]></category>

		<guid isPermaLink="false">http://www.villagetelco.org/?p=379</guid>
		<description><![CDATA[<p></p>
<p style="margin-bottom: 0in;">In November 2008, Steve, Louise and myself sat down in Irene (a small “township” south of Pretoria) and started to draft what we considered a billing scenario for the Village Telco. A few nice ideas came up from that meeting: the relevance of local calls, voicemail, the possibility to switch your potato from pay [...]


Related posts:<ol><li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/' rel='bookmark' title='Permanent Link: Billing calls from the potatoes (Part I)'>Billing calls from the potatoes (Part I)</a> <small> It has been a year now since we started...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">In November 2008, Steve, Louise and myself sat down in Irene (a small “township” south of Pretoria) and started to draft what we considered a billing scenario for the Village Telco. A few nice ideas came up from that meeting: the relevance of local calls, voicemail, the possibility to switch your potato from pay phone to personal phone, focusing on pre-paid models, etc.</p>
<p style="margin-bottom: 0in;">Can we take a VoIP billing software and make it simple enough for our expected Village Telco scenario? This is not a trivial question to answer, what is &#8220;simple enough&#8221; and what is relevant to our target group? I like to explain usability and business models taking the asterisk GUI and linksys wireless AP as an example. What is better,  to have a software that can do almost everything you want but only a few can configure correctly or a solution that does something very concrete out-of-the-box?</p>
<p style="margin-bottom: 0in;">I call this the “asterisk vs linksys”. Steve prefers to call it “drupal vs wordpress”.  Someone will accuse me of opening a topic that can lead to a  DNFTT situation (Yes!, look for the term DNFTT and you will see what I mean). In any case, our gut feeling is that we needed the “wordpress of billing”, something that is simple enough, with default values to fit our scenario. <strong>It won&#8217;t do everything, it will do a few things very well. </strong>What I did not know at that time is how much time and energy can take to make things simple for others to use! It remind me those times when you needed to know the horizontal input frequency  of your screen to get your graphical interface running. <strong>Can we make billing simple? </strong>Can we make it to work out of the box without imposing users to understand the meaning of codec, trunk, SIP, challenge-response or MD5 hashes? Can we survive the flame-wars of the geek community insisting that users needs to know advance cryptography to run a secure VoIP call?</p>
<p style="margin-bottom: 0in;">In September 2009, we had a clear understanding of what simple billing could look like and what two big pieces of code were needed for A2billing: (1) an installation wizard, (2) a simplified management interface.</p>
<p style="margin-bottom: 0in;">So we put together a document including the <strong>seven technical requirements of the installation wizard:</strong></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">R1 <strong> Billing</strong></p>
<ul>
<li>The main billing system will be pay-as-you-go</li>
</ul>
<ul>
<li>The system should provide mechanisms to avoid fraud</li>
</ul>
<p style="margin-bottom: 0in;">R2 <strong>Connectivity</strong></p>
<ul>
<li>The VT and billing platform does not depend on an Internet connection</li>
</ul>
<ul>
<li>No Mesh Potatoes or Upstream Providers need to be active to configure the VT billing platform</li>
</ul>
<ul>
<li>The wizard will assume that the upstream provider is reachable via IP/SIP</li>
</ul>
<ul>
<li>Other trunk technologies as  GSM, PSTN, will provide a  SIP interface  to the a2billing system</li>
</ul>
<p style="margin-bottom: 0in;">R3  <strong>Client Hardware</strong></p>
<ul>
<li>The Mesh Potato will be the main hardware and can operate in two main modes home/business phone or pay phone mode</li>
</ul>
<ul>
<li>A client device should have the ability to  operate in one or two modes</li>
</ul>
<p style="margin-bottom: 0in;">R4  <strong>Client Types</strong></p>
<ul>
<li>Three types of accounts need to be supported in the system</li>
</ul>
<ol>
<li>account only: customer has an account with credit into the system</li>
<li>phone number# only: customer has a phone number but not a physical phone</li>
<li>phone: customer owns a phone with a # and an account associated with it</li>
</ol>
<p style="margin-bottom: 0in;">R5  <strong>DID</strong></p>
<ul>
<li>The system can support 0,1 or N (many) DID numbers. When DID numbers are more than 1, we assume a pool of numbers</li>
</ul>
<p style="margin-bottom: 0in;">R6  <strong>Voicemail</strong></p>
<ul>
<li>Any person with a DID (external or internal) should have a Voicemail</li>
</ul>
<ul>
<li>Voicemail should be reachable by any phone</li>
</ul>
<p style="margin-bottom: 0in;">R7 <strong> Callplans and Rates</strong></p>
<ul>
<li>The selection  of  the provider,  implies  the  automatic  creation  of  a  rate  plan  associated with the provider</li>
</ul>
<ul>
<li>Users should not have to deal with dialplans in asterisk, including all main contexts:   call outs, recharge, did, voicemail</li>
</ul>
<p style="margin-bottom: 0in;">Time to move the specifications into an architecture model!</p>
<p style="margin-bottom: 0in;"><strong>Extending A2Billing to support our Installation Wizard</strong></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">The picture (green area) shows what <a id="aptureLink_1GTijvnMdf" style="padding: 0px 6px; float: left;" href="http://apture.s3.amazonaws.com/000001255ebea770d459fe0c007f000000000001.ezbilling_overview.jpg" onclick="pageTracker._trackPageview('/outgoing/apture.s3.amazonaws.com/000001255ebea770d459fe0c007f000000000001.ezbilling_overview.jpg?referer=');"><img style="border: 0px none ;" title="ezbilling_overview" src="http://apture.s3.amazonaws.com/000001255ebea770d459fe0c007f000000000001.ezbilling_overview.jpg" alt="" width="332.8781954887219px" height="514.8000000000001px" /></a> A2Billing provides by default. Changes to A2Billing (as getting a basic scenario up and running) require accessing the web GUI.</p>
<p style="margin-bottom: 0in;">The Village Telco has extended A2Billing to include (1) our Simplified Management Interface and (2) a Web service that talks with A2Billing internal logic. This new Webservice presents a API that hides the complex SQL back office logic.</p>
<p style="margin-bottom: 0in;">The idea behind this new (abstract) layer of communication with A2Billing was to allow the design of third party applications that can perform complex tasks inside of the Billing Platform. The new API currently consists of 26 functions that are accessible via a SOAP interface.</p>
<p style="margin-bottom: 0in;">Our Village Telco Installation wizard makes use of the newly developed API. With this approach, the Installation Wizard does not need to know anything about A2Billing&#8217;s SQL <img src='http://www.villagetelco.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Hopefully, any changes inside of the internal logic of A2Billing will not break our Wizard.</p>
<p style="margin-bottom: 0in;">So how the wizard look like?</p>
<p style="margin-bottom: 0in;">Simple&#8230; full of round corners and performs a default installation of a local Village Telco A2Billing in 12-17 clicks!</p>
<p style="margin-bottom: 0in;">Screen shoots follows in Part III</p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;"><strong>References</strong></p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">[1] A2Billing Webservice API</p>
<p style="margin-bottom: 0in;"><a id="aptureLink_OUUgAMV4UI" href="https://docs.google.com/Doc?docid=0AX-tdmlhxGGBZGh0bmtncTZfMGN6aGh6Z2Zy&amp;hl=en" onclick="pageTracker._trackPageview('/outgoing/docs.google.com/Doc?docid=0AX-tdmlhxGGBZGh0bmtncTZfMGN6aGh6Z2Zy_amp_hl=en&amp;referer=');">https://docs.google.com/Doc?docid=0AX-tdmlhxGGBZGh0bmtncTZfMGN6aGh6Z2Zy&amp;hl=en</a></p>
<p style="margin-bottom: 0in;">[2] Installation Wizard Development SVN</p>
<p style="margin-bottom: 0in;">http://svn.it46.se/svn/villagetelco/a2billing/wizard/</p>
<p style="margin-bottom: 0in;">[3] Simplified Management Interface SVN</p>
<p style="margin-bottom: 0in;">http://svn.it46.se/svn/villagetelco/a2billing/gui/</p>
<p style="margin-bottom: 0in;">[4] A2Billing Village Telco Contrib Branch SVN</p>
<p style="margin-bottom: 0in;">http://svn.a2billing.net/svn/asterisk2billing/trunk/addons/contrib/villagetelco/ (user/passwd: guest/guest)</p>
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">
<p style="margin-bottom: 0in;">


<p>Related posts:<ol><li><a href='http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/' rel='bookmark' title='Permanent Link: Billing calls from the potatoes (Part I)'>Billing calls from the potatoes (Part I)</a> <small> It has been a year now since we started...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.villagetelco.org/2009/12/billing-calls-from-potatoes-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Billing calls from the potatoes (Part I)</title>
		<link>http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/</link>
		<comments>http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 09:46:34 +0000</pubDate>
		<dc:creator>aep</dc:creator>
				<category><![CDATA[VTE Server]]></category>
		<category><![CDATA[Village Telco]]></category>

		<guid isPermaLink="false">http://www.villagetelco.org/?p=374</guid>
		<description><![CDATA[<p></p>
<p style="margin-bottom: 0in;">It has been a year now since we started to look into billing for the Village Telco. It is about time to announce where we are in terms of development. We have been so busy that we forgot to write about what happened behind the scenes. A bit of it in the next few [...]


Related posts:<ol><li><a href='http://www.villagetelco.org/about/' rel='bookmark' title='Permanent Link: About'>About</a> <small>The Village Telco is an initiative to build low-cost community...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;">It has been a year now since we started to look into billing for the Village Telco. It is about time to announce where we are in terms of development. We have been so busy that we forgot to write about what happened behind the scenes. A bit of it in the next few posts!</p>
<p style="margin-bottom: 0in;">A quick reminder about where we want to go:</p>
<p style="margin-bottom: 0in;">The Village Telco runs several functional components, the <strong>mesh potatoes </strong>(our open hardware) route wireless VoIP calls via other mesh potatoes. Mesh islands (the bunch of potatoes in the same ad-hoc channel) can be interconnected by means of  “<strong>super nodes</strong>”. The super nodes are responsible of linking different mesh networks, allowing multiple wireless channels to coexist in wide wireless area network. Yes, so we can scale up!. Mesh potatoes are monitored thanks to <strong>Afrimesh </strong>and will be happily provisioned by our <strong>budding</strong> server (also a botanic term that i really like!)</p>
<p style="margin-bottom: 0in;">Local and external calls needs to be billed and <strong>upstream technologies for  telephony</strong> needs to be plugged into our mesh cloud.</p>
<p style="margin-bottom: 0in;">Now that you got the introduction to the Village Telco architecture overview&#8230; this is how we tried to find a solution for billing the potatoes!</p>
<p>The past December,  we (IT46) took the responsibility to look into billing and upstream technologies for the Village Telco. After some research in billing systems for VoIP, we found <strong>A2billing</strong>! A2billing is a LAMP application that sits at the top of Asterisk that bills and manages VoIP calls. A2billing takes advantage of the Asterisk Manager Interface (AMI) and Asterisk Gateway Interface (AGI) to deal with the call logic. Several thousands of lines of PHP and almost a hundred MYSQL tables glue all together!. Powerful but definitely not simple for our Village entrepreneur.</p>
<p style="margin-bottom: 0in;">In my way to Spain in Christmas 2008, I made a stop over in Barcelona. Barcelona is a truly international city and the current base of Areski (the core technical developer of A2billing) and Joe (commercial director of Start2billing). It was a very fruitful face to face meeting between a Belgian living in Barcelona, a British living in his boat somewhere in the Mediterranean  and a Castillian living in Sweden. I explained Areski and Joe what we wanted to do in the Village Telco, about the mesh potatoes (a hardware that did not exist by then!) and why I liked A2billing. I am not sure if they thought I was mad, but I had to give it a try and meet the people behind the code.</p>
<p style="margin-bottom: 0in;">During the next three months I put some time to understand the internals of A2billing, helped to make their GUI more human friendly and wrote some documentation. In a geek world, trust is when you get write access to main trunk in SVN!. For some reason, I got access very quickly something that motivated me to keep working with the software. In early April 2009, A2billing 1.4 Beta was released&#8230; new documentation, new logo, new GUI, a tier-3 architecture (admin, agents and clients).</p>
<p style="margin-bottom: 0in;">Before the European summer of 2009, A2billing 1.4 was “frozen” enough to start considering our next step. Making A2billing easy to deploy for the Village Telco. It was time to start thinking in our target users.</p>
<p style="margin-bottom: 0in;">The challenge: be able to install and bill local Calls with no more than 10 mouse clicks!</p>


<p>Related posts:<ol><li><a href='http://www.villagetelco.org/about/' rel='bookmark' title='Permanent Link: About'>About</a> <small>The Village Telco is an initiative to build low-cost community...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/' onclick="pageTracker._trackPageview('/outgoing/mitcho.com/code/yarpp/?referer=');">Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.villagetelco.org/2009/12/billing-calls-from-the-potatoes-part-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
