Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Outbound SIP Trunks

The dialplan can be configured to perform HTTP requests and route the call based on the HTTP response.

 

Image RemovedImage Added

To do this, you will need to use the curl application inside your call routing table to perform the HTTP request. The return value from the HTTP request will be stored in the variable curl_response_data, and return code curl_response_code.

Example call routing:

<extension name="to-gateway">
    <condition field="${destination number} expression="(.*)">
        <action application="set" data="curl_timeout=1"/> <!-- Timeout Delay in Seconds -->
        <action application="curl" data="http://mywebserver.com/getnumber.php?number=${destination_number}&name=${url_encode(${caller_id_name})}"/>
        <action application="log" data="Dialing out on gateway:${curl_response_data} response-code:${curl_response_code}"/>
        <action application="bridge" data="sip/gateway/${curl_response_data}/${destination_number}/>
    </condition>
</extension>

Code Block
 

 

Your Web Server should return a response like this:

gateway1

 

Sample code

A sample php code that you can use for debug can be downloaded from this link:
Sample Test PHP script

The sample code will always return 'gateway1'.


Sample code to query database

The webserver can be extended to retrieve the gateway name from a database.

 

Image RemovedImage Added

You can download the sample PHP code that will connect to a MySQL Database from the link below:
Sample PHP Script

The sample PHP script accepts the following parameters:
db_url: URL of database to connect to. Default: localhost
db_user: Username to connect to database. Default: root
db_password: Password to connect to database. Default: sangoma
db_name: Database name. Default: sangoma_sbc
db_tableTable name. Default: gateways
db_number_column: Name of column that contains the number to look-up. Default: number
db_gateway_column: Name of column that contatins the gateway name. Default: gateway

So the generated SQL query is:

Code Block
SELECT <db_gateway_column> FROM <db_table> WHERE <db_number_column>=<number>

For example, using this line from the dialplan:

<action application="curl" data="http://localhost/getgateway.php?

db_table=gateways&db_number_column=number&db_gateway_column=gateway&number=9054741990"/>

Code Block
 

Will result in this SQL query:

Code Block
SELECT gateway FROM gateways WHERE number=9054741990