Приложение Ж. Описание IVR-скрипта в формате JSON
IVR-скрипт в формате JSON — это объект состоящий из пар:
- "name": <Строка, имя IVR-скрипта>;
- "last_modified": <Строка, время последней модификации скрипта в формате "YY/MM/DD HH:MM:SS">;
- "actions": <Объект, множество блоков IVR-скрипта>;
- "description": <Строка, описание IVR-скрипта>.
Формат блока IVR-скрипта:
<Строка, id блока>: { "name": <Строка, имя блока>, "params": <Объект, множество параметров блока> "pos": <Объект, необязательный параметр> "cases": <Объект, множество переходов в другие блоки> }
Значения параметров для блока Ring
- <Строка, имя блока> — "ring";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "ringback_duration": <Строка, число от 0 до 10>:
- 0 — КПВ выключено;
- 1-10 — КПВ включено на указанное количество секунд.
- <Объект, множество переходов в другие блоки>:
"next": <Строка, id блока>.
{ "name": "ivr_script_block_0_ring_1", "last_modified": "2015/12/25 12:11:10", "actions": { "SvgjsG7210": { "name": "ring", "params": { "description": "Блок Ring c отключенным КПВ", "ringback_duration": "0" }, "pos": { "x": 1, "y": 0 }, "cases": { "next": "SvgjsG7217" } } }, "description": "" }
Значения параметров для блока Info
- <Строка, имя блока> — "info";
- <Объект, множество параметров блока>:
- <Объект, множество переходов в другие блоки>:
"next": <Строка, id блока>.
{ "actions": { "SvgjsG5570": { "name": "info", "params": { "description": "Блок Info", "info": [ { "file": "Файл 1", "group": "", "location": "system" }, { "file": "Файл 2", "group": "group", "location": "domain" } ], "replay": "1" }, "pos": { "x": 1, "y": 1 }, "cases": { "next": "SvgjsG5577" } } }, "description": "" }
Значения параметров для блока IVR
- <Строка, имя блока> — "ivr";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
"play": <Список от 1 до 20 элементов, проигрываемые файлы>:
Формат проигрываемого файла: { "duration": "1", "group": <Строка, имя папки>, "location": <Строка, тип файла>, "type": "file", "file": <Строка, имя файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
Формат проигрываемого тона: { "duration": <Строка, число от 1 до 15 (секунд)>, "group": "", "location": "", "type": "tone", "file": <Строка, имя тона> } , где *<Строка, имя тона>*: * "dialtone"; * "ringback".
"ivr": <Список, переходы ivr>:
- "wait_time": <Число, от 1 до 30 (время ожидания ввода цифры, сек)>;
- "extension_dialing": <Boolean, true | false (донабор)>;
- "category": <Строка, число от 1 до 255>;
- "max_digits": <Число, от 1 до 25 (размер вводимого номера)>;
- "interdigit_timeout": <Число, от 1 до 30 (межцифровой интервал, сек)>.
Формат перехода ivr: { "command": <Строка, число от 0 до 9>, "description": <Строка, описание перехода> }
<Объект, множество переходов в другие блоки> (формируются по переходам в параметре ivr):
- "0": <Строка, id блока>;
- "1": <Строка, id блока>;
- "2": <Строка, id блока>;
- "3": <Строка, id блока>;
- "4": <Строка, id блока>;
- "5": <Строка, id блока>;
- "6": <Строка, id блока>;
- "7": <Строка, id блока>;
- "8": <Строка, id блока>;
- "9": <Строка, id блока>;
- "No Match": <Строка, id блока>.
{
"actions": {
"SvgjsG7217": {
"name": "ivr",
"params": {
"description": "Блок Ivr с минимальными значениями для всех параметров",
"play": [
{
"duration": "1",
"group": "",
"location": "",
"type": "tone",
"file": "dialtone"
},
{
"duration": "1",
"group": "",
"location": "",
"type": "tone",
"file": "ringback"
},
{
"duration": "1",
"group": "",
"location": "system",
"type": "file",
"file": "Файл 1"
}
],
"ivr": [
{
"command": "1",
"description": "Выбор 1"
}
],
"wait_time": 1,
"extension_dialing": false,
"category": "255",
"max_digits": 1,
"interdigit_timeout": 1
},
"pos": {
"x": 1,
"y": 1
},
"cases": {
"1": "SvgjsG7231",
"No Match": "SvgjsG7224"
}
}
},
"description": ""
}
Значения параметров для блока Goto
- <Строка, имя блока> — "goto";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "goto": <Строка, id блока (переход на блок с id)>;
- "max_hops": <Строка, число от 1 до 5 (максимальное количество переходов из блока)>.
- <Объект, множество переходов в другие блоки>:
- "next": <Строка, id блока>.
{
"actions": {
"SvgjsG7266": {
"name": "goto",
"params": {
"description": "Блок с минимальным количеством переходов",
"max_hops": "1",
"goto": "SvgjsG7224"
},
"pos": {
"x": 0,
"y": 7
},
"cases": {
"next": "SvgjsG7224"
}
}
},
"description": ""
}
Значения параметров для блока Play
- <Строка, имя блока> — "play";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
"play": <Список от 1 до 20 элементов, проигрываемые файлы>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
- "replay": <Строка, число от 1 до 5 (количество проигрывания списка файлов)>.
- <Объект, множество переходов в другие блоки>:
"next": <Строка, id блока>.
{ "actions": { "SvgjsG5836": { "name": "play", "params": { "description": "Блок Play с минимальным количеством проигрывания файлов", "play": [ { "file": "Файл 1", "group": "", "location": "system" }, { "file": "Файл 2", "group": "group", "location": "domain" } ], "replay": "1" }, "pos": { "x": 1, "y": 1 }, "cases": { "next": "SvgjsG5843" } } }, "description": "" }
Значения параметров для блока Numbers
- <Строка, имя блока> — "numbers";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "numbers": <Список от 1 до 20 элементов, номера телефонов>:
{"list_id":<Строка, номер телефона>}
Номера телефона используется для сравнения с номером вызывающего абонента: ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F; Пример: 123ABC23
- <Объект, множество переходов в другие блоки>:
- "Yes": <Строка, id блока>;
"No": <Строка, id блока>.
{ "actions": { "SvgjsG7231": { "name": "numbers", "params": { "description": "Блок Numbers с минимальным размером номера", "numbers": [ { "list_id": "1" } ] }, "pos": { "x": 1, "y": 2 }, "cases": { "Yes": "SvgjsG7238", "No": "SvgjsG7280" } } }, "description": "" }
Значения параметров для блока Time
- <Строка, имя блока> — "time";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "time_ranges": <Список от 1 до 20 элементов, диапазоны времени>:
- {"time":<Строка, диапазон времени в формате "HH:MM-HH:MM,DD{1,7}">}.
- <Объект, множество переходов в другие блоки>:
- "Yes": <Строка, id блока>;
"No": <Строка, id блока>.
{ "actions": { "SvgjsG1310": { "name": "time", "params": { "description": "Блок Time со временем", "time_ranges": [ { "time": "00:00-00:15,1,2,3,4,5,6,7" } ] }, "pos": { "x": 1, "y": 1 }, "cases": { "Yes": "SvgjsG1317", "No": "SvgjsG1324" } }, }, "description": "" }
Значения параметров для блока Digitmap
- <Строка, имя блока> — "digitmap";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "digitmap": <Список от 1 до 20 элементов, маски номеров>:
{"mask":<Строка от 1 до 25 элементов, маска номера телефона>}
Маска номера телефона используется для сравнения с номером вызывающего абонента: ‘X’,‘х’ - любая цифра; ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F; ‘[ ]’ - диапазон или перечисление; ‘{min,max}’ - количество повторений; ‘.’ - неограниченное количество повторений; ‘|’ - разделитель шаблонов Пример: 01|02*.D{3,3}[0-9]
- <Объект, множество переходов в другие блоки>:
- "Yes": <Строка, id блока>;
- "No": <Строка, id блока>.
{
"actions": {
"SvgjsG7238": {
"name": "digitmap",
"params": {
"description": "Блок Digitmap с минимальной маской",
"digitmap": [
{
"mask": "1"
}
]
},
"pos": {
"x": 0,
"y": 4
},
"cases": {
"Yes": "SvgjsG7245",
"No": "SvgjsG7287"
}
}
},
"description": ""
}
Значения параметров для блока Dial
- <Строка, имя блока> — "dial";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
"numbers": <Строка, номер телефона>.
Номера телефона на который будет сделан вызов: ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F; Пример: 123ABC23
- <Объект, множество переходов в другие блоки>:
- "Busy/No answer": <Строка, id блока>;
- "Error": <Строка, id блока>.
{
"actions": {
"SvgjsG5584": {
"name": "dial",
"params": {
"description": "Блок dial с минимальным размером номера",
"numbers": "1"
},
"pos": {
"x": 1,
"y": 3
},
"cases": {
"Busy/No answer": "undefined",
"Error": "undefined"
}
}
},
"description": ""
}
Значения параметров для блока Caller Info
- <Строка, имя блока> — "caller-info";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>;
"caller_info": <Список от 1 до 100 элементов, модификация имен вызывающего абонента>
Формат модификации имени по номеру вызывающего абонента { "mask_number": <Строка, маска номера телефона>, "display_name": <Строка, отображаемое имя вызывающего абонента> }
Маска номера телефона используется для сравнения с номером вызывающего абонента: ‘X’,‘х’ - любая цифра; ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F; ‘[ ]’ - диапазон или перечисление; ‘{min,max}’ - количество повторений; ‘.’ - неограниченное количество повторений; ‘|’ - разделитель шаблонов. Пример: 01|02*.D{3,3}[0-9]
- <Объект, множество переходов в другие блоки>:
- "next": <Строка, id блока>.
{
"actions": {
"SvgjsG7280": {
"name": "caller-info",
"params": {
"description": "Блок Caller Info с минимальной маской номера",
"caller_info": [
{
"mask_number": "01|02*.D{3,3}[0-9].",
"display_name": "Абонент 1"
}
]
},
"pos": {
"x": 1,
"y": 4
},
"cases": {
"next": "undefined"
}
}
},
"description": ""
}
Значения параметров для блока Fax
- <Строка, имя блока> — "fax";
- <Объект, множество параметров блока>:
- "description": <Строка, описание(назначения) блока>;
- "email": <Строка, email (передача факса на данный email)>;
- "subject_message": <Строка, заголовок сообщения>">;
- "body_message": "Строка, тело сообщения";
В заголовке сообщения и в теле сообщения допускается использование тегов:
[SData] - "Дата отправления"; [SPName] - "Имя отправляющей стороны"; [SPNumber] - "Номер отправляющей стороны"; [RPName] - "Имя принимающей стороны"; [RPNumber] - "Номер принимающей стороны".
- "pause": <Число, от 0 до 15 (длительность паузы, сек)>.
- <Объект, множество переходов в другие блоки>:
- "Yes": <Строка, id блока>;
- "No": <Строка, id блока>.
{
"actions": {
"SvgjsG7287": {
"name": "fax",
"params": {
"description": "Блок Fax",
"email": "kostia@rambler.ru",
"subject_message": "[SData] [SPName],[SPNumber]-[RPName],[RPNumber]",
"body_message": "Empty",
"pause":4
},
"pos": {
"x": 1,
"y": 5
},
"cases": {
"Yes": "undefined",
"No": "undefined"
}
}
},
"description": ""
}
Значения параметров для блока Rec
- <Строка, имя блока> — "rec";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>.
- <Объект, множество переходов в другие блоки>:
"next": <Строка, id блока>.
{ "actions": { "SvgjsG7259": { "name": "rec", "params": { "description": "Блок Rec" }, "pos": { "x": 0, "y": 6 }, "cases": { "next": "undefined" } } }, "description": "" }
Значения параметров для блока Queue
- <Строка, имя блока> — "queue";
- <Объект, мн-во параметров блока>:
- "description": <Строка, описание (назначения) блока>;
- "queue_id": <Строка, имя очереди>;
"agents": <Список от 1 до 50 элементов, агенты>:
Формат агента: { "agent":<Строка, имя агента> }
"fone": <Список из 1 элемента, проигрываемый файл (в фоне)>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
"inqueue": <Список из 1 элемента, проигрываемый файл (при постановке в очередь)>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
"predicted_time": <Список из 1 элемента, проигрываемый файл (предсказываемое время ожидания в очереди)>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
- "queue_length": <Число, длина очереди от 0 до 9999>;
- "wait_timeout": <Число, от 0 до 3600 (, сек)>;
"distribution_mode": <Строка, режим распределения вызовов>:
Режим распределения вызовов из очереди по агентам: "random" - случайное распределение; "mia" - наиболее свободный агент (агент свободный от обслуживания нагрузки дольше других); "loa" - наименее занятый агент (агент обслуживший меньшую нагрузку за определенный промежуток времени).
- <Объект, множество переходов в другие блоки>:
- "Error": <Строка, id блока>;
- "Full": <Строка, id блока>;
- "Ok": <Строка, id блока>.
{
"actions": {
"SvgjsG1208": {
"name": "queue",
"params": {
"description": "",
"queue_id": "AQ.112#4707",
"agents": [
{
"agent": "100@test.domain"
},
{
"agent": "101@test.domain"
},
{
"agent": "104@test.domain"
}
],
"fone": [
{
"group": "",
"file": "ai_alerting.wav",
"location": "domain"
}
],
"inqueue": [
{
"group": "numbers",
"file": "3.wav",
"location": "domain"
}
],
"predicted_time": [
{
"file": "ai_out_of_order.wav",
"group": "",
"location": "system"
}
],
"queue_length": 2,
"wait_timeout": 0,
"distribution_mode": "mia"
},
"pos": {
"x": 1,
"y": 1
},
"cases": {
"Error": "undefined",
"Full": "undefined",
"Ok": "undefined"
}
}
},
"description": ""
}
Значения параметров для блока Outgoing call
- <Строка, имя блока> — "outgoing-call";
- <Объект, мн-во параметров блока>:
- "description": <Строка, описание (назначения) блока>.
- <Объект, мн-во переходов в другие блоки>:
- "next": <Строка, id блока>.
{
"actions": {
"SvgjsG1415": {
"name": "outgoing-call",
"params": {
"description": ""
},
"pos": {
"x": 1,
"y": 0
},
"cases": {
"next": "SvgjsG1422"
}
}
},
"description": "Исходящий вызов"
}
Значения параметров для блока Connect
- <Строка, имя блока> — "connect";
- <Объект, мн-во параметров блока>:
- "description": <Строка, описание (назначения) блока>;
"join_type": <Строка, направление вызова>:
Направление вызова: "join_number" - на номер, который указан в параметре "join_number"; "origination" - на номер вызывающего абонента (CgPN); "termination" - но номер вызываемого абонента (CdPN).
"join_number": <Строка, номер телефона (только если в "join_type" присутствует "join_number")>:
Номера телефона используется для сравнения с номером вызывающего абонента: ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F; Пример: 123ABC23
"greeting": <Список от 1 до 20 элементов, проигрываемые файлы>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
"fone": <Список от 1 до 20 элементов, проигрываемые файлы>:
Формат проигрываемого файла: { "file": <Строка, имя файла>, "group": <Строка, имя папки>, "location": <Строка, тип файла> } , где *<Строка, тип файла>*: * "system" - системный файл; * "domain" - пользовательский файл.
- <Объект, множество переходов в другие блоки>:
- "Busy/No answer": <Строка, id блока>;
- "Error": <Строка, id блока>;
- "Ok": <Строка, id блока>.
{
"actions": {
"SvgjsG1422": {
"name": "connect",
"params": {
"description": "Блок Connect с максимальным номером",
"join_type": "join_number",
"join_number": "1234567890ABCDEF*#3",
"greeting": [
{
"file": "Фаил приветствия 1",
"group": "",
"location": "system"
}
],
"fone": [
{
"file": "Файл фоновой музыки 1",
"group": "",
"location": "system"
}
]
},
"pos": {
"x": 1,
"y": 1
},
"cases": {
"Busy/No answer": "undefined",
"Error": "undefined",
"Ok": "SvgjsG1429"
}
}
},
"description": ""
}
{
"actions": {
"SvgjsG1436": {
"name": "connect",
"params": {
"description": "Блок Connect с вызывающим абонентом",
"join_type": "origination",
"greeting": [
{
"file": "Файл приветствия 1",
"group": "",
"location": "system"
}
],
"fone": [
{
"file": "Файл фоновой музыки 1",
"group": "",
"location": "system"
}
]
},
"pos": {
"x": 2,
"y": 3
},
"cases": {
"Busy/No answer": "undefined",
"Error": "undefined",
"Ok": "SvgjsG1443"
}
}
},
"description": ""
}
Значения параметров для блока Talk
- <Строка, имя блока> — "talk";
- <Объект, множество параметров блока>:
- "description": <Строка, описание (назначения) блока>.
- <Объект, множество переходов в другие блоки>:
- У данного блока нету переходов в другие блоки.
{
"actions": {
"SvgjsG1471": {
"name": "talk",
"params": {
"description": "Блок Talk"
},
"pos": {
"x": 2,
"y": 8
},
"cases": {}
}
},
"description": ""
}