Pivot API#
About Pivot#
The Pivot Crossbar resource allows the client to query and inspect data related to the Pivot application (real-time call control).
Enabling in Crossbar#
The Pivot endpoint is not loaded on start in a default Kazoo installation.
- To enable at runtime:
sup crossbar_maintenance start_module cb_pivot
- To autostart on Crossbar boot:
- Navigate to
http://localhost:15984/_utils/document.html?system_config/crossbar
- Edit the
autoload_modules
list to include 'cb_pivot' - Click the green check box to the right of the input box
- Click 'Save Document' in top left of the screen
- Navigate to
Note
Adding cb_pivot
to the crossbar system_config
doc will not start the endpoint; only on restarting Crossbar will cb_pivot
be loaded. Use the sup
command above to start the endpoint at runtime.
Callflow Schema#
See the Pivot callflow schema for details.
Debugging pivot attempts#
You will need to edit the data
object in the pivot
callflow element to include a debug
flag:
{
"flow": {
"data": {
"method": "GET",
"req_format": "kazoo",
"voice_url": "http://your.pivot.server/path/to/callflow.php",
"debug": true
},
"module": "pivot",
"children": {
}
}
}
All calls to this callflow will now store debug logs to the account's current MODb database.
Fetch a List of Debug UUIDs#
GET /v2/accounts/{ACCOUNT_ID}/pivot/debug
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/pivot/debug
{
"auth_token": "{AUTH_TOKEN}",
"data": [
{
"call_id": "{UUID_1}",
"created": 63635231906,
"iteration": 1,
"node": "{PIVOT_SERVER}",
"status_code": "404",
"has_schema_errors": false,
"uri": "http://127.0.0.1/pivot/kazoo_4786.php?Language=en-us&Caller-ID-Number=user_suyt9r93ng&Caller-ID-Name=user_suyt9r93ng&Direction=inbound&Api-Version=2015-03-01&To-Realm={SIP_REALM}&To=4786&From-Realm={SIP_REALM}&From=user_suyt9r93ng&Account-ID={ACCOUNT_ID}&Call-ID={UUID_1}"
},
{
"call_id": "{UUID_2}",
"created": 63635230409,
"iteration": 1,
"node": "{PIVOT_SERVER}",
"has_schema_errors": true
}
],
"page_size": 3,
"request_id": "{REQUEST_ID}",
"revision": "{REVISION}",
"status": "success",
}
Fetch Debug Logs for a UUID#
GET /v2/accounts/{ACCOUNT_ID}/pivot/debug/{UUID}
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/pivot/debug/{UUID}
{
"auth_token": "{AUTH_TOKEN}"
,"data": [{"call_id": "829597750@10.26.0.158"
,"id": "b791e38c9641652a69e297dc9c3a8d66"
,"method": "get"
,"req_body": ""
,"req_headers": {}
,"uri": "http://{PIVOT_SERVER}/path/to/callflow.php?CallerNumber={CALLER_ID_NUMBER}&CallerName={CALLER_ID_NAME}&Direction=inbound&ApiVersion=2010-04-01&ToRealm={TO_SIP_REALM}&To={DIALED_NUMBER}&FromRealm={FROM_SIP_REALM}&From={SIP_FROM_USER}&AccountSid={ACCOUNT_ID}&CallSid=829597750%4010.26.0.158"
}
,{"call_id": "829597750@10.26.0.158"
,"id": "f071ae42d9bcebd158f263258e73b001"
,"resp_headers": {
"content-length": "303"
,"content-type": "text/html"
,"date": "fri, 30 may 2014 20:42:53 gmt"
,"server": "apache/2.4.7 (ubuntu)"
}
,"resp_status_code": "404"
}
,{"call_id": "829597750@10.26.0.158"
,"id": "79604993e4dbe962872a71fe6cbc9717"
,"resp_body": "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL /path/to/callflow.php was not found on this server.</p>\n<hr>\n<address>Apache/2.4.7 (Ubuntu) Server at {PIVOT_SERVER} Port 80</address>\n</body></html>\n"
}
]
,"request_id": "{REQUEST_ID}"
,"revision": "{REVISION}"
,"status": "success"
}
Note
You must URL-encode the call-id in the URL. Typically this would just mean converting @
to %40
, but you'll need to take care depending on how your call-ids are constructed.