Blog Case Studies

An out of the normal Customer request

and how we solved it:

We were approached by one of our customers who provides support services to travellers and global companies who had a client that provides maritime engineering services world wide and required an emergency helpline that “followed the sun” 

Detailed Specification

A single number that called dependant on time the on call support staff.

The calls cannot go to users Voicemail.

The staff members are to be notified by email that the call was taken and who took it.

If the on call staff do not answer the call it is forwarded to our clients call centre.

On completion of the call a copy of the recording in mp3 format is emailed to the on call staff.


Our customer uses FreePBX so the core of the project is the use of the Queue application but with some custom dial plan and scripts to exploit and enhance features that are not exposed, 

The inbound numbers destination is a “custom destination” that first sends it to some custom dial plan explained later and then to the “Call Flow Control” application to allow the system to be overridden, It is then sent to the “Time Conditions” application that uses UTC as its time zone to over come issues with daylight saving in different hemispheres, this then send the call to the correct queue depending on time 

To allow an email to be sent to staff we used the qgosub variable that is explained HERE , this sub routine sends the email on answer. this variable is set by a small dial plan snippet that sets the qgosub variable and an additional one to set a channel variable as the callers callerID number, as its lost when the call is made to the staff members by the queue application. 

To make sure calls do not go to voicemail, the queue option “call confirm” this forces the called staff to press 1 to accept a call, This much overlooked option is useful for many queue scenarios.

If the call is unanswered the call has to be passed to the callcenter with the callerID name tagged with the customers Name, We achieve this with the “SetCallerID” application passing the call onto the client call centre.

Finally when the call is complete we need to email the recording to the customer. To do this with the “Post Call Recording Script” option in Advanced options. (You may need to enable “Display Readonly Settings” and “Override Readonly Settings”), This did require a little lateral thinking as we were already using this script to convert recordings to MP3 and save them to AWSS3 storage, But we didn’t want an email sent after all recordings do we included an additional ‘if’ statement to check if the qgosub variable was passed over to the script and if it was email the attachment otherwise do nothing.

I hope this shows the flexibility of FreePBX and asterisk and how fairly complex call routings and requests can be fulfilled in a manner that doesn’t require complex dial plans or require high support overheads.

If you want to achieve similar don’t hesitate to get in touch as by using modules already in FreePBX you’re not paying to reinvent the wheel.

Case Studies Knowledge Base QueueMetrics Support


We have recently installed and customised a Queuemetrics solution for a customer. Their key reason for choosing Queuemetrics was the ability to use dynamic agents without the need of major Elastix reprogramming and a clear and simple interface.

It was also decided that users needed to be able to log into the system from their handsets as well as from a web interface, as the customer is hoping to roll out an agent portal in the future.

To enable Hotdesk the  following setting has to be set similar to below

# The value is interval time (in seconds) used by the analyzer to look back searching HOTDESK verbs in the queue log

This meant some additional dialplans to allow logging in & out and pausing.

These are similar to the dialplans that the web portals use except that they have prompts and they also have to store the extension and agent id in the asterisk database.

