Ringostat API: описание, настройка и интеграция

Описание Ringostat API и общая информация

Ringostat API (Application Programming Interface) — это набор готовых средств (классов, процедур, функций) доступа, взаимодействия и управления, предоставляемых Ringostat для использования во внешних программных продуктах (CRM-системы, системы статистики и аналитики и т.п.).
Используя интеграцию с Ringostat по API у вас появляются возможности самостоятельно отправлять нужные запросы нам на сервер или вызывать определенные события.

  • в любой удобный момент получить свыше 30 параметров по звонкам
  • обращаться для проверки номера звонящего
    при реализации собственной логики переадресации звонков;
  • инициациировать звонок между 2мя направлениями(простой метод)
    используется для инициирования звонков из CRM-системы(если она позволяет и 1но из направлений это SIP-аккаунт или номер в проекте)
  • инициациировать звонок между 2мя направлениями(расширенный метод)
    используется при реализации собственного виджета обратного звонка
  • проверить доступность SIP-аккаунта(созданного в рамках проекта)
    в ответ на запрос будет отправлен массив логинов SIP-аккаунтов, которые в сети(online)
  • проверить активность SIP-аккаунта(созданного в рамках проекта)
    в ответ на запрос будет отправлен массив логинов SIP-аккаунтов, которые сейчас разговаривают(входящий или исходящий звонок)

Доступ к API-методам Ringostat возможен только при наличии уникального ключа авторизации Auth-key
Ключ авторизации должен быть передан как дополнительный заголовок (header) HTTP-Запроса.

Ключ авторизации доступен в личном кабинете Ringostat, на странице Интеграции -> Ringostat API:

ringostat api Auth-key page

Если заголовок Auth-key будет проигнорирован или передан с ошибкой, запрос вернёт неуспешный статус код 401 Unauthorized и ошибку Cross-Origin Resource Sharing (CORS)

Экспорт журнала звонков

API-запрос экспорта журнала звонков, позволяет получить свыше 30 параметров в удобном для вас формате.
Используя всего 1м запросом можно получить всю необходимую историю взаимодействия пользователя с сайтом и звонками.

В сочетании с функционалом переадресации с помощью Webhook перед звонком клиента, вы можете проверить его номер на предмет повторности его звонка и/или наличие исходящего звонка для переадресации на менеджера, с которым ранее общался звонящий.

Основные параметры запроса:

GEThttps://api.ringostat.net/calls/list

Имя параметра Описание Значение по умолчанию
export_type Формат выгрузки данных: json или csv json
from Начальные дата и время экспорта в формате YYYY-MM-DD HH:MM:SS значение to минус 24 часа
to Конечные дата и время экспорта в формате YYYY-MM-DD HH:MM:SS текущие дата и время
fields Список полей для выборки из журнала звонков, разделённых запятой; calldate, caller, dst
filters Фильтры, для выборки данных подпадающих под условие по значениям полей нет
merge Объединение выборки по номеру звонящего:
0 – не объединять;
1 – объединять за каждые 24 часа;
2 – объединять за всё время;
0 – не объединять;
order Сортировка выборки текущие дата и время
Пример ответа в формате JSON
																	
																		{
																			"calldate": "2019-06-18T14:50:01+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "ANSWERED",
																			"billsec": 17,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-111111111.22222222.ogg?token=savhabfabansbjsnvj"
																		},
																		{
																			"calldate": "2019-06-18T15:14:14+0300",
																			"caller": "380441112233",
																			"dst": "380442223344",
																			"disposition": "PROPER",
																			"billsec": 47,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-22222222.111111111.ogg?token=e17savhabfabansbjsnvjeaefd5584eed2375f"
																		}
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');
																	const config = {
																		host: 'api.ringostat.net',
																		path: '/calls/list?export_type=json&from=2019-06-01%2000:00:00&to=2019-06-18%2023:59:59­&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording',
																		method: 'GET',
																		headers: {
																			'Content-Type': 'application/json',
																			'Auth-key': 'unique_auth_key_value'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);
																	
																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																	
																		response.on('end', () => {
																			//handle response
																		})
																	};
																	
																	const request = https.request(config, callback);
																	request.end();		
																
															
