Создание CDR через HTTP API

Skip to end of metadata
Go to start of metadata

Добавление новых звонков в журнал можно выполнять через HTTP api биллинга, общая документация к этому API находится здесь: API REST v2.0

Пример bash скрипта

В примере в переменной HTTP_SERVER_IP указан адрес dummy интерфейса на котором висит nginx, для работы извне chroot биллинга необходимо указать правильный внешний ip адрес сервера.

add_voip_log.sh
#!/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 -

Метки

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.