;added dialplan for queuemetrics
; Add Member - 422
; User is asked for their loging agent id
exten => _422XXXX,1,Answer
exten => _422XXXX,2,Read(AGENTID,agent-login,4,,1,6)
exten => _422XXXX,3,Gotoif($["${AGENTID}" = ""]?end)
exten => _422XXXX,4,GotoIf($[${LEN(${AGENTID})} != 4]?2)
exten => _422XXXX,5,set(DB(qmagent/${CALLERID(num)})=${AGENTID})
exten => _422XXXX,6,Macro(queuelog,${EPOCH},${UNIQUEID},NONE,Agent/${AGENTID},HOTDESK,SIP/${CALLERID(num)})
exten => _422XXXX,7,AddQueueMember(${EXTEN:3:4},SIP/${CALLERID(num)})
exten => _422XXXX,8,SayDigits(${AGENTID})
exten => _422XXXX,9,Playback(agent-loginok)
exten => _422XXXX,10(end),Hangup
; Remove Member - 423
exten => _423XXXX,1,Answer
exten => _423XXXX,2,set(DEL_AGENT=${DB_DELETE(qmagent/${CALLERID(num)})})
exten => _423XXXX,3,RemoveQueueMember(${EXTEN:3:4},SIP/${CALLERID(num)})
exten => _423XXXX,4,Playback(agent-loggedoff)
exten => _423XXXX,5,Hangup
; extension 32: agent pause with hotdesking (with pause code)
exten => _32XX,1,Answer
exten => _32XX,2,set(AGENTCODE=${DB(qmagent/${CALLERID(num)})})
exten => _32XX,3,NoOp( "QM: Pausing Agent/${AGENTCODE} at extension SIP/${CALLERID(num)} with pause reason '${EXTEN:2:2}' made by '${QM_LOGIN}' " )
exten => _32XX,4,PauseQueueMember(,SIP/${CALLERID(num)})
exten => _32XX,5,System( echo "${EPOCH}|${UNIQUEID}|NONE|Agent/${AGENTCODE}|PAUSEREASON|${EXTEN:2:2}" >> /var/log/asterisk/queue_log )
exten => _32XX,6,Playback(dictate/paused)
exten => _32XX,7,Hangup
; extension 33: agent unpause with hotdesking
exten => 33,1,Answer
exten => 33,2,NoOp( "QM: Unpausing Agent/${AGENTCODE} at extension SIP/${CALLERID(num)} made by '${QM_LOGIN}' " )
exten => 33,3,UnpauseQueueMember(,SIP/${CALLERID(num)})
exten => 33,4,Playback(dictate/pause)
exten => 33,5,Playback(removed)
exten => 33,6,Hangup

These need to be added to your extensions_custom.conf file in a context that’s included in the from-internal  context.

Also a change has to be made to the dialplans in the extensions_queuemetrics.conf to store and delete the database entry as well.

The system has proved to deliver what was expected and will shortly be expanded to track outbound calls and the addition of custom wallboards similar to what we recently produced for another customer.

If you would like to talk about adding QueueMetrics to your Asterisk system or are looking for a complete phone system and queuemetrics platform please contact us.

Case Studies

Multi-Site Multi-Country Asterisk network


We have recently added the 5th system to the customers international VoIP network. This system was for their Polish office and is linked to their Tokyo, Sydney, Singapore and London office systems.


For this site a Sangoma FREEPBX 60 system was chosen for ease of remote deployment and reliability.    The Tokyo & Sydney offices already has a Xorcom XR2000 systems whilst the London and Singapore offices have a Openvox  Asterisk solutions.  .


For the New International offices FreePBX systems were chosen as they provide a full turnkey system that can be sent out to the office plugged in. The systems initially obtain their IP address by DHCP and once a port is forwarded through the firewall to this address a fixed IP address is assigned and the customer firewall updated. Access to The GUI is by a SSH tunnel so that other than a random port for SSH and a port for IAX2 no other ports need to be opened on the customer firewall. Endpoint manager makes the deployment of handsets on the remote systems a simple and reliable process.

All systems have been linked by IAX2 trunks and the dial-plan configured so that desk to desk calls can be made between all offices and outgoing calls break out of the closest geographic system, for example a user in Sydney making a call to a UK number will have the call originate from the London system and the same goes for Tokyo, Singapore and Polish users calling UK or international numbers.

The network of systems is key to the support of the customers 24×7 support service. This is controlled by a dial-plan that is complicated by the fact that Japan does not have “Daylight saving” so even though the calls land on the UK system we had to configure the dial-plan to take into account local time in Tokyo and not base routing solely on UK time.  This has proved reliable and very successful.

All systems on the network are monitored 24×7 by our Nagios monitoring platform, Not only monitoring Asterisk but also monitoring the status of the international IAX2 trunks.


Blog Case Studies Knowledge Base

Simple CRM integration.

CRM’s have changed a lot since the days of ACT and Goldmine costing many thousands of pounds, for example a 3 user licence for Goldmine is $2700 and $430 a year, compare that to a SaaS solution, for example Capsule is $12 a month you can see why users are flocking to reasonably prices web solutions.
Capsule being web based is accessible anywhere you want on PC, Tablet or smartphone, it also integrates with other services such as LinkedIn, Twitter or if you wanted Facebook. It integrates with other SaaS products such as Kashflow and Mailchimp to name but a few allowing accounting direct mailing and contacts to all be linked.

