The GNU/Linux program cURL is
useful for retrieving data from a URI. In Asterisk,
CURL()
is a dialplan function.
We’re going to use CURL()
as an
example of what an extremely simple IVR can look like. We’re going to
request our external IP address from the website http://www.whatismyip.org.
In reality, most IVR applications are going to
be far more complex. Even most uses of CURL()
will
tend to be complex, since a URI can return a massive and highly variable
amount of data, the vast majority of which will be incomprehensible to
Asterisk. The point being that an IVR is not just about the dialplan; it
is also very much about the external applications that are triggered by
the dialplan, which are doing the real work of the IVR.
Before you can use CURL()
, you
have to ensure it is installed.
Installing cURL is easy. If it was not on your system when
you last compiled Asterisk, after installing it you’ll need to recompile
Asterisk so that it can locate the cURL dependencies and compile the
func_curl.so
module.
$
sudo yum -y install libcurl-devel
$
sudo apt-get install libcurl4-openssl-dev
The dialplan for our example IVR is very simple. The
CURL()
function will retrieve our IP address from
http://www.whatismyip.org, and then
SayAlpha()
will speak the results to the
caller:
exten => *764,1,Verbose(2, Run CURL to get IP address from whatismyip.org) same => n,Answer() same => n,Set(MyIPAddressIs=${CURL(http://www.whatismyip.org/)}) same => n,SayAlpha(${MyIPAddressIs}) same => n,Hangup()
The simplicity of this is impossibly cool. In a traditional IVR system, this sort of thing could take days to program.