Axios.js | GitHub
																
																	const axios = require('axios');
																	axios({
																		url: 'https://api.ringostat.net/calls/list',
																		method: 'GET',
																		headers: {
																			'Content-Type': 'application/json; charset=utf-8',
																			'Auth-key': 'unique_auth_key_value'
																		},
																		params: JSON.stringify({
																			'export_type': 'json',
																			'from': '2019-06-01 00:00:00',
																			'to': '2019-06-18 23:59:59',
																			'fields': 'calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording'
																		})
																	}).then(response => {
																		//handle response
																	}).catch(error => {
																		//handle error
																	})
																
															
cURL
																
																	curl "https://api.ringostat.net/calls/list?export_type=json&from=2019-06-01 00:00:00&to=2019-06-18 23:59:59&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording" \
																	-H "Content-Type: application/json" \
																	-H "Auth-key: unique_auth_key_value" 
																
															

Поля для выборки

За основными параметрами следуют поля для выборки. Для добавления полей используется ключ fields. Он позволяет добавить одно или несколько значений разделённые запятыми.

Параметр Описание
caller Номер звонящего
dst Куда звонили
pool_name Имя пула, в котором расположен номер
disposition Статус звонка
calldate Дата и время звонка
category_mark Ценность звонка
duration Длительность звонка(ожидание + разговор)
call_type Тип звонка( входящий / исходящий / callback)
waittime Время ожидания ответа на звонок
billsec Длительность разговора
connected_with С кем соединен
call_counter Какой по счету звонок
proper_flag Статус звонка: Целевой
repeated_flag Статус звонка: Повторный
utm_source Источник перехода
utm_medium Канал перехода
utm_campaign Кампания объявления
utm_content Содержание объявления
utm_term Ключевое слово объявления
uniqueid id звонка в системе Ringostat
category_number Категория звонка
employee_number Код сотрудника
employee_mark Оценка сотруднику за звонок
client_id UUID посетителя
remote_ip IP посетителя
refferrer URL адрес страницы, с которой посетитель перешёл на сайт
landing Страница входа посетителя
recording Ссылка на аудиозапись
call_card Ссылка на карточку звонка для номера, с или на который звонили
additional_number Добавочный номер, введенный при звонке на Голосовое меню IVR
has_recording Значение 1 или 0, в зависимости от того, был ли записан разговор при звонке
scheme_name Название схемы переадресации, на которую был направлен звонок
duration_ms Длительность разговора в миллисекундах (duration*1000)
Пример ответа в формате JSON
																	
																		{
																			"calldate": "2019-06-18T14:50:01+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"pool_name": "Callback",
																			"disposition": "ANSWERED",
																			"category_mark": 0,
																			"duration": 35,
																			"call_type": "in",
																			"waittime": "18",
																			"billsec": 17,
																			"connected_with": "380673334455",
																			"call_counter": 3,
																			"proper_flag": 0,
																			"repeated_flag": 0,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"utm_campaign": "(direct)",
																			"utm_content": "(not set)",
																			"utm_term": "(none)",
																			"uniqueid": "ua1_-1111111111.22222222",
																			"category_number": -1,
																			"employee_number": -1,
																			"employee_mark": 0,
																			"client_id": "1111111111.2222222233333",
																			"remote_ip": "10.10.10.10",
																			"refferrer": "https://google.com/",
																			"landing": "onemilliondollarswebsite.com/",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb",
																			"call_card": "https://app.ringostat.com/project/callcards/card/ua1_-1111111111.22222222/?project_id=11111",
																			"additional_number": "",
																			"has_recording": "1",
																			"scheme_name": "test",
																			"duration_ms": "35000"
																		}
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');
																	const config = {
																		host: 'api.ringostat.net',
																		path: '/calls/list?export_type=json&from=2019-06-01%2000:00:00&to=2019-06-18%2023:59:59&fields=calldate,caller,dst,pool_name,disposition,category_mark,duration,call_type,waittime,billsec,­connected_with,call_counter,proper_flag,repeated_flag,utm_source,utm_medium,utm_campaign,utm_content,utm_term,uniqueid,­category_number,employee_number,employee_mark,client_id,remote_ip,refferrer,landing,recording,call_card,additional_number,has_recording,scheme_name,duration_ms',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_value'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);

																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																		  
																		response.on('end', () => {
																			//handle response
																		});
																	};
																		
																	const request = https.request(config, callback);
																	request.end();
																
															
