How to integrate to Asterisk is a frequent question on this forum. Asterisk has multiple interfaces for integration that allow for a myriad of third party applications to be built leveraging Asterisk.
[size=134]AGI/FastAGI[/size]
The first interface is the Application Gateway Interface (AGI), which allows for an external application to be called to provide access to external data/systems and external dialplan logic on calls (incoming or outgoing). The AGI aware application may be written in virtually any language (Perl, PHP, C/C++, Java, Pascal, Bourne Shell, etc) and access almost any database (ODBC, MySQL, Postgres, Oracle, etc). Examples of using the AGI may be to trigger the opening of a new case for a helpdesk automatically when a call arrives, to providing Least Cost Routing (LCR) capabilities from a custom database application, to integrating Text To Speech (TTS) applications.
Those familiar with an Avaya Communication Manager will know this type of functionality as a call to an adjunct link from a vector/VDN, while those familiar with a Nortel Meridian background will know this as the ability to call a host from a CDN. A key difference is that the Asterisk AGI allows for much greater control of the channel (ie - playback messages, capture digits, etc) than an Avaya or Nortel does.
The cousin of the AGI is the FastAGI, which allows one to call a remote AGI aware application via a TCP socket connection. Allowing the developer to offload the AGI resource load onto another server.
[size=134]Manager API[/size]
The Asterisk Manager API is an interface that allows for third-party call control. This may be thought of as a Computer Telephony Integration (CTI) interface such as CSTA/TSAPI. This interface allows for a third-party application to connect via a telnet/TCP interface to do such actions as originate calls, call and extension event monitoring, call recording/monitoring, etc. Examples of uses for this interface would be autodialing (in lieu of using call files), call recording applications, inbound call screen-pops to desktop applications, etc.
[size=134]Aynchronous Javascript Asterisk Manager (AJAM)[/size]
AJAM is is a new technology (available in v1.4) which allows web browsers or other HTTP enabled applications and web pages to directly access the Asterisk Manger Interface (AMI) via HTTP.
[size=134]Opensource Libraries[/size]
While connecting to an AGI/Manager API interface is straightforward, there are several libraries available to do the dirty work for you. These include:
-
Asterisk-Perl (AGI only)
-
[url=http://www.adhearsion.com]Adhearsion - Ruby
-
[url=http://telegraph.rubyforge.org]Telegraph - Ruby
-
Presentation from Astricon in Dallas in Oct 2006 may be found here.
[size=134]Example Application[/size]
Here is an example of an application that was developed using Asterisk and Asterisk integration capabilities:
Just one example of the powerful web services that may be built leveraging Asterisk and its various integration interfaces.