capsule-logo-on-blackSo why did we suddenly show interest in these again. Well we were contacted by business who used another CRM package and wished to migrate to Capsule but wanted to be able to call direct from the application. This feature is not available at the moment with Capsule, But we have previously used a Firefox plugin called greasemonkey that can rewrite pages and convert numbers it recognises into clickable links. On investigation there is a similar product for Chrome called Tampermonkey and they are compatible scriptwise. With minor changes to our CyJax dialer script we got this working on elastix as well as a modified version for users of Gradwell‘s hosted VoIP solution. With this script now installed Capsule allows simple click dialing of contacts from the database.

On Asterisk we have automated the updating of the contacts history notes with details of the Call, The notes are linked to the Case or opportunity that you were working on if you dialled out from case notes. Also we can track incoming calls** so that they show up in Capsule, at the moment they show up as a task as you cannot create a History note with out an owner but this hopefully will change if the Capsule API is extended . This means no more trying to remember when you called someone its all there.

We have recently extended this to now log callback requests from callers who dont want to wait in a queue. This additional feature is important as it lets people keep track of the callback requests dialing them, assigning them to a contact and adding further detail.

** To Track incoming calls required changes to the freepbx module in Elastix so that a macro is called on answer, Details on setting this support and patching Elastix is available  here

The scripts are available for free download at you will see that these are only scripts for your browser, If you want the server script for your ippbx please contact us to discuss this.


Case Studies

Restaurant Booking Solution.

We have been working with a client on a Hosted restaurant booking solution, providing the CTI and call tracking systems. This was complicated by the simple fact that the booking system was a closed system by another supplier.

The system works by the restaurant diverting their line to a DDI number we provide that sends the call to the system with the destination matching a defined number for that restaurant when the call enters the system the relevant settings are looked up in a database and audio message file, IVR options and CallerID name are set and the call is passed to the IVR. The caller then chooses their preferred option, The call can be depending of the time of day be passed to the call centre for a booking to be taken on the restaurants behalf or the call is passed to the restaurant where in many a Hosted Gigaset Dect handset is provided for them to take the booking or call the call centre for free.

The system has changed and evolved over time and by using Asterisk has meant that we can accommodate most requests for changes, Most recently we updated the statistics package to Asternic Pro

Asternic stats
Pro stats

Statistics. This has allowed much more detailed reports to be created for queues and agents.

The calls are delivered to the platform over a EFM circuit from providing quality and reliability combined with increased capacity over the original ISDN30 circuit.

For disaster recovery we provide a backup system in a data-centre that is kept in sync with the office system so in the case of power outage or system failure calls can be diverted to this system and calls take on mobile phones. Switching to back-up system is completed by the single click of a button on a web-page that instigates the diversion of the lines and starts the backup system automatically.

Currently we are migrating the database services off to a separate VMware server with 3 VMs, one for each of the core web or mysql servers. This will allow the service to scale as there are now over 1 million records per datatbase and it is showing no sign of slowing.

Case Studies

Elastix solution for a Bristol IT company

We were recently approached by a Bristol IT company to replace their ageing Avaya system. The proposed solution was an Elastix 2.3 solution running on Vmware 5.1, with their ISDN30e line connected via a Digium G100 gateway.

A key requirement was the ability to recharge usage to tenants in the building and replace an aging and expensive Oak call logger, This was simple with the Elastix solution as this option is included free of charge in the system and just required the uploading of a rates table.

The customer decided on Yealink T28 handsets for the office, utilising the BLF to have visibility of who is engaged on calls.

Case Studies

Outdoor pursuits company.

We were approached to supply  a hosted PBX solution to a Southwest England based Outdoor pursuits company replacing their on site AsteriskNow system with a more manageable and streamlined hosted Elastix based solution.

This gave them the ability to have handsets located where ever they were needed and add handsets easily with the user friendly Elastix interface. It also gave them increased viability of call usage with the inbuilt reporting and FOP2 let them see users engaged on calls.

We ported their existing BT Analogue lines to Gradwell VoIP trunks, This gave them an immediate increase in call capacity and combined with inclusive landline and mobile call packages meant call costs were kept under control.

Case Studies

Xorcom Solution for Kensington Office