Axios.js | GitHub
																
																	axios({
																		url: 'https://api.ringostat.net/calls/list',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		},
																		params: {
																			export_type: 'json',
																			from: '2019-06-01 00:00:00',
																			to: '2019-06-18 23:59:59',
																			fields: 'calldate,caller,dst,pool_name,disposition,category_mark,duration,call_type,waittime,billsec,connected_with,call_counter,proper_flag,repeated_flag,utm_source,utm_medium,utm_campaign,utm_content,utm_term,uniqueid,category_number,employee_number,employee_mark,client_id,remote_ip,refferrer,landing,recording,call_card,additional_number,has_recording,scheme_name,duration_ms'
																		}
																	}).then(response => {
																		//handle response
																	}).catch(error => {
																		//handle error
																	});
																
															
cURL
																
																	curl "https://api.ringostat.net/calls/list?&export_type=json&from=2019-06-01 00:00:00&to=2019-06-18 23:59:59&fields=calldate,caller,dst,pool_name,disposition,category_mark,duration,call_type,waittime,billsec,connected_with,call_counter,proper_flag,repeated_flag,utm_source,utm_medium,utm_campaign,utm_content,utm_term,uniqueid,category_number,employee_number,employee_mark,client_id,remote_ip,refferrer,landing,recording,call_card,additional_number,has_recording,scheme_name,duration_ms" \
																	-H "Content-Type: application/json" \
																	-H "Auth-key: unique_auth_key_value"
																
															

Фильтры выборки

Фильтры необходимы для выборки звонков по заданным параметрам.
Фильтр состоит из имени поля, символа сравнения и значением в соответствующей последовательности.
Для добавления фильтра используется ключ filters, который позволяет добавлять один или несколько фильтров разделённых запятыми.

Фильтр Описание фильтра
> больше
< меньше
>= больше, либо равно
<= меньше, либо равно
= равно
<> не равно
~ регулярное выражение
Литерал должен быть закодирован в base64
Пример ответа в формате JSON
																	
																		{
																			"calldate": "2019-06-18T14:50:01+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "ANSWERED",
																			"billsec": 17,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb"
																		},
																		{
																			"calldate": "2019-06-18T15:14:14+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "PROPER",
																			"billsec": 47,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb"
																		}
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');

																	let encodeCallStatus = Buffer.from('answered|proper|repeated').toString('base64');
																	const config = {
																		host: 'api.ringostat.net',
																		path: `/calls/list?export_type=json&from=2019-06-01%2000:00:00&to=2019-06-18%2023:59:59&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording&filters=disposition~${encodeCallStatus}`,
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);

																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																		  
																		response.on('end', () => {
																			//handle response
																		});
																	};
																		
																	const request = https.request(config, callback);
																	request.end();
																
															
Axios.js | GitHub
																
																	let encodeCallStatus = Buffer.from('answered|proper|repeated').toString('base64');
																	axios({
																		url: 'https://api.ringostat.net/calls/list',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		},
																		params: JSON.stringify({
																			'export_type': 'json',
																			'from': '2019-06-01 00:00:00',
																			'to': '2019-06-18 23:59:59',
																			'fields': 'calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording',
																			'filters': `disposition~${encodeCallStatus}`
																		})
																	}).then(response => {
																		//handle response
																	}).catch(error => {
																		//handle error
																	})
																
															
cURL
																
																	curl "https://api.ringostat.net/calls/list?export_type=json&from=2019-06-01 00:00:00&to=2019-06-18 23:59:59&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording&filters=disposition~YW5zd2VyZWR8cHJvcGVyfHJlcGVhdGVk" \
																	-H "Content-Type: application/json" \
																	-H "Auth-key: unique_auth_key_string"
																
															

Объединение и сортировка

Объединение звонков по номеру звонящего используется для группировки данных по звонкам и облегчения визуального восприятия выгруженных данных.
Для объединения звонков используется ключ merge и по умолчанию равен 0

Сортировка, это один из инструментов группировки выгруженных данных.
Для сортировки данных используется ключ order и по умолчанию равен calldate%20asc

