Skip to main content

Webhook Integration

Written by Alex Brainin

The Ringotel Webhook Integration provides a convenient way to automate workflows by sending HTTP requests to a specified webhook URL when certain events occur within the platform. This feature allows you to seamlessly integrate Ringotel with third-party applications, services, or internal systems by notifying them in real-time when key events are triggered.

Note:

Webhook notifications are only triggered by external calls. Calls to and from numbers that start with * or are less then 4 digits would not trigger the webhook notifications.

Setting up integration in Ringotel portal

Sign into your Ringotel admin portal at https://shell.ringotel.co and navigate to an organization → Integrations tab → click Enable Integration on the Webhook card.

Specify your Webhook URL and API token and click Save & Continue.

Note:

Specifying the API token is optional. It will be sent in the body of each request to the Webhook URL in the “api_token” parameter.

Receiving Requests on the Webhook

Currently, the integration can send the following requests:

StartCallActivity

Sent when a call is started.

  • For inbound calls, this event is sent when calls hit a Ringotel User.

  • For outbound calls, this event is sent when a Ringotel user initiates a call.

Example:

{
"method": "StartCallActivity",
"api_token": "5c2d7008-a4b9-4eec-b549-e82804521e9a",
"params": {
"connection_name": "PBX",
"extension": "500",
"user_id": "17295348437628309790",
"connection_id": "17295345566567084859",
"activity_type": "inbound",
"domain": "newcompany123",
"call_start": 1729690611587,
"called_number": "500",
"caller_number": "353212028252",
"call_id": "1729693708182-2d1c3de3d3772cdc1f"
}
}

Create Activity

Sent when the other party picks up the phone and the call is connected.

Example:

{
"method": "CreateActivity",
"api_token": "",
"params": {
"connection_name": "Default connection",
"extension": "1001",
"user_id": "17292448538752201903",
"connection_id": "17292448416457942084",
"activity_type": "inbound",
"domain": "webhookint",
"call_start": 1762775285203,
"called_number": "1001",
"caller_number": "18295701330",
"call_id": "1762775285203-eb696040d8740d6fb4"
}
}

StopCallActivity

Sent when a call is ended by either party or when the call ends without an answer.

Example:

{
"method": "StopCallActivity",
"api_token": "5c2d7008-a4b9-4eec-b549-e82804521e9a",
"params": {
"extension": "500",
"call_end": 1729693741839,
"call_id": "1729693708182-2d1c3de3d3772cdc1f",
"call_duration": 27,
"connection_name": "PBX",
"user_id": "17295348437628309790",
"connection_id": "17295345566567084859",
"activity_type": "inbound",
"domain": "newcompany123",
"call_cause": "0",
"call_start": 1729693708166,
"called_number": "500",
"caller_number": "353212028252"
}
}

UpdateActivity

Sent when a call comment or call subject is updated in the Ringotel app.

Example:

{
"method": "UpdateActivity",
"api_token": "",
"params": {
"call_subject": "Audio Check",
"call_summary": "The caller is testing their audio and performing a sound check by counting and saying 'hello'.",
"call_transcription": "https://us1.ringotel.co/public/...DV1sR8.json",
"call_id": "1729693708182-2d1c3de3d3772cdc1f"
}
}

UpdateCallRecording

Sent after each call if voice recording is enabled in the Ringotel app.

Example:

{
"method": "UpdateCallRecording",
"api_token": "",
"params": {
"extension": "1001",
"called_number": "1001",
"caller_number": "353212028252",
"call_recording_url": "https://uk.ringotel.co/public/LL2uIbd5NcBZLHGa.wav",
"call_id": "1729693708182-2d1c3de3d3772cdc1f"
}
}

Parameters list

Parameter name

Type

Description

connection_name

string

Ringotel connection name.

connection_id

string

Ringotel connection ID.

extension

string

Ringotel Extension associated with a call.

user_id

string

Ringotel user ID associated with a call.

activity_type

inbound" | "outbound"

Activity type description, stores the direction of a call. It has two possible values "inbound" or "outbound".

domain

string

Ringotel organization domain.

call_start

number

Call start timestamp in EPOCH format (milliseconds from Jan 1, 1970).

call_end

number

Call end timestamp in EPOCH format (milliseconds from Jan 1, 1970).

calling_number

string

Calling party number.

called_number

string

Called party number.

call_duration

number

Call duration (in seconds).

call_id

string

Call ID.

call_cause

string

SIP hangup cause code.

call_url

string

Unencoded URL to access the call recording.

call_subject

string

Call activity subject.

call_summary

string

Call activity comment.

call_transcription

string

If AI Assistant is enabled, contains URL that points to a call transcription in the JSON format.

Returning custom data in Webhook responses

You can pass custom data in the “initCall” request and then receive this data in the subsequent notifications to your Webhook URL, provided in the Webhook integration settings.

Example "initCall" request

{

"method": "initCall",

"params":{

"from":"511",

"tonumber": "0851344344",

"toname": "Test",

"orgid": "17629027527954336546",

"custom_data": {

"param1": "testValue1",

"param2": "testValue2"

}

}

}

"StopCallActivity" notification to the Webhook

{

"method": "StopCallActivity",

"api_token": "",

"params": {

"call_end": 1762903208319,

"extension": "511",

"user_id": "17629028023247184684",

"activity_type": "outbound",

"call_cause": "0",

"call_start": 1762903182412,

"called_number": "0851344344",

"caller_number": "511",

"call_duration": 19,

"call_id": "1762903182412-ffe4731537a8a93de8"

},

"custom_data": {

"param1": "testValue1",

"param2": "testValue2"

}

}

"UpdateCallRecording" notification

{

"method": "UpdateCallRecording",

"api_token": "",

"params": {

"call_id": "1762903182412-ffe4731537a8a93de8"

},

"custom_data": {

"param1": "testValue1",

"param2": "testValue2"

}

}

Did this answer your question?