Перейти к основному контенту

Evolvex API

Введение

Программный интерфейс разработанный компанией Evolvex. Позволяет взаимодействовать с телефонной станцией через HTTP запросы. Позволяет расширить функциональность стандартного Manager API.

Проверка доступа

Проверка доступа

GET /api/index/check

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
contextStringНетМаршрутизация
uniqueidStringНетУникальный идентификатор звонка

Ответ в Json:

{
  "data": {
    "api_user": {
      "uuid": "5485137a-3c6d-454e-9801-d3b875f7a5e0",
      "name": "API",
      "description": "",
      "enable": "yes",
      "api_key": "84f8fc34-82ad-46b0-b5f3-3cfd0462beeb",
      "group_uuid": "4c343af6-4a91-469a-a717-f682e52c830f"
    },
    "access": {
      "uuid": "0eb1bc58-b259-4c88-be02-a059d50cecc3",
      "name": "incoming",
      "description": "Входящая маршрутизация",
      "group_uuid": "4c343af6-4a91-469a-a717-f682e52c830f"
    },
    "file": true
  }

Получение файла mp3

GET /api/index/get_file_mp3

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
uniqueidStringНетУникальный идентификатор звонка

Ответ:

Потоковое аудио

Получение файла wav

GET /api/index/get_file_wav

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
uniqueidStringНетУникальный идентификатор звонка

Ответ:

Потоковое аудио

Получение статуса звонка

GET /api/index/status

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
calleridnumStringНетАОН
connectedlinenumStringНетСоединенная линия
contextStringНетМаршрутизация
extenStringНетРасширение

Ответ в Json:

{
  "data": [
    {
      "Event": "Status",
      "Privilege": "Call",
      "Channel": "PJSIP/user-00000011",
      "ChannelState": "5",
      "ChannelStateDesc": "Ringing",
      "CallerIDNum": "109",
      "CallerIDName": "",
      "ConnectedLineNum": "110",
      "ConnectedLineName": "",
      "Language": "ru",
      "AccountCode": "",
      "Context": "outgoing",
      "Exten": "109",
      "Priority": "1",
      "Uniqueid": "1711279935.61",
      "Linkedid": "1711279935.60",
      "Type": "PJSIP",
      "DNID": "",
      "EffectiveConnectedLineNum": "110",
      "EffectiveConnectedLineName": "",
      "TimeToHangup": "0",
      "BridgeID": "",
      "Application": "AppDial",
      "Data": "(Outgoing Line)",
      "Nativeformats": "(alaw|ulaw)",
      "Readformat": "alaw",
      "Readtrans": "",
      "Writeformat": "alaw",
      "Writetrans": "",
      "Callgroup": "0",
      "Pickupgroup": "0",
      "Seconds": "5",
      "Variable": "DIALEDPEERNUMBER=user/sip:user@1.1.1.1:5937",
      "DIALEDPEERNUMBER": "user/sip:company@1.1.1.1:5937",
      "ActionID": "66000f44594c1"
    },
    {
      "Event": "Status",
      "Privilege": "Call",
      "Channel": "PJSIP/user",
      "ChannelState": "4",
      "ChannelStateDesc": "Ring",
      "CallerIDNum": "110",
      "CallerIDName": "",
      "ConnectedLineNum": "109",
      "ConnectedLineName": "",
      "Language": "ru",
      "AccountCode": "",
      "Context": "outgoing",
      "Exten": "109",
      "Priority": "7",
      "Uniqueid": "1711279935.60",
      "Linkedid": "1711279935.60",
      "Type": "PJSIP",
      "DNID": "109",
      "EffectiveConnectedLineNum": "109",
      "EffectiveConnectedLineName": "",
      "TimeToHangup": "0",
      "BridgeID": "",
      "Application": "Dial",
      "Data": "PJSIP/user/sip:user@1.1.1.1:5937,60,tT",
      "Nativeformats": "(alaw|ulaw)",
      "Readformat": "alaw",
      "Readtrans": "",
      "Writeformat": "alaw",
      "Writetrans": "",
      "Callgroup": "0",
      "Pickupgroup": "0",
      "Seconds": "5",
      "Variable": "SIPDOMAIN=pbx1.ru",
      "RINGTIME_MS": "298",
      "RINGTIME": "0",
      "PROGRESSTIME_MS": "",
      "PROGRESSTIME": "",
      "DIALEDTIME_MS": "",
      "DIALEDTIME": "",
      "ANSWEREDTIME_MS": "",
      "ANSWEREDTIME": "",
      "DIALEDPEERNAME": "",
      "DIALEDPEERNUMBER": "",
      "DIALSTATUS": "",
      "MIXMONITOR_FILENAME": "/var/spool/asterisk/monitor/1711279935.60.wav",
      "SIPDOMAIN": "pbx1.ru",
      "ActionID": "66000f44594c1"
    }
  ]
}

Создание звонка

GET /api/index/originate

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
channelStringДаКанал
extenStringДаРасширение
contextStringДаМаршрутизация
priorityIntegerДаПриоритет
calleridStringНетАОН
variableStringНетПеременные
asyncBooleanНетАсинхронный ввод

variable - позволяет передать несколько переменных через запятую. Например variable=file=123,idcall=456

Загрузка файла

POST /api/index/uploads

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
fileFileДаФайл

Пример загрузки файла:

$cFile = curl_file_create("/home/user/1.wav");

$post = array('file'=> $cFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http:/192.168.0.2/pbx/api/index/uploads?api_key=11111111-2222-3333-4444-555555555555");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);

Получение статистики звонков

POST /api/index/get_log_cdr

ПараметрТипОбязательныйОписание
api_keyStringДаAPI Ключ
startDatetimeНетНачало записей логов, если не указано берется начало дня.
endDatetimeНетКонец записей логов, если не указано берется конец дня.

Ответ в Json:

{
  "data": [
    {
      "accountcode": null,
      "src": "79123456789",
      "dst": "110",
      "dcontext": "local-evolvex",
      "clid": "\"Сергей\" <79123456789>",
      "channel": "Local/110@local-evolvex-00000167;2",
      "dstchannel": "PJSIP/user-110-evolvex-000002a0",
      "lastapp": "Dial",
      "lastdata": "PJSIP/user-110-evolvex/sip:user-110-evolvex@1.1.1.1:10110,60,t",
      "start": "2024-10-30 09:59:15",
      "answer": null,
      "end": "2024-10-30 09:59:22",
      "duration": "7",
      "billsec": "0",
      "disposition": "NO ANSWER",
      "amaflags": "DOCUMENTATION",
      "userfield": null,
      "uniqueid": "1730267955.2409",
      "linkedid": "1730267935.2405",
      "peeraccount": null,
      "sequence": "1923",
      "source": null,
      "destination": null,
      "direction": null,
      "group_uuid": null
    }
  ]
}