версия от 2023-02-13
Группа методов позволяет создавать группы SIP-аккаунтов и управлять их параметрами.
Адрес: https://restapi.plusofon.ru
GET
api/v1/groups
Метод позволяет получить список всех созданных групп.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/groups" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/groups',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив data
:
id
integer
ИД группы
name
string
название группы
timeout
integer
продолжительность вызова (в секундах)
number
integer
внутренний номер группы
sequence_rule
string
код правила распределения вызовов
Order
— в строгом порядке
Random
— в случайном порядке
Simultaneous
— одновременно
device_only
boolean
признак разрешения вызова только на SIP-аккаунт (без дальнейшей переадресации)
pickup
object
объект c параметрами перехвата звонков
/ pickup_number
integer
добавочный номер для перехвата
/ approved_group_id
integer
ИД родительской группы, из которой можно перехватывать вызовы
{
"current_page": 2,
"data": [
{
"id": 512353,
"name": "группа21",
"timeout": 30,
"number": 300,
"sequence_rule": "Order",
"device_only": 1,
"pickup": null
},
{
"id": 512356,
"name": "группа24",
"timeout": 30,
"number": 301,
"sequence_rule": "Order",
"device_only": 0,
"pickup": {
"number": 250,
"approved_group_id": 512356
}
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/groups?page=1",
"from": 16,
"last_page": 2,
"last_page_url": "http:\/\/localhost\/api\/v1\/groups?page=2",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/groups",
"per_page": 15,
"prev_page_url": "http:\/\/localhost\/api\/v1\/groups?page=1",
"to": 17,
"total": 17
}
GET
api/v1/groups/approved
Метод позволяет получить список всех возможных родительских групп.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/groups/approved" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups/approved"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/groups/approved',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups/approved'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив data
:
id
integer
ИД группы
name
string
название группы
timeout
integer
продолжительность вызова (в секундах)
number
integer
внутренний номер группы
sequence_rule
string
код правила распределения вызовов
Order
— в строгом порядке
Random
— в случайном порядке
Simultaneous
— одновременно
device_only
boolean
признак разрешения вызова только на SIP-аккаунт (без дальнейшей переадресации)
pickup
object
объект с параметрами перехвата звонков
/ pickup_number
integer
добавочный номер для перехвата
/ approved_group_id
integer
ИД родительской группы, из которой можно перехватывать вызовы
{
"current_page": 1,
"data": [
{
"id": 512356,
"name": "группа24",
"timeout": 30,
"number": 15026,
"sequence_rule": "Order",
"device_only": 0,
"pickup": {
"number": 654,
"approved_group_id": 512356
}
},
{
"id": 512357,
"name": "группа26",
"timeout": 30,
"number": 15028,
"sequence_rule": "Order",
"device_only": 0,
"pickup": {
"number": 655,
"approved_group_id": 512356
}
},
{
"id": 512358,
"name": "группа27",
"timeout": 30,
"number": 15029,
"sequence_rule": "Order",
"device_only": 0,
"pickup": {
"number": 656,
"approved_group_id": 512357
}
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/approved-groups?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/approved-groups?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/approved-groups",
"per_page": 15,
"prev_page_url": null,
"to": 3,
"total": 3
}
GET
api/v1/groups/{group_id}
Метод позволяет получить данные конкретной группы.
Path
group_id
stringi
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/groups/minus" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups/minus"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/groups/minus',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups/minus'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается:
id
integer
ИД группы
name
string
название группы
timeout
integer
продолжительность вызова (в секундах)
number
integer
внутренний номер группы
sequence_rule
string
код правила распределения вызовов
Order
— в строгом порядке
Random
— в случайном порядке
Simultaneous
— одновременно
device_only
boolean
признак разрешения вызова только на SIP-аккаунт (без дальнейшей переадресации)
pickup
object
объект с параметрами перехвата звонков
/ pickup_number
integer
добавочный номер для перехвата
/ approved_group_id
integer
ИД родительской группы, из которой можно перехватывать вызовы
sips
array
массив SIP-аккаунтов, состоящих в группе
/ id
integer
ИД SIP-аккаунта, состоящего в группе
/ name
string
название SIP-аккаунта, состоящего в группе
{
"id": 512360,
"name": "группа31",
"timeout": 30,
"number": 600,
"sequence_rule": "Order",
"device_only": 0,
"pickup": {
"number": 731,
"approved_group_id": 512360
},
"sips": [
{
"id": 57,
"name": "test@plusofontest.ru"
},
{
"id": 58,
"name": "test_sip_1"
}
],
"child_groups": [
{
"id": 512322,
"name": "группа9",
"timeout": 30,
"number": 500,
"sequence_rule": "Order",
"device_only": 0
}
]
}
POST
api/v1/groups
Метод позволяет создать новую группу.
Body
number
integer / {200 ... 99999}
⁎ внутренний номер группы
name
string
⁎ имя группы
sequence_rule
string
⁎ код правила распределения звонков
Order
— в строгом порядке
Random
— в случайном порядке
Simultaneous
— одновременно
можно получить методом "GET api/v1/groups/rules"
timeout
integer / {1 ... 999}
⁎ продолжительность звонка
sips
array
массив ИД SIP-аккаунтов i
, входящих в группу
groups
array
массив ИД других групп i
, входящих в группу
device_only
boolean
признак разрешения вызова только на SIP-аккаунт (без дальнейшей переадресации)
pickup
boolean
признак активности перехвата звонков внутри группы
pickup_number
integer / {200 ... 99999}
внутренний номер для перехвата
approved_group_id
integer / {200 ... 99999}
внутренний номер родительской группы
curl -X POST \
"https://restapi.plusofon.ru/api/v1/groups" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":6,"name":"atque","sequence_rule":"Order","timeout":13,"sips":[],"groups":[],"device_only":false,"pickup":true,"pickup_number":1,"approved_group_id":7}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": 6,
"name": "atque",
"sequence_rule": "Order",
"timeout": 13,
"sips": [],
"groups": [],
"device_only": false,
"pickup": true,
"pickup_number": 1,
"approved_group_id": 7
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/groups',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 6,
'name' => 'atque',
'sequence_rule' => 'Order',
'timeout' => 13,
'sips' => [],
'groups' => [],
'device_only' => false,
'pickup' => true,
'pickup_number' => 1,
'approved_group_id' => 7,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups'
payload = {
"number": 6,
"name": "atque",
"sequence_rule": "Order",
"timeout": 13,
"sips": [],
"groups": [],
"device_only": false,
"pickup": true,
"pickup_number": 1,
"approved_group_id": 7
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Группа успешно создана:
{
"success": true
}
PUT
api/v1/groups/{group_id}
Метод позволяет редактировать конкретную группу.
Path
group_id
stringi
Body
number
integer / {200 ... 99999}
⁎ внутренний номер группы
name
string
⁎ имя группы
sequence_rule
string
⁎ код правила распределения звонков
Order
— в строгом порядке
Random
— в случайном порядке
Simultaneous
— одновременно
timeout
integer / {1 ... 999}
⁎ продолжительность звонка
sips
array
массив ИД SIP-аккаунтов i
, входящих в группу
groups
array
массив ИД других групп i
, входящих в группу
device_only
boolean
признак разрешения вызова только на SIP-аккаунт (без дальнейшей переадресации)
pickup
boolean
признак активности перехвата звонков внутри группы
pickup_number
integer / {200 ... 99999}
внутренний номер для перехвата
approved_group_id
integer / {200 ... 99999}
внутренний номер родительской группы
curl -X PUT \
"https://restapi.plusofon.ru/api/v1/groups/512356" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":14,"name":"id","sequence_rule":"Order","timeout":19,"sips":[],"groups":[],"device_only":false,"pickup":true,"pickup_number":8,"approved_group_id":18}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups/512356"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": 14,
"name": "id",
"sequence_rule": "Order",
"timeout": 19,
"sips": [],
"groups": [],
"device_only": false,
"pickup": true,
"pickup_number": 8,
"approved_group_id": 18
}
fetch(url, {
method: "PUT",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://restapi.plusofon.ru/api/v1/groups/512356',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 14,
'name' => 'id',
'sequence_rule' => 'Order',
'timeout' => 19,
'sips' => [],
'groups' => [],
'device_only' => false,
'pickup' => true,
'pickup_number' => 8,
'approved_group_id' => 18,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups/512356'
payload = {
"number": 14,
"name": "id",
"sequence_rule": "Order",
"timeout": 19,
"sips": [],
"groups": [],
"device_only": false,
"pickup": true,
"pickup_number": 8,
"approved_group_id": 18
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Группа успешно обновлена:
{
"success": true
}
DELETE
api/v1/groups/{group_id}
Метод позволяет удалить конкретную группу.
Path
group_id
stringi
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/groups/est" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups/est"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "DELETE",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://restapi.plusofon.ru/api/v1/groups/est',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups/est'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
В ответе могут возвращаться следующие поля:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Группа успешно удалена:
{
"success": true
}
GET
api/v1/groups/rules
Метод позволяет получить список всех правил распределения звонков, доступных для назначения.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/groups/rules" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/groups/rules"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/groups/rules',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/groups/rules'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив sequence_rules
:
rule
код правила распределения звонков
title
название правила распределения звонков
Получены все доступные правила:
{
"sequence_rules": [
{
"rule": "Order",
"title": "По порядку"
},
{
"rule": "Random",
"title": "Случайно"
},
{
"rule": "Simultaneous",
"title": "Одновременно"
}
]
}