Имя параметра значение параметра
merge
0 – объединять за каждые сутки;
1 – объединять за каждые сутки;
2 – объединять за каждые сутки;
order
asc – по возрастанию;
desc – по убиванию;
Пример ответа в формате JSON
																	
																		{
																			"calldate": "2019-06-18T14:50:01+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "ANSWERED",
																			"billsec": 17,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb"
																			},
																		{
																			"calldate": "2019-06-18T15:14:14+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "PROPER",
																			"billsec": 47,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb"
																		},
																		{
																			"calldate": "2019-06-18T15:14:42+0300",
																			"caller": "380671112233",
																			"dst": "380672223344",
																			"disposition": "PROPER",
																			"billsec": 58,
																			"utm_source": "(direct)",
																			"utm_medium": "(none)",
																			"recording": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.ogg?token=a7784183668598a77841a77841836c444d31bb"
																		}
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');
																	const config = {
																		host: 'api.ringostat.net',
																		path: '/calls/list?export_type=json&from=2019-06-01%2000:00:00&to=2019-06-18%2023:59:59&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording&filters=disposition~YW5zd2VyZWR8cHJvcGVyfHJlcGVhdGVk&merge=1&order=calldate%20asc',
																		method: 'GET',
																		headers: {
																			'Content-Type': 'application/json',
																			'Auth-key': 'unique_auth_key_string'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);

																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																		  
																		response.on('end', () => {
																			//handler response
																		});
																	};
																		
																	const request = https.request(config, callback);
																	request.end();
																
															
Axios.js | GitHub
																
																	axios({
																		url: 'https://api.ringostat.net/calls/list',
																		method: 'GET',
																		headers: {
																			'Content-Type': 'application/json; charset=utf-8',
																			'Auth-key': 'unique_auth_key_string'
																		},
																		params: JSON.stringify({
																			'export_type': 'json',
																			'from': '2019-06-01 00:00:00',
																			'to': '2019-06-18 23:59:59',
																			'fields': 'calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording',
																			'merge': 1,
																			'order': 'calldate asc'
																		})
																	}).then(response => {
																		//handle response
																	}).catch(error => {
																		//handle error
																	})
																
															
cURL
																
																	curl "https://api.ringostat.net/calls/list?export_type=json&from=2019-06-01 00:00:00&to=2019-06-18 23:59:59&fields=calldate,caller,dst,disposition,billsec,utm_source,utm_medium,recording&merge=1&order=calldate asc" \
																	-H "Content-Type: application/json" \
																	-H "Auth-key: unique_auth_key_string"
																
															

API-запрос соединения 2х номеров(простой метод Callback)

Для оперативности обработки заявок от клиентов, вы можете настроить автоматический перезвон клиенту, который отправляет заполненную форму регистрации или заказа на вашем сайте.
Аналогично можно инициировать звонок из карточки клиента в вашей CRM.

Значением параметра extension может быть только номер телефона или SIP-аккаунт из проекта
(номер должен быть подключен в проект как "входящий", в разделе "Подключение номеров")

Описание параметров запроса

POST https://api.ringostat.net/callback/outward_call

