Добавление новых звонков в журнал можно выполнять через HTTP api биллинга, общая документация к этому API находится здесь: API REST v2.0
Пример bash скрипта
В примере в переменной HTTP_SERVER_IP указан адрес dummy интерфейса на котором висит nginx, для работы извне chroot биллинга необходимо указать правильный внешний ip адрес сервера.
#!/bin/bash set -eu #curl -XPOST -d 'method1=new&arg1={"src_orig":"7777778", "dst_orig" : "8888888", "e_time" : "2016-03-09 10:00:30", "s_time" : "2016-03-01 10:30:30", "bill_sec" : 4}&method2=is_already_exists' http://169.254.80.82:8082/rest_api/v2/VoipLog/ -D - && echo HTTP_SERVER_IP="http://169.254.80.82:8082" API_URL="rest_api/v2/" MODEL="VoipLog" send_api_request(){ set -x curl -XPOST -d "$1" $HTTP_SERVER_IP/$API_URL/$MODEL/ -D - && echo set +x } build_params(){ echo '{"src_orig":"'$1'", "dst_orig" : "'$2'", "e_time" : "'$4'", "s_time" : "'$3'", "bill_sec" : "'$5'" , "duration" : '$6', "nas_ip": "'$7'"}' } check_is_exists(){ params=$(build_params "$@") send_api_request "method1=new&arg1=$params&method2=is_already_exists" | grep -q '"result": true' } create_new(){ params=$(build_params "$@") send_api_request "method1=new&arg1=$params&method2=save" } main() { if check_is_exists "$@"; then echo already exists; else echo not exists, create it; create_new "$@" fi } main "$@"
Пример использования скрипта, приведенного выше.
Создадим звонок с такими характеристиками:
номер инициатора: 749577678
набранный номер: 1011
время начала звонка: 2016-03-01 10:32:30
время завершения звонка: 2016-03-01 10:33:3
длительность разговора: 5 секунд
длительность сеанса связи: 3333 секунды
IP адрес NAS: 10.90.235.3
[root@integra_cb5_oneek (asr_billing) ~]# ./add_voip_log.sh 749577678 1011 '2016-03-01 10:32:30' '2016-03-01 10:33:36' 5 3333 10.90.235.3 + curl -XPOST -d 'method1=new&arg1={"src_orig":"749577678", "dst_orig" : "1011", "e_time" : "2016-03-01 10:33:36", "s_time" : "2016-03-01 10:32:30", "bill_sec" : "5" , "duration" : 3333, "nas_ip": "10.90.235.3"}&method2=is_already_exists' http://169.254.80.82:8082/rest_api/v2//VoipLog/ -D - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 270 0 50 100 220 2676 11775 --:--:-- --:--:-- --:--:-- 12222 + echo + set +x not exists, create it + curl -XPOST -d 'method1=new&arg1={"src_orig":"749577678", "dst_orig" : "1011", "e_time" : "2016-03-01 10:33:36", "s_time" : "2016-03-01 10:32:30", "bill_sec" : "5" , "duration" : 3333, "nas_ip": "10.90.235.3"}&method2=save' http://169.254.80.82:8082/rest_api/v2//VoipLog/ -D - HTTP/1.1 200 OK Server: nginx/1.0.15 Date: Mon, 21 Mar 2016 12:47:07 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Vary: Cookie {"call": "/rest_api/v2/VoipLog/", "result": {"pk": 10013, "model": "VoipLog", "fields": {"abonent_id": null, "src_orig": "749577678", "chan": "", "ama_flags": "", "direction_id": null, "bill_sec": "5", "s_time": "2016-03-01 10:32:30", "duration": 3333, "bill_sec_round": "None", "nas_ip": "10.90.235.3", "user_id": null, "suid": "", "dst": "", "dst_chan": "", "error_code_id": null, "dst_ctx": "", "src_operator_id": null, "usluga_id": null, "resolved": "0", "operator_id": "None", "e_time": "2016-03-01 10:33:36", "bill_sum": "0", "operator_usluga_id": "None", "step": "None", "disposition": "", "billed": "0", "src": "", "operator_step_price": "0", "recalc": "0", "v_type_id": null, "dst_orig": "1011", "step_price": "0", "operator_v": "None", "src_chan": ""}}}+ echo + set +x
В json ответе сервера содержится информация о созданном звонке в журнале, видно что создался звонок с id=10013, его характеристики:
номер инициатора: 749577678
набранный номер: 1011
время начала звонка: 2016-03-01 10:32:30
время завершения звонка: 2016-03-01 10:33:3
длительность разговора: 5 секунд
длительность сеанса связи: 3333 секунды
Также видим, что для добавления нового звонка в журнал, выполнился вызов curl:
curl -XPOST -d 'method1=new&arg1={"src_orig":"749577678", "dst_orig" : "1011", "e_time" : "2016-03-01 10:33:36", "s_time" : "2016-03-01 10:32:30", "bill_sec" : "5" , "duration" : 3333, "nas_ip": "10.90.235.3"}&method2=save' http://169.254.80.82:8082/rest_api/v2//VoipLog/ -D -