версия от 2023-02-13
Группа методов позволяет управлять сценариями обработки входящих вызовов.
Адрес: https://restapi.plusofon.ru
GET
api/v1/scenario
Метод позволяет получить список всех сценариев текущего личного кабинета.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/scenario" \
-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/scenario"
);
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/scenario',
[
'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/scenario'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив data
:
id
ИД сценария
name
название сценария
type
тип сценария
number
— приветствие и донабор (простой сценарий без логики)
menu
— голосовое меню
number
{
"current_page": 1,
"data": [
{
"id": 512353,
"name": "Голосовое меню 1",
"type": "menu",
"number": "74959999999"
},
{
"id": 512356,
"name": "Приветствие и донабор 1",
"type": "number",
"number": "74959999998"
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/scenario?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/scenario?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/scenario",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2
}
GET
api/v1/scenario/{scenario_id}
Метод позволяет получить параметры конкретного сценария.
Path
scenario_id
integeri
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/scenario/42" \
-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/scenario/42"
);
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/scenario/42',
[
'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/scenario/42'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращаются параметры сценария, описание см. в методе «Создание сценария».
{
"id": 529217,
"name": "Голосовое меню 1",
"type": "menu",
"work_time": [
{
"week_day": "monday",
"last_hour": 23,
"first_hour": 18
},
{
"week_day": "wednesday",
"last_hour": 15,
"first_hour": 16
}
],
"greeting_media_id": 4,
"invalid_media_id": 5,
"exit_media_id": 6,
"menu": [
{
"event": "0",
"destination_id": 60,
"prompt_media_id": 7,
"redirection_type": "sip"
},
{
"event": "1",
"destination_id": 528804,
"prompt_media_id": 8,
"redirection_type": "group"
}
],
"no_active": {
"destination_id": 58,
"prompt_media_id": 9,
"redirection_type": "sip"
},
"timeout": null,
"voicemail": true,
"voicemail_media_id": 10
}
POST
api/v1/scenario
Метод позволяет создать новый сценарий обработки входящих вызовов.
URL для получения созданного сценария находится в заголовке "Location"
.
Body
name
string
⁎ название сценария
type
string
⁎ код типа сценария
number
— приветствие и донабор (простой сценарий без логики)
menu
— голосовое меню
work_time
array
только для типа menu
— массив с графиком работы сценария (по умолчанию — ежедневно круглосуточно)
/ week_day
string / {monday ... sunday}
⁎ день недели
/ first_hour
integer / {0 ... 23}
⁎ первый рабочий час
/ last_hour
integer / {0 ... 23}
⁎ последний рабочий час
greeting_media_id
integer
ИД медиафайла i
, проигрываемого абоненту в качестве приветствия
invalid_media_id
integer
только для типа menu
— ИД медиафайла i
, проигрываемого абоненту при недоступности пункта меню
exit_media_id
integer
только для типа menu
— ИД медиафайла i
, проигрываемого абоненту при завершении сценария
menu
array
⁎ только для типа menu
— массив пунктов голосового меню
/ event
string / {0 ... 9, *
, #
}
⁎ пункт меню, нажатая кнопка
/ redirection_type
string
⁎ код назначения переадресации i
/ destination_id
string
⁎ ИД сущности для переадресации (SIP-аккаунта i
, группы i
или другого сценария i
)
/ prompt_media_id
integer
⁎ ИД медиафайла i
, проигрываемого абоненту перед переадресацией
no_active
object
только для типа menu
— объект с настройками переадресации в нерабочее время
timeout
object
только для типа number
— объект с настройками переадресации если внутренний номер не введён
voicemail
boolean
⁎ признак активной отправки на голосовую почту
voicemail_media_id
integer
ИД медиафайла i
, проигрываемого в голосовой почте
curl -X POST \
"https://restapi.plusofon.ru/api/v1/scenario" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"name":"reiciendis","type":"tenetur","work_time":[{"week_day":"vel","first_hour":18,"last_hour":8}],"greeting_media_id":7,"invalid_media_id":6,"exit_media_id":4,"menu":[{"event":"facere","redirection_type":"inventore","destination_id":"esse","prompt_media_id":5}],"no_active":{"redirection_type":"ipsum","destination_id":"et","prompt_media_id":9},"timeout":{"redirection_type":"ea","destination_id":"officia"},"voicemail":true,"voicemail_media_id":8}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/scenario"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"name": "reiciendis",
"type": "tenetur",
"work_time": [
{
"week_day": "vel",
"first_hour": 18,
"last_hour": 8
}
],
"greeting_media_id": 7,
"invalid_media_id": 6,
"exit_media_id": 4,
"menu": [
{
"event": "facere",
"redirection_type": "inventore",
"destination_id": "esse",
"prompt_media_id": 5
}
],
"no_active": {
"redirection_type": "ipsum",
"destination_id": "et",
"prompt_media_id": 9
},
"timeout": {
"redirection_type": "ea",
"destination_id": "officia"
},
"voicemail": true,
"voicemail_media_id": 8
}
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/scenario',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'name' => 'reiciendis',
'type' => 'tenetur',
'work_time' => [
[
'week_day' => 'vel',
'first_hour' => 18,
'last_hour' => 8,
],
],
'greeting_media_id' => 7,
'invalid_media_id' => 6,
'exit_media_id' => 4,
'menu' => [
[
'event' => 'facere',
'redirection_type' => 'inventore',
'destination_id' => 'esse',
'prompt_media_id' => 5,
],
],
'no_active' => [
'redirection_type' => 'ipsum',
'destination_id' => 'et',
'prompt_media_id' => 9,
],
'timeout' => [
'redirection_type' => 'ea',
'destination_id' => 'officia',
],
'voicemail' => true,
'voicemail_media_id' => 8,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/scenario'
payload = {
"name": "reiciendis",
"type": "tenetur",
"work_time": [
{
"week_day": "vel",
"first_hour": 18,
"last_hour": 8
}
],
"greeting_media_id": 7,
"invalid_media_id": 6,
"exit_media_id": 4,
"menu": [
{
"event": "facere",
"redirection_type": "inventore",
"destination_id": "esse",
"prompt_media_id": 5
}
],
"no_active": {
"redirection_type": "ipsum",
"destination_id": "et",
"prompt_media_id": 9
},
"timeout": {
"redirection_type": "ea",
"destination_id": "officia"
},
"voicemail": true,
"voicemail_media_id": 8
}
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/scenario/{scenario_id}
Метод позволяет изменить параметры конкретного сценария.
Path
scenario_id
stringi
Body
name
string
⁎ название сценария
type
string
⁎ код типа сценария
number
— приветствие и донабор (простой сценарий без логики)
menu
— голосовое меню
work_time
array
только для типа menu
— массив с графиком работы сценария (по умолчанию — ежедневно круглосуточно)
/ week_day
string / {monday ... sunday}
⁎ день недели
/ first_hour
integer / {0 ... 23}
⁎ первый рабочий час
/ last_hour
integer / {0 ... 23}
⁎ последний рабочий час
greeting_media_id
integer
ИД медиафайла i
, проигрываемого абоненту в качестве приветствия
invalid_media_id
integer
только для типа menu
— ИД медиафайла i
, проигрываемого абоненту при недоступности пункта меню
exit_media_id
integer
только для типа menu
— ИД медиафайла i
, проигрываемого абоненту при завершении сценария
menu
array
⁎ только для типа menu
— массив пунктов голосового меню
/ event
string / {0 ... 9, *
, #
}
⁎ пункт меню, нажатая кнопка
/ redirection_type
string
⁎ код назначения переадресации i
/ destination_id
string
⁎ ИД сущности для переадресации (SIP-аккаунта i
, группы i
или другого сценария i
)
/ prompt_media_id
integer
⁎ ИД медиафайла i
, проигрываемого абоненту перед переадресацией
no_active
object
только для типа menu
— объект с настройками переадресации в нерабочее время
timeout
object
только для типа number
— объект с настройками переадресации если внутренний номер не введён
voicemail
boolean
⁎ признак активной отправки на голосовую почту
voicemail_media_id
integer
ИД медиафайла i
, проигрываемого в голосовой почте
curl -X PUT \
"https://restapi.plusofon.ru/api/v1/scenario/42" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"name":"dicta","type":"veniam","work_time":[{"week_day":"quam","first_hour":8,"last_hour":7}],"greeting_media_id":16,"invalid_media_id":11,"exit_media_id":2,"menu":[{"event":"consequatur","redirection_type":{"":"occaecati"},"destination_id":"quam","prompt_media_id":20}],"no_active":{"redirection_type":"odio","destination_id":"exercitationem","prompt_media_id":17},"timeout":{"redirection_type":{"":"minima"},"destination_id":"quia"},"voicemail":true,"voicemail_media_id":7}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/scenario/42"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"name": "dicta",
"type": "veniam",
"work_time": [
{
"week_day": "quam",
"first_hour": 8,
"last_hour": 7
}
],
"greeting_media_id": 16,
"invalid_media_id": 11,
"exit_media_id": 2,
"menu": [
{
"event": "consequatur",
"redirection_type": {
"": "occaecati"
},
"destination_id": "quam",
"prompt_media_id": 20
}
],
"no_active": {
"redirection_type": "odio",
"destination_id": "exercitationem",
"prompt_media_id": 17
},
"timeout": {
"redirection_type": {
"": "minima"
},
"destination_id": "quia"
},
"voicemail": true,
"voicemail_media_id": 7
}
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/scenario/42',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'name' => 'dicta',
'type' => 'veniam',
'work_time' => [
[
'week_day' => 'quam',
'first_hour' => 8,
'last_hour' => 7,
],
],
'greeting_media_id' => 16,
'invalid_media_id' => 11,
'exit_media_id' => 2,
'menu' => [
[
'event' => 'consequatur',
'redirection_type' => [
'' => 'occaecati',
],
'destination_id' => 'quam',
'prompt_media_id' => 20,
],
],
'no_active' => [
'redirection_type' => 'odio',
'destination_id' => 'exercitationem',
'prompt_media_id' => 17,
],
'timeout' => [
'redirection_type' => [
'' => 'minima',
],
'destination_id' => 'quia',
],
'voicemail' => true,
'voicemail_media_id' => 7,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/scenario/42'
payload = {
"name": "dicta",
"type": "veniam",
"work_time": [
{
"week_day": "quam",
"first_hour": 8,
"last_hour": 7
}
],
"greeting_media_id": 16,
"invalid_media_id": 11,
"exit_media_id": 2,
"menu": [
{
"event": "consequatur",
"redirection_type": {
"": "occaecati"
},
"destination_id": "quam",
"prompt_media_id": 20
}
],
"no_active": {
"redirection_type": "odio",
"destination_id": "exercitationem",
"prompt_media_id": 17
},
"timeout": {
"redirection_type": {
"": "minima"
},
"destination_id": "quia"
},
"voicemail": true,
"voicemail_media_id": 7
}
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/scenario/{scenario_id}
Метод позволяет удалить конкретный сценарий.
Path
scenario_id
stringi
curl -X DELETE \
"https://restapi.plusofon.ru/api/v1/scenario/42" \
-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/scenario/42"
);
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/scenario/42',
[
'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/scenario/42'
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/scenario/redirection-types
Метод позволяет получить список всех доступных вариантов назначений для переадресации вызовов.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/scenario/redirection-types" \
-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/scenario/redirection-types"
);
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/scenario/redirection-types',
[
'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/scenario/redirection-types'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив redirection_types
:
type
string
код назначения переадресации
title
string
название назначения переадресации
{
"redirection_types": [
{
"type": "sip",
"title": "Sip аккаунт"
},
{
"type": "group",
"title": "Группа"
},
{
"type": "scen",
"title": "Сценарий"
}
]
}