Outgoing Hangup
Our TeleCMI platform will notify the following sample JSON live event to your web server POST method URL, when an outgoing call is got hangup.
Implementation
TeleCMI webhooks implementation in different languages.
- Python
- Node.js
- PHP
- Java
from flask import Flask,request
app = Flask(__name__)
# Receive webhooks from TeleCMI platform when call receive or make
@app.route("/webhook/cdr",methods=['POST'])
def hello():
# Received JSON CDR from TeleCMI Platform
cdr = request.get_json()
print(cdr)
return "got it"
if __name__ == "__main__":
app.run(debug=True, port=5000)
const express = require('express'),
bodyParser = require('body-parser'),
app = express();
// parse application/json
app.use(bodyParser.json());
app.post('/webhook/cdr',(req,res)=>{
//Received CDR JSON Object from TeleCMI platform
var cdr = req.body;
console.log(cdr);
res.send('got it');
})
app.listen(5000);
app.run(debug=True, port=5000)
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
$app = new \Slim\App;
$handler = function (Request $req, Response $res) {
$cdr = $req->getParsedBody();
error_log(print_r($cdr, true));
return $res->withStatus(204);
};
$app->post('/webhook/cdr', $handler);
$app->run();
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package telecmi_example_java;
import static spark.Spark.*;
import com.cedarsoftware.util.io.JsonWriter;
public class App {
public static void main(String[] args) {
port(5000);
post("/webhook/cdr", (req, res) -> {
System.out.println("You got CDR from TeleCMI Platform");
String cmiJSON = JsonWriter.formatJson(req.body());
System.out.println(cmiJSON);
res.status(204);
return "";
});
}
}
Sample event response
This is the sample JSON live event, where the TeleCMI platform will notify your web server POST method URL.
The Leg A represents the outgoing call of the caller(the person who made a call).
The Leg B represents the outgoing call of the callee(the person who is called by the caller).
- Leg A
- Leg B
{
"leg": "a",
"type": "event",
"click_to_call": "true",
"user": "109_1111113",
"cmiuuid": "d965c6e0-5493-44f8-8d7d-b9a8077013a4",
"direction": "outbound",
"callerid": 04471000000,
"app_id": 1111113,
"time": 1571122196059,
"request_id": "s96C6XK1BUHX0oVZfOo5NhoJfZZJd0y1nmrNN6dhdkW"
"status": "hangup",
"to": 9100000000,
"conversation_uuid": "d965c6e0-5493-44f8-8d7d-b9a8077013a4"
}
{
"leg": "b",
"type": "event",
"click_to_call": "true",
"user": "109_1111113",
"cmiuuid": "1e12c087-e5bb-4e77-8e42-1249fa40a99b",
"direction": "outbound",
"callerid": 04471000000,
"app_id": 1111113,
"time": 1571122196059,
"status": "hangup",
"from": 9100000000,
"conversation_uuid": "d965c6e0-5493-44f8-8d7d-b9a8077013a4"
}
To know more about testing webhooks for local development purposes, go to examples.
The above sample JSON live event consists of several properties. Each property has a description and take a look at it.
Properties
These are the list of properties and its description
Property | Type | Description |
---|---|---|
leg | string | Define the leg of the call either a or b |
type | string | Type of notification from TeleCMI platform it may be cdr or event |
click_to_call | string | This call is made through click to call api |
user | string | A unique Id of the user(agent) |
cmiuuid | string | A unique identifier of this call |
direction | string | The direction of this call it may be inbound or outbound |
callerid | number | Caller ID of this call |
app_id | number | Your app id |
time | number | Timestamp of this call |
status | string | Status of this call |
to | number | The number the call was made to |
from | number | The number the call came from |
conversation_uuid | string | A unique identifier of this overall conversation |