Имя параметра Описание
extension Номер телефона или логин SIP-аккаунта, с которого звонить
(номер должен быть подключен в проект как "входящий", в разделе "Подключение номеров");
destination Номер телефона или логин SIP-аккаунта, на который звонить
Модуль HTTPS | Node.js
																	
																		const https = require('https);
																		const config = {
																			host: 'api.ringostat.net',
																			path: '/callback/outward_call',
																			method: 'POST',
																			headers: {
																				'Content-Type': 'application/x-www-form-urlencoded',
																				'Auth-key': 'unique_auth_key_string'
																			}
																		};
																		const callback = response => {
																			let result = Buffer.alloc(0);

																			response.on('data', chunk => {
																				result = Buffer.concat([ result, chunk ]);
																			});

																			response.on('end', () => {
																				//handler response
																			});
																		};

																		const request = https.request(config, callback);
																		const body = `extension=380441112233&destination=380671112233`;
																		request.write(body);
																		request.end();
																	
																
Axios.js | GitHub
																	
																		axios({
																			url: 'https://api.ringostat.net/callback/outward_call',
																			method: 'POST',
																			headers: {
																				'Content-Type': 'application/json; charset=utf-8',
																				'Auth-key': 'unique_auth_key_string'
																			},
																			data: JSON.stringify({
																				'extension': '380441112233',
																				'destination': '380671112233'
																			})
																		}).then(response =>  {
																			//handle response
																		}).catch(error => {
																			//handle error
																		})
																	
																
cURL
																	
																		curl "https://api.ringostat.net/callback/outward_call" \
																		-X POST \
																		-d "extension=380441112233&destination=380671112233" \
																		-H "Content-Type: application/x-www-form-urlencoded" \
																		-H "Auth-key: unique_auth_key_string"
																	
																

API-запрос соединения 2х номеров(расширенный метод Callback)

Расширенный метод универсален, позволяет инициировать звонок между любыми двумя сторонами, которых нет у нас в системе(например, одного из менеджеров и клиента), а так же зафиксировать источники перехода аналогично стандартному Callback.
Данный метод подойдёт для вызова звонка из CRM системы, обработки заявок от клиентов, которые отправляют заполненную форму регистрации или заказа на вашем сайте, или classified решений(досок объявлений).

Описание параметров запроса

POST https://api.ringostat.net/a/v2

Имя параметра Описание
headers запроса
content-type application/json
Auth-key "unique_auth_key_string"
body запроса
jsonrpc Версия протокола.
Значение 2.0
id Любое число, используется для установки соответствия между запросом и ответом
method Метод на сервере Ringostat.
Значение Api\\V2\\Callback.external
params
callee_type Позволяет указать переадресацию на схему переадресации
default – номер телефона
scheme – схема переадресации
caller_type Позволяет указать переадресацию на схему переадресации
default – номер телефона
scheme – схема переадресации
caller Номер телефона или SIP-аккаунт звонящего
callee Номер телефона или SIP-аккаунт, адресата звонка
manager_dst Направление 1го звонка:
1 - менеджер
0 - клиент
clientIp IP-адрес посетителя
utmSource источник перехода
utmMedium канал перехода
utmCampaign Кампания
utmTerm ключевое слово
utmContent Содержимое
clientId Client ID Google Analytics
clientUserAgent Клиентское приложение
Модуль HTTPS | Node.js
																	
																		const https = require('https');
																		const config = {
																			host: 'api.ringostat.net',
																			path: '/a/v2',
																			method: 'POST',
																			headers: {
																				'Auth-key': 'unique_auth_key_string'
																			}
																		};
																		const callback = response => {
																			let result = Buffer.alloc(0);

																			response.on('data', chunk => {
																				result = Buffer.concat([ result, chunk ]);
																			});

																			response.on('end', () => {
																				//handler response
																			});
																		};

																		const request = https.request(config, callback);
																		const body = `{
																			"jsonrpc": "2.0",
																			"id": 777,
																			"method": "Api\\V2\\Callback.external",
																			"params": {
																				"callee_type": "default",
																				"caller_type": "default",
																				"caller": "380671112233",
																				"callee": "380632223344",
																				"manager_dst": 1,
																				"projectId": "11111",
																				"clientIp": "10.10.10.10",
																				"utmSource": "ringostat",
																				"utmMedium": "referral",
																				"utmCampaign": "extended_callback",
																				"utmTerm": "test_api_request",
																				"utmContent": "content",
																				"clientId": "111111111.2222222222",
																				"clientUserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
																			}
																		}`;
																		request.write(body);
																		request.end();

																	
																
Axios.js | GitHub
																	
																		axios({
																			url: 'https://api.ringostat.net/a/v2',
																			method: 'POST',
																			headers: {
																				'Content-Type': 'application/json; charset=utf-8',
																				'Auth-key': 'unique_auth_key_string'
																			},
																			data: {
																				"jsonrpc": "2.0",
																				"id": 777,
																				"method": "Api\\V2\\Callback.external",
																				"params": {
																					"callee_type": "default",
																					"caller_type": "default",
																					"caller": "380671112233",
																					"callee": "380672223344",
																					"manager_dst": 1,
																					"projectId": "11111",
																					"clientIp": "10.10.10.10",
																					"utmSource": "ringostat",
																					"utmMedium": "referral",
																					"utmCampaign": "extended_callback",
																					"utmTerm": "test_api_request",
																					"utmContent": "content",
																					"clientId": "111111111.2222222222",
																					"clientUserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
																				}
																			}
																		}).then(response =>  {
																			//handle response
																		}).catch(error => {
																			//handle error
																		})
																	
																
cURL
																	
																		curl "https://api.ringostat.net/a/v2"
																		-X POST \
																		-d "{
																			\"jsonrpc\": \"2.0\",
																			\"id\": 777,
																			\"method\": \"Api\\V2\\Callback.external\",
																			\"params\": {
																				\"callee_type\": \"default\",
																				\"caller_type\": \"default\",
																				\"caller\": \"380671112233\",
																				\"callee\": \"380672223344\",
																				\"manager_dst\": 1,
																				\"projectId\": \"11111\",
																				\"clientIp\": \"10.10.10.10\",
																				\"utmSource\": \"ringostat\",
																				\"utmMedium\": \"referral\",
																				\"utmCampaign\": \"extended_callback\",
																				\"utmTerm\": \"test_api_request\",
																				\"utmContent\": \"content\",
																				\"clientId\": \"111111111.2222222222\",
																				\"clientUserAgent\": \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\"
																			}
																		}" \
																		-H "Auth-key: unique_auth_key_string" \
																	
																
