Receiving Webhooks
When you send a Call Control command and receive a successful response (i.e. 200 OK), you can expect to receive a webhook. The webhook will be delivered to the primary URL specified on the Call Control Connection associated with the call. If that URL does not resolve, or your application returns a non 200 OK response, the webhook will be delivered to the failover URL, if one has been specified.
In order to minimize webhook delivery time, Telnyx:
- does not enforce the order in which webhooks are delivered
- retries webhook delivery if your application does not respond within a certain time threshold.
As a result, you may encounter:
- out-of-order webhooks
- simultaneous (or near simultaneous) webhooks
- duplicate webhooks
Duplicate webhooks may cause your application to issue duplicate commands. You can instruct Telnyx to ignore duplicate commands by sending a command_id
parameter as part of your commands. Commands with duplicate command_id
s within 60 seconds will be ignored.
Example: Receiving a webhook
When you place an incoming call to a number associated with your Call Control Connection, you will receive a callback for the incoming call. It should look something like the JSON below:
{
"record_type": "event",
"id": "0ccc7b54-4df3-4bca-a65a-3da1ecc777f0",
"event_type": "call_initiated",
"created_at": "2018-02-02T22:25:27.521992Z",
"payload": {
"to": "+12025550131",
"start_time": "2018-02-02T22:25:27.521992Z",
"from": "+1-202-555-0133",
"call_control_id": "AgDIxmoRX6QMuaIj_uXRXnPAXP0QlNfXczRrZvZakpWxBlpw48KyZQ==",
"connection_id": "7267xxxxxxxxxxxxxx",
"call_leg_id": "428c31b6-7af4-4bcb-b7f5-5013ef9657c1",
"call_session_id": "428c31b6-abf3-3bc1-b7f4-5013ef9657c1",
"client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",
"direction": "incoming",
"state": "parked"
}
Note: After pasting the above content, Kindly check and remove any new line added
Field | Value |
record_type | Description of the record. |
id | unique id for the webhook |
event_type | The type of event detected by the Telnyx system |
created_at | ISO-8601 datetime of when event was created |
to | Destination number or SIP URI of the call |
start_time | ISO-8601 datetime of when call was received | from | Number or SIP URI placing the call |
call_control_id | call id used to issue commands via call control API |
connection_id | Telnyx connection id used in the call |
call_leg_id | ID that is unique to the call and can be used to correlate webhook events |
call_session_id | ID that is unique to the call session and can be used to correlate webhook events |
client_state | State received from a command |
direction | Whether the call is 'incoming' or 'outgoing' |
state | Whether the call is in 'bridging' or 'parked' state |