The callback engine is a component of the VoIP network that actually establishes calls to A and B and bridges them together. The functions that the callback engine must perform are as follows:
- It includes an interface for configuring a callback trigger which transfers the required call information to the callback engine.
- Performs call authorization in PortaBilling to ensure that the user is allowed to make the call and has sufficient funds to cover it.
- Correctly establishes and connects outgoing calls.
- Disconnect calls when caller has exceeded his credit limit.
- Reports call duration and other relevant call information to PortaBilling so the call will be correctly charged.
The callback engine in PortaSIP does just that. It works in close conjunction with the callback trigger. After the callback trigger gathers the initial information (ANI number, account and password) and performs the initial account authentication/authorization, the callback engine performs further call processing.
A detailed description of the callback call flow will better illustrate its functions:
- When a new request is received from the callback trigger (e.g., for phone numbers 12065554123 and 16047770456) including the username and password for the account trying to establish the call, a request to establish call leg A (to number 12065554123) is sent to PortaSIP server.
- PortaSIP authorizes call leg A in PortaBilling.
- Upon successful call leg A authorization, PortaSIP asks PortaBilling for the optimal routing for destination number 12065554123 and establishes the outgoing call to the first destination number.
- After call leg A is connected (i.e. the user picks up the phone), it sends a request to PortaSIP to establish call leg B (to number 16047770456) if no additional actions are required from the user’s side (i.e. to enter the PIN, the destination number, etc.).
- PortaSIP authorizes call leg B as well, but differently: PortaBilling is informed that there are two simultaneous calls, i.e. to 12065554123 and 16047770456. Thus PortaBilling calculates the maximum allowed call duration so that the sum of the charges for both calls according to the appropriate rates will not be greater than the current balance.
- If authorization is successful, PortaSIP obtains the routing for the second destination number and establishes the outgoing call.
- When the user of the second phone number (16047770456) answers, PortaSIP starts a timer. Notification that call leg B is connected is sent to the callback engine.
- Call legs A and B are bridged together and users of phone numbers 12065554123 and 16047770456 can now start their conversation.
- When one of the users hangs up, the callback engine sends a request to PortaSIP to disconnect the other call leg as well. The same happens if call leg B is disconnected because the time has run out (the time for call leg B is calculated based on the time for call leg A); the callback engine will request that call leg A be disconnected as well.
- PortaSIP sends accounting information to PortaBilling so that the account is charged for two call legs (to 12065554123 and 16047770456). Two xDRs appear in the database, and its balance is modified accordingly.
Compared to similar software solutions, the callback engine in PortaSIP has the following principal advantages:
- No specialized hardware since the callback engine is the part of PortaSIP.
- This is the “out of the box” solution. To enable callback, simply perform the application configuration on the web interface.