Все параметры данного метода обязательны, но только некоторым обязательно наличие валидного значения:
  • caller – номер клиента, на который нужно перезвонить;
  • callee – номер менеджера, который должен ответить на звонок;
  • projectId – ID проекта Ringostat;
  • clientIp – IP-адрес клиента, которому нужно перезвонить;

Остальные параметры запроса, можно передать без значения(пустые).

Для передачи данных о сессии посетителя – их нужно собирать самостоятельно и добавить в запрос.
Для примера, utm-метки перехода, можно извлечь из куки-файла rngst2(если установлен скрипт подмены), а ClientID Google Analytics из куки-файла _ga.

  • 400 Bad Request – отсутствует передача одного из параметров / caller или callee не валидны / значение объекта JavaScript не преобразовано в строку JSON
  • 401 Unauthorized – отсутствует или некорректный HTTP-заголовок Auth-Key
  • 403 Forbidden – отказано в доступе, не правильный HTTP-заголовок Auth-Key

Проверка доступности SIP-аккаунта

Данный метод позволит определить какие sip-аккаунты активны. Возвращает массив c логинами sip-аккаунтов, которые в статусе "Online".

Описание параметров запроса

GET https://api.ringostat.net/sipstatus/online

Пример ответа
																	
																		[
																			"supportrngst_manager1",
																			"supportrngst_manager2",
																			"supportrngst_manager3",
																			"supportrngst_manager4",
																			"supportrngst_manager5",
																			"supportrngst_manager6",
																			"supportrngst_manager7"
																		]
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');
																	const config = {
																		host: 'api.ringostat.net',
																		path: '/sipstatus/online',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);

																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																		  
																		response.on('end', () => {
																			//handle response
																		});
																	};
																		
																	const request = https.request(config, callback);
																	request.end();
																
															
Axios.js | GitHub
																
																	axios({
																		url: 'https://api.ringostat.net/sipstatus/online',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		}
																	}).then(response =>  {
																		//handle response
																	}).catch(error => {
																		//handle error
																	})
																
															
cURL
																
																	curl "https://api.ringostat.net/sipstatus/online" \
																	-H "Auth-key: unique_auth_key_string"
																
															

Проверка наличия активного звонка у SIP-аккаунта

Данный метод позволит определить какие sip-аккаунты не заняты. Возвращает массив логинов sip-аккаунтов проекта, которые в данный момент разговаривают.

Описание параметров запроса

GET https://api.ringostat.net/sipstatus/speaking

Пример ответа (тип данных Array)
																	
																		[
																			"supportrngst_manager2",
																			"supportrngst_manager4",
																			"supportrngst_manager5",
																			"supportrngst_manager7"
																		]
																	
																
Модуль HTTPS | Node.js
																
																	const https = require('https');
																	const config = {
																		host: 'api.ringostat.net',
																		path: '/sipstatus/speaking',
																		method: 'GET',
																		headers: {
																			'Auth-key': 'unique_auth_key_string'
																		}
																	};
																	const callback = response => {
																		let result = Buffer.alloc(0);

																		response.on('data', chunk => {
																			result = Buffer.concat([ result, chunk ]);
																		});
																		  
																		response.on('end', () => {
																			//handle response
																		});
																	};
																		
																	const request = https.request(config, callback);
																	request.end();
																		
																
															
Axios.js | GitHub
																
																	axios({
																		url: 'https://api.ringostat.net/sipstatus/speaking',
																		method: 'GET',
																		headers: {
																			'Content-Type': 'application/json; charset=utf-8',
																			'Auth-key': 'unique_auth_key_string'
																		}
																	}).then(response =>  {
																		//handle response
																	}).catch(error => {
																		//handle error
																	})
																
															
cURL
																
																	curl "https://api.ringostat.net/sipstatus/speaking" \
																	-H "Auth-key: unique_auth_key_string"
																
															
Была ли статья полезной?