An existing client was moving offices from Carnaby St London to Kensington, Since the original system was installed the usage had changed with the majority of staff now being based in South Africa where we also have remotely installed an Asterisk solution previously.

For the new kensington office it was decided to use a Xorcom IPBX as this single box solution would make management easier and as ISDN2 Lines were required the overall cost would be lower than using a dedicated server and ISDN2 gateway.


The system was preconfigured and tested in our Lab and then taken to site and installed in one day. The clean interface allows for easy addition of handsets using the endpoint manager.

Since the company make a large volume of international calls it was decided to use Gradwell for outgoing calls as this means a great saving over BT for call charges. They also had a EFM circuit installed for both Voice and office internet usage.

Case Studies

Redundant Asterisk solution for Hatzola, London, UK were approached by Hatzola* to provide a resilient platform for the reception, recording and transferring of emergency calls to home based operators.

The proposed solution was based on two Dell servers, Asterisk and the Redfone fonebridge.

To handle the resiliency Linux HA heartbeat was installed on the servers, This controlled Asterisk, The fonebridge and the “floating IP”. All configurations are synced between servers as are all recordings. For power backup a KeySource UP was installed with a runtime in excess of 4 hours.

Since installation the system has run faultlessly except for one occasion where the primary server was switched off in error, Due to the Resiliency of the platform this was not noticed for some hours such was the seamless changeover.

Hatzola Diagram

The system has now been expanded to a second redundant pair in a different london location. The systems are monitored by cyber-cottages Nagios based monitoring solution that monitors all the systems provided by them, The Hatzola systems automatically make test calls between themselves checking that the system is running as expected.


Hatzola was set up over thirty years ago, and is now an organization needing little introduction. It has evolved rapidly in last few decades into a household name known world over. Countless lives have been saved thanks to our dedicated teams expertise and endless dedication.

Please see case study and diagram here

Case Studies

VoIP User Connects 14 Million BT Customers To iNUM, the largest open-source VoIP network, has announced the interconnection of British Telecom 0870 range numbers to the VoIP peering iNUM network.

“VoIP remains restricted by the lack of interconnection between networks,” said Dean Elwood, founder of VoIP User. “By interconnecting to the BT 0870 range, we have enabled cross-network calling for 14 million users which is free of charge at off-peak times. What we have achieved today is the extension of our service into a new network of over a million VoIP users”.

British Telecom Plc, the UK’s largest telecom provider, announced that from 16th January 2009 it will make 0870 numbers free to call to subscribers on their Anytime call plan.

John Peter, managing Director of BT’s Consumer Business, said in a Press Release on Thursday “All of our 14 million Anytime customers have free calls included in their package and now all 14 million have free calls to 0870 at times that fit with their calling plan, which is something not offered by any of our competitors.”

Ian Plain, of technical consultancy, who architected the system for VoIP User, said “we created a mapping service for the 0870 iNUM interconnect. The system is accessed by users dialling 08700 68 58 48 from a BT landline and entering an iNUM number to contact. Details can also be stored meaning that the caller only ever has to enter the iNUM number to contact once.”

Tjardick van der Kraan, co-founder of VoIP User, said “The value add for customers of our services is the ability to call iNUM +883 range numbers, the so-called ‘Earth Area Code’, free of charge at off-peak times from a BT landline. This effectively connects British Telecom customers to Worldwide iNUM VoIP customers with no per minute charge.”

The iNUM Peering Network, run by Belgium based Voxbone S.A. operates using a standards based mechanism for traffic exchange between telecommunications networks.

Traditional dial codes are tied to a particular country or city. iNUM numbers avoid this limitation and users can therefore keep their number wherever they go in the world, being reachable on the same number for life.

Further details of the service are available at : VoIP iNUM

About VoIP User

VoIP User is located in the United Kingdom and provides hosted telephony services funded by the same community that uses these services. VoIP User’s business model is unique, based on inbound PSTN traffic revenue being used to purchase pre-wholesale bulk outbound routing. VoIP User

About Voxbone

Headquartered in Brussels, Belgium, Voxbone provides worldwide DID numbers and free phone numbers over a private intercontinental VoIP. The switchless architecture of the Voxbone network enables customers to realize the benefits of IP communications by rapidly deploying new services with local presence and simultaneously reducing costs. Voxbone