Proxyapi
Proxyapi is the way to manage your PBX from external softwares. It allows easy access to calls, phone status and more. It allows also to create, delete and edit records, even if in a limited way.
Proxyapi can be used by each tenant using an API key generated in the Configuration/Settings page. Two kinds of keys can be generated, one allowing Read/Write access and one allowing only read-only operations.
The latest syntax for the operations can be retrieved by proxyapi itself, like for example: https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=HELP
Some usage example examples (please note the URL on the demo server is slightly different than on production servers - mirtapbx/pbx):
DIAL / Call an extension and then dial a number
This command returns a call id like:
Success|Originate successfully queued|15a4cfe6429054|
The call id can be used to retrieve the recording with
AGENT / Pause agent from queue
MEDIAFILE / Retrieve a media file by its ID
VOICEMAIL
Get all voicemails for a tenant
Get info about voicemails in a mailbox
Get the binary audio for a message
COUNTCALLS / Count the calls on a system
https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=COUNTCALLS
INFO
Get the cdr for a tenant in CSV format
Get the cdr for all tenants in CSV format
Please note, when getting the CSV for a single tenant, the CSV format used is the tenant one, when getting the CSV for multiple tenants, the Admin format is used
Get the queue log for a tenant in CSV format
ManageDB / Custom Destination Types
Getting the custom destination type list
ManageDB / Custom Destinations
Getting the custom destination list
Getting info for a custom destination
Creating a custom destination
$config['cu_name']="Boss phone"; $config['cu_ct_id']=1; $config['cu_param1']="3564732920"; $config['cu_param2']="INCOMINGDID"; $config['cu_param3']="30"; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=add&object=custom&tenant=DEVEL"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
Updating a custom destination
$config['cu_name']="Boss private phone"; $config['cu_id']=286; $config['cu_param1']="0636287454"; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=update&object=custom&tenant=DEVEL&objectid=286"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
ManageDB / Tenants
Getting the tenant list
Getting info for a tenant
Creating a tenant
$config['te_code']="RELAX"; $config['te_name']="Relax & entertainment"; $config['pk_start']=800; $config['pk_end']=810; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=add&object=tenant"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
Updating a tenant
$config['te_id']="460"; $config['te_name']="Relax and entertainment"; $config['pk_end']=820; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=update&object=tenant&objectid=460"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
ManageDB / Phones
Getting the phones list
Getting info for a phone
Creating a phone
$config['ph_name']="George Basement"; $config['ph_mac']='AA:BB:CC:DD:EE:FF:00:11'; $config['ph_pm_id']=5; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=add&object=phones&tenant=DEVEL"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
Updating a phone
$config['ph_name']="George Lower Basement"; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=update&object=phone&objectid=207&tenant=DEVEL"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
Getting response paths results
Getting the latest one for a given Response Path
It returns something like:
UniqueID|Type|Type ID|Value|Type Name|Value Name srv02-1509806457.625|START|0|2017-11-04 15:41:01|| srv02-1509806457.625|CALLERID|0|Susan <1132555678>|| srv02-1509806457.625|VARIABLE|85|36985|| srv02-1509806457.625|VARIABLE|144|56896|| srv02-1509806457.625|QUEUE|281||| srv02-1509806457.625|ANSWER|0|105-DEVEL|| srv02-1509806457.625|HANGUP|0|||
Getting the latest one for a given Response Path for agent 104-DEVEL
Getting the latest one for a given Response Path for agent 104-DEVEL in xml format
Based on the xml format shown in the manual, it returns something like:
<?xml version="1.0"> <Result> <Agent>105-DEVEL</Agent> <Status>NOT ACTIVE</Status> <Queue>supportQ</Queue> <ClientID>1234</MemberNumber> <OrderNumber>11223344</MemberNumber> <Caller>Manuel <7171345678></Caller> <VoiceFile>3619</VoiceFile> </Result>
Manage media files
Getting the media file list
Getting info for a media file
Getting the binary part of a media file
Updating a media file
$config['me_name']="Beep"; $url = "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&action=update&object=mediafile&objectid=10&tenant=DEVEL"; $resource = curl_init(); curl_setopt($resource, CURLOPT_URL, $url); curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); curl_setopt($resource, CURLOPT_VERBOSE, true); curl_setopt($resource, CURLOPT_POSTFIELDS, "jsondata=".urlencode(json_encode($config))); $data = curl_exec($resource); curl_close($resource); print_r($data);
Updating the binary part of a media file
<?php $postfields = array( 'filename' => '@audio.wav' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://demo.mirtapbx.com/mirtapbx/proxyapi.php?key=NLbP7GFNVRqu9SDm&reqtype=MANAGEDB&object=MEDIAFILE&action=updatebinary&objectid=247&tenant=DEVEL"); curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $postResult = curl_exec($ch); if (curl_errno($ch)) { print curl_error($ch); } curl_close($ch);