# Evolvex API #### Введение Программный интерфейс разработанный компанией Evolvex. Позволяет взаимодействовать с телефонной станцией через HTTP запросы. Позволяет расширить функциональность стандартного Manager API. #### Проверка доступа Проверка доступа GET /api/index/check
ПараметрТипОбязательныйОписание
api\_keyStringДаAPI Ключ
contextStringНетМаршрутизация
uniqueidStringНетУникальный идентификатор звонка
Ответ в Json: ```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: ```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ДаФайл
Пример загрузки файла: ```php $curl_file = curl_file_create("/home/user/test.wav"); $post = array("file"=> $curl_file); $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, true); 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 } ] } ```