A big driver of the adoption of Asterisk is the flexibility it brings. It has been called the Swiss Army Knife of telephony with good reason. As a result, there are a number of things that one can do to utilize that flexibility and add a bit of customization to their Asterisk-based call center software. In most cases, the actual amount of modification done is pretty small, but it’s always nice to know the ability exists if needed.
One of the most common ways to influence your call flow/functionality is incorporating a web service. Web service APIs exist for many services, from doing caller ID lookups to sending SMS from the dialplan. This functionality is not directly available in the dialplan for the most part, although a good IVR builder should allow the option. It is fairly straightforward for a developer to wrap the web service call and return into an AGI that can be called (more on AGIs in a couple of paragraphs). This allows both the sending and receiving of data, and your dialplan can be set to branch one way or another based on the results returned.
Of course, if we are discussing call flow, being able to create your own dialplans is a must, and is a feature of even the most basic Asterisk-based systems. On some systems, you write the dialplan as a file included in extensions.conf. In more advanced systems, there is a visual dialplan builder that allows you to script complex IVRs as well as directly writing your own commands to the generated dialplan. For speed and ease of use, it’s preferable to have both methods available, as well as a variety of methods of reaching the dialplan you’ve created.
Many multi-tenant PBX systems will have a few default functions that can be mapped to star (*) codes, such as *99 to Voice Mail. Asterisk does allow you to define your own, and tie your functionality to a star code of your choosing through its Features configuration. Being able to define your own functions and map them to a star code can be done by manually editing config files in Asterisk. It is, of course, much better if your software handles this in a multi-tenant safe way, so that tenants can define their own functions and map to their own star codes without the chance of function collision, just as the Q-Suite does.
Last but not least is the ability to write executable code and have it run by Asterisk. Through the Asterisk Gateway Interface (AGI), programs can be run directly by Asterisk that have access to call data, do some processing, and generate some output as a result. The Enhanced AGI (EAGI) can allow programs to process the channel itself, reading DTMF or manipulating audio. This requires a greater degree of technical knowledge, and is not something that can be done through the interface of your call center software. However, the requirements of the program itself are fairly straightforward, and making it available is simply a matter of placing the executable in the correct directory with the correct permissions. Once it’s there, it can be called just like any other dialplan component. The complexity can range from a simple script that acts as a wrapper to a web service, to a full-fledged system that accesses and processes external data, manages the audio stream, etc.. If you have an external system that you need to interface with, you may need to use an AGI.