Описание Ringostat API и общая информация
Ringostat API (Application Programming Interface) — это набор готовых средств для использования во внешних программных продуктах (CRM-системы, системы статистики и аналитики и т.п.).
Используя интеграцию с Ringostat по API у вас появляются возможности самостоятельно отправлять нужные запросы нам на сервер или вызывать определенные события.
В данной документации вы найдете описание методов, с помощью которых сможете решить необходимые для вашего бизнеса задачи. Например, такие как:
- в любой удобный момент получить свыше 30 параметров по звонкам, включая данные по коллтрекингу;
- обращаться в ваш проект для проверки номера звонящего
при реализации собственной логики переадресации звонков; - инициациировать звонок между 2мя направлениями (простой метод)
используется для инициирования звонков из CRM-системы (если она позволяет и 1но из направлений — это SIP-аккаунт или номер в проекте); - инициациировать звонок между 2мя направлениями (расширенный метод)
используется при реализации собственного виджета обратного звонка; - проверить доступность SIP-аккаунта (созданного в рамках проекта)
в ответ на запрос будет отправлен массив логинов SIP-аккаунтов, которые на момент проверки находятся в сети (online); - проверить активность SIP-аккаунта (созданного в рамках проекта)
в ответ на запрос будет отправлен массив логинов SIP-аккаунтов, на момент проверки участвуют в разговоре (входящий или исходящий звонок);
Ключ авторизации должен быть передан как дополнительный заголовок (header) HTTP-Запроса.
Ключ авторизации доступен в личном кабинете Ringostat, на странице Интеграции -> Ringostat API:
Экспорт журнала звонков
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
|
Сортировка выборки |
текущие дата и время
|
{
"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"
}
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();
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 "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
|
Ссылка на аудиозапись |
recording_wav
|
Ссылка на аудиозапись в формате wav |
call_card
|
Ссылка на карточку звонка для номера, с или на который звонили |
additional_number
|
Добавочный номер, введенный при звонке на Голосовое меню IVR |
has_recording
|
Значение 1 или 0, в зависимости от того, был ли записан разговор при звонке |
scheme_name
|
Название схемы переадресации, на которую был направлен звонок |
duration_ms
|
Длительность разговора в миллисекундах (duration*1000) |
employee_fio
|
ФИО сотрудника из раздела "Настройки" – "Сотрудники" |
department
|
название отдела/отделов, к которым относится сотрудник |
caller_number
|
номер, который отобразился клиенту при исходящем звонке |
{
"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",
"recording_wav": "https://app.ringostat.com/recordings/ua1_-1111111111.22222222.wav?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",
"employee_fio": "John 'Alived' Doe"
"department": "sale"
"caller_number": "380679998877"
}
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,recording_wav,call_card,additional_number,has_recording,scheme_name,duration_ms,employee_fio,department,caller_number',
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({
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,recording_wav,call_card,additional_number,has_recording,scheme_name,duration_ms,employee_fio,department,caller_number'
}
}).then(response => {
//handle response
}).catch(error => {
//handle error
});
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,recording_wav,call_card,additional_number,has_recording,scheme_name,duration_ms,employee_fio,department,caller_number" \
-H "Content-Type: application/json" \
-H "Auth-key: unique_auth_key_value"
Фильтры выборки
Фильтры необходимы для выборки звонков по заданным параметрам.
Фильтр состоит из имени поля, символа сравнения и значением в соответствующей последовательности.
Для добавления фильтра используется ключ filters
, который позволяет добавлять один или несколько фильтров разделённых запятыми.
Фильтр | Описание фильтра |
---|---|
>
|
больше |
<
|
меньше |
>=
|
больше, либо равно |
<=
|
меньше, либо равно |
=
|
равно |
<>
|
не равно |
~
|
регулярное выражение Литерал должен быть закодирован в base64 |
{
"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"
}
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();
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 "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 – по убиванию;
|
{
"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"
}
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({
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 "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
может быть только номер телефона из проекта(номер должен быть подключен в проект как "входящий", в разделе "Подключение номеров")
Описание параметров запроса
POSThttps://api.ringostat.net/callback/outward_call
Имя параметра | Описание |
---|---|
extension
|
Номер телефона, с которого звонить (номер должен быть подключен в проект как "входящий", в разделе "Подключение номеров"); |
destination
|
Номер телефона или логин SIP-аккаунта, на который звонить |
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({
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 "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)
Расширенный метод позволяет совершить звонок между любыми двумя сторонами, даже с теми которых нет в Ringostat (например, нужным вам номером или sip аккаунтом менеджера и номером клиента). Источники такого звонка отобразятся в статистике так же как при стандартном звонке с виджета Callback.
Этот метод подойдет для вызова звонка из CRM системы, обработки заявок которые клиент оставляет на вашем сайте, или classified решений (досок объявлений).
Описание параметров запроса
POSThttps://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
|
||
caller_type
|
Позволяет указать тип направления с которого инициируем звонок default – номер телефонаscheme – схема переадресации
|
|
callee_type
|
Позволяет указать тип направления на которое инициируем звонок default – номер телефонаscheme – схема переадресации
|
|
caller
|
Номер телефона или SIP-аккаунт звонящего | |
callee
|
Номер телефона или SIP-аккаунт, адресата звонка | |
direction
|
Параметр определяет тип звонка в Журнале звонков:in - отобразится как входящий с метками источниковout - отобразиться в журнале звонков как исходящий(тип данных string) |
|
manager_dst
|
Параметр определяет тип первого направления:1 - звонок сначала поступит менеджеру, после поднятия трубки инициируется звонок клиенту0 - звонок сначала поступит клиенту, после поднятия трубки инициируется звонок менеджеру
|
|
clientIp
|
IP-адрес посетителя | |
utmSource
|
источник перехода | |
utmMedium
|
канал перехода | |
utmCampaign
|
Кампания | |
utmTerm
|
ключевое слово | |
utmContent
|
Содержимое | |
clientId
|
Client ID Google Analytics | |
clientUserAgent
|
Клиентское приложение |
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,
"direction": "out",
"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({
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,
"direction": "out",
"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 "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,
\"direction\": \"out\",
\"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 – номер или SIP-аккаунт, на который нужно перезвонить;
- callee – номер или SIP-аккаунт, который должен ответить на звонок;
- projectId – ID проекта Ringostat;
Остальные параметры запроса, можно передать без значение(пустые).
Для передачи данных о сессии посетителя – их нужно собирать самостоятельно и добавить в запрос.
Для примера, utm-метки перехода, можно извлечь из куки-файла rngst2(если установлен скрипт подмены), а ClientID Google Analytics из куки-файла _ga.
- 400 Bad Request – отсутствует передача одного из параметров / caller или callee не валидны / значение объекта JavaScript не преобразовано в строку JSON
- 401 Unauthorized – отсутствует или некорректный HTTP-заголовок Auth-Key
- 403 Forbidden – отказано в доступе, не правильный HTTP-заголовок Auth-Key
Рассмотрим детально работу расширенного метода при разных вариантах настройки.
Пример с SIP-аккаунтом (caller).
Ситуация: Значение Caller – SIP-аккаунт, Callee – номер телефонаКлиенту будет совершён звонок с номера телефона, который установлен в настройках исходящей связи по умолчанию.
Пример с номером клиента(caller).
Ситуация: Значение Caller – номер клиента, Callee – SIP-аккаунтКлиенту будет совершён звонок с номера телефона, который установлен в правиле, в настройках исходящей связи.
Пример:
Клиент заказывал звонок на свой номер формата +380ХХХХХХХХХ через форму на сайте(использован расширенный метод API-Callback).
Клиент увидит входящий звонок с номером из правила для направления +380
Второй клиент заказал звонок на свой номер формата +7495ХХХХХХХ.
Клиент увидит входящий звонок с номером из правила для направления +7
Журнал звонков(direction in).
Указан параметр direction: Значение in – в журнале звонков звонок записывается как входящий, следующим образом:
Кто звонил — Значение параметра caller (номер телефона или логин SIP-аккаунта, на который совершён звонок);
Куда звонили — значение параметра callee (номер с которого совершен звонок, SIP-аккаунт с которого совершен звонок);
С кем соединен — значение параметра caller (номер телефона или логин SIP-аккаунта, на который совершён звонок).
Журнал звонков(direction out).
Указан параметр direction: Значение out – в журнале звонков звонок записывается как исходящий, следующим образом:
Кто звонил — значение параметра callee (номер с которого совершен звонок, SIP-аккаунт с которого совершен звонок);
Куда звонили — значение параметра caller (номер телефона или логин SIP-аккаунта, на который совершён звонок);
С кем соединен — значение параметра caller (номер телефона или логин SIP-аккаунта, на который совершён звонок).
Проверка доступности SIP-аккаунта
Данный метод позволит определить какие sip-аккаунты активны. Возвращает массив c логинами sip-аккаунтов, которые в статусе "Online".
Описание параметров запроса
GEThttps://api.ringostat.net/sipstatus/online
[
"supportrngst_manager1",
"supportrngst_manager2",
"supportrngst_manager3",
"supportrngst_manager4",
"supportrngst_manager5",
"supportrngst_manager6",
"supportrngst_manager7"
]
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({
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 "https://api.ringostat.net/sipstatus/online" \
-H "Auth-key: unique_auth_key_string"
Проверка доступности SIP-аккаунта в Ringostat Smart Phone
Данный метод позволит определить какие sip-аккаунты активны в расширении Ringostat Smart Phone. Возвращает массив c логинами sip-аккаунтов, которые в статусе "Online".
Описание параметров запроса
GEThttps://api.ringostat.net/sipstatus/online?project_id={your_project_id}&token={token}&withRspDoNotDisturbSips=false
Параметр project_id можно найти на любой странице личного кабинета в Url строке
Параметр token находится в разделе "Интеграции" ==> "Готовые интеграции".
Находим интеграцию с Alytics и нажимаем "Подключить".
В настройках интеграции копируем пароль, это и есть наш токен.
[
"supportrngst_manager1",
"supportrngst_manager2",
"supportrngst_manager3",
"supportrngst_manager4",
"supportrngst_manager5",
"supportrngst_manager6",
"supportrngst_manager7"
]
const https = require('https');
const config = {
host: 'api.ringostat.net',
path: '/sipstatus/online?project_id={your_project_id}&token={token}&withRspDoNotDisturbSips=false',
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({
url: 'https://api.ringostat.net/sipstatus/online?project_id={your_project_id}&token={token}&withRspDoNotDisturbSips=false',
method: 'GET',
headers: {
'Auth-key': 'unique_auth_key_string'
}
}).then(response => {
//handle response
}).catch(error => {
//handle error
})
curl "https://api.ringostat.net/sipstatus/online?project_id={your_project_id}&token={token}&withRspDoNotDisturbSips=false" \
-H "Auth-key: unique_auth_key_string"
Проверка наличия активного звонка у SIP-аккаунта
Данный метод позволит определить какие sip-аккаунты не заняты. Возвращает массив логинов sip-аккаунтов проекта, которые в данный момент разговаривают.
Описание параметров запроса
GEThttps://api.ringostat.net/sipstatus/speaking
[
"supportrngst_manager2",
"supportrngst_manager4",
"supportrngst_manager5",
"supportrngst_manager7"
]
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({
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 "https://api.ringostat.net/sipstatus/speaking" \
-H "Auth-key: unique_auth_key_string"