Push API

sipgate.io passes call meta data to your web server in real-time.

Book sipgate.io

We will now show you how to book sipgate.io using the Feature Store.

1. Login

Log into your shiny sipgate account and go to the Feature Store. You can find a button on the right side of the top bar

2. Feature Store

Within the Feature Store, scroll down and click on the sipgate.io feature.

3. Book sipgate.io

Click on the orange button to book the free feature and follow the confirmation process.

*To begin developing applications using webhooks you first need to create a sigpgate account. There are two types of accounts: sipgate starter and sipgate business. Both are slightly different but offer webhooks functionality. For the following example, take a look at sipgate.

Enable webhooks

We will now show you how to configure your URLs.

1. Open sipgate.io

Select sipgate.io in the sidebar to navigate to your settings section

2. Go to webhooks

Select „Webhooks“ in the sidebar and navigate to „URLs“.

3. Set Webhooks

Click on „Incoming calls“ or „Outgoing calls“, enter your URL and hit „Save“.

Example URL: https://www.example.com:3000

A word about security

HTTP vs. HTTPS

We strongly encourage you to use a HTTPS server. Although we support plain HTTP connections we do not recommend pushing sensitive call details over unencrypted connections. Be aware that sipgate.io does not accept self-signed certificates. If you need a certificate for your server, you can easily get one at Let´s Encrypt.

FAQ

What happens when a call is transferred?

The transferred call is a new call. Scenario: Jennifer calls Doc Brown and Doc Brown transfers the call to Marty and Marty picks up. Here’s what sipgate.io sends to your server:

  1. newCall (user: Doc, callId: 12111955)
  2. answer (user: Doc, callId: 12111955)
  3. [Doc dials *3 <Marty’s extension>]
  4. newCall (user: Marty, callId: 21102015, diversion: <Doc’s number> from: <Jennifer’s number>)
  5. answer (user: Marty, callId: 21102015, diversion: <Doc’s number> from: <Jennifer’s number>)
  6. hangup (user: Doc, callId: 12111955)

As you can see, the callId changes with the transfer.

This is what sipgate.io sends, in case Marty does not pick up:

  1. newCall (user: Doc, callId: 12111955)
  2. answer (user: Doc, callId: 12111955)
  3. [Doc dials *3 <Marty’s extension>]
  4. newCall (user: Marty, callId: 21102015, diversion: <Doc’s number> from: <Jennifer’s number>)
  5. hangup (user: Marty, callId: 21102015)

How is forwarding signaled?

The forwarded call is handled as a new call. Let’s assume the previous scenario: Jennifer calls Doc Brown but his line is busy so the call is forwarded to Marty who in turn picks up the call.
Here are the pushes sipgate.io will send to your server:

  1. newCall (user: Doc, callId: 12111955)
  2. hangup (cause: forwarded, callId: 12111955)
  3. newCall (user: Marty, callId: 21102015, diversion: <Doc’s number> from: <Jennifer’s number>)
  4. answer (user: Marty, callId: 21102015, diversion: <Doc’s number> from: <Jennifer’s number>)
  5. hangup (user: Marty, callId: 21102015)

I get a lot of event during forwards and transfers, do I have to pay for all of them?

The answer is: It depends.
If you transfer or forward a call within the same sipgate account then the answer is no. But if you forward or transfer a call to a different sipgate account or an external number then those pushes are being billed to your account.

I want to implement more complex interaction scenarios and can’t answer to a push request directly. Can I control a call asynchronously?

In every push request the callId parameter is included to identify the current call. Use the callId to manipulate the call at any time with our RTCM-API.

What about Emergency calls?

sipgate.io does not process emergency calls. Emergency calls are immediately put through to emergency services.