IVR-скрипт в формате JSON — это объект состоящий из пар:

  1. "name": <Строка, имя IVR-скрипта>;
  2. "last_modified": <Строка, время последней модификации скрипта в формате "YY/MM/DD HH:MM:SS">;
  3. "actions": <Объект, множество блоков IVR-скрипта>;
  4. "description": <Строка, описание IVR-скрипта>.

Формат блока IVR-скрипта:

<Строка, id блока>: {
      "name":   <Строка, имя блока>,
      "params": <Объект, множество параметров блока>
      "pos":    <Объект, необязательный параметр>
      "cases":  <Объект, множество переходов в другие блоки>
    }

Значения параметров для блока Ring

  1. <Строка, имя блока> — "ring";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "ringback_duration": <Строка, число от 0 до 10>:
      • 0 — КПВ выключено;
      • 1-10 — КПВ включено на указанное количество секунд.
  3. <Объект, множество переходов в другие блоки>:
    1. "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

  1. <Строка, имя блока> — "info";
  2. <Объект, множество параметров блока>:
  3. <Объект, множество переходов в другие блоки>:
    1. "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

  1. <Строка, имя блока> — "ivr";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "play": <Список от 1 до 20 элементов, проигрываемые файлы>:

      Формат проигрываемого файла:
          {
            "duration": "1",
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>,
            "type": "file",
            "file": <Строка, имя файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.


      Формат проигрываемого тона:
          {
            "duration": <Строка, число от 1 до 15 (секунд)>,
            "group": "",
            "location": "",
            "type": "tone",
            "file": <Строка, имя тона>
          }
      , где *<Строка, имя тона>*:
      * "dialtone";
      * "ringback".
    3. "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": <Строка, описание перехода>
          }
  3. <Объект, множество переходов в другие блоки> (формируются по переходам в параметре ivr):

    • "0": <Строка, id блока>;
    • "1": <Строка, id блока>;
    • "2": <Строка, id блока>;
    • "3": <Строка, id блока>;
    • "4": <Строка, id блока>;
    • "5": <Строка, id блока>;
    • "6": <Строка, id блока>;
    • "7": <Строка, id блока>;
    • "8": <Строка, id блока>;
    • "9": <Строка, id блока>;
    • "No Match": <Строка, id блока>.
 Пример блока Ivr
{
"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

  1. <Строка, имя блока> — "goto";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "goto": <Строка, id блока (переход на блок с id)>;
    3. "max_hops": <Строка, число от 1 до 5 (максимальное количество переходов из блока)>.
  3. <Объект, множество переходов в другие блоки>:
    1. "next": <Строка, id блока>.
 Пример блока Goto
{
"actions": {
"SvgjsG7266": {
"name": "goto",
"params": {
"description": "Блок с минимальным количеством переходов",
"max_hops": "1",
"goto": "SvgjsG7224"
},
"pos": {
"x": 0,
"y": 7
},
"cases": {
"next": "SvgjsG7224"
}
}
},
"description": ""
}

Значения параметров для блока Play

  1. <Строка, имя блока> — "play";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "play": <Список от 1 до 20 элементов, проигрываемые файлы>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
    3. "replay": <Строка, число от 1 до 5 (количество проигрывания списка файлов)>.
  3. <Объект, множество переходов в другие блоки>:
    1. "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

  1. <Строка, имя блока> — "numbers";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "numbers": <Список от 1 до 20 элементов, номера телефонов>:
      • {"list_id":<Строка, номер телефона>}

        Номера телефона используется для сравнения с номером вызывающего абонента:
        ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F;
        
        Пример: 123ABC23
  3. <Объект, множество переходов в другие блоки>:
    1. "Yes": <Строка, id блока>;
    2. "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

  1. <Строка, имя блока> — "time";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "time_ranges": <Список от 1 до 20 элементов, диапазоны времени>:
      • {"time":<Строка, диапазон времени в формате "HH:MM-HH:MM,DD{1,7}">}.
  3. <Объект, множество переходов в другие блоки>:
    1. "Yes": <Строка, id блока>;
    2. "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

  1. <Строка, имя блока> — "digitmap";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "digitmap": <Список от 1 до 20 элементов, маски номеров>:
      • {"mask":<Строка от 1 до 25 элементов, маска номера телефона>}

        Маска номера телефона используется для сравнения с номером вызывающего абонента:
        ‘X’,‘х’ - любая цифра;
        ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F;
        ‘[ ]’ - диапазон или перечисление;
        ‘{min,max}’ - количество повторений;
        ‘.’ - неограниченное количество повторений;
        ‘|’ - разделитель шаблонов
        
        Пример: 01|02*.D{3,3}[0-9]
  3. <Объект, множество переходов в другие блоки>:
    1. "Yes": <Строка, id блока>;
    2. "No": <Строка, id блока>.
 Пример блока Digitmap
{


  "actions": {
"SvgjsG7238": {
"name": "digitmap",
"params": {
"description": "Блок Digitmap с минимальной маской",
"digitmap": [
{
"mask": "1"
}
]
},
"pos": {
"x": 0,
"y": 4
},
"cases": {
"Yes": "SvgjsG7245",
"No": "SvgjsG7287"
}
}
},
"description": ""
}

Значения параметров для блока Dial

  1. <Строка, имя блока> — "dial";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "numbers": <Строка, номер телефона>.

      Номера телефона на который будет сделан вызов:
      ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F;
      
      Пример: 123ABC23
  3. <Объект, множество переходов в другие блоки>:
    1. "Busy/No answer": <Строка, id блока>;
    2. "Error": <Строка, id блока>.
 Пример блока Dial
{
"actions": {
"SvgjsG5584": {
"name": "dial",
"params": {
"description": "Блок dial с минимальным размером номера",
"numbers": "1"
},
"pos": {
"x": 1,
"y": 3
},
"cases": {
"Busy/No answer": "undefined",
"Error": "undefined"
}
}
},
"description": ""
}

Значения параметров для блока Caller Info

  1. <Строка, имя блока> — "caller-info";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "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]
  3. <Объект, множество переходов в другие блоки>:
    1. "next": <Строка, id блока>.
 Пример блока Caller Info
{
"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

  1. <Строка, имя блока> — "fax";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание(назначения) блока>;
    2. "email": <Строка, email (передача факса на данный email)>;
    3. "subject_message": <Строка, заголовок сообщения>">;
    4. "body_message": "Строка, тело сообщения";
    5. В заголовке сообщения и в теле сообщения допускается использование тегов:

      [SData] - "Дата отправления";
      [SPName] - "Имя отправляющей стороны";
      [SPNumber] - "Номер отправляющей стороны";
      [RPName] - "Имя принимающей стороны";
      [RPNumber] - "Номер принимающей стороны".
    6. "pause": <Число, от 0 до 15 (длительность паузы, сек)>.
  3. <Объект, множество переходов в другие блоки>:
    1. "Yes": <Строка, id блока>;
    2. "No": <Строка, id блока>.
 Пример блока Fax
{
"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

  1. <Строка, имя блока> — "rec";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>.
  3. <Объект, множество переходов в другие блоки>:
    1. "next": <Строка, id блока>.

      {
        "actions": {
          "SvgjsG7259": {
            "name": "rec",
            "params": {
              "description": "Блок Rec"
            },
            "pos": {
              "x": 0,
              "y": 6
            },
            "cases": {
              "next": "undefined"
            }
          }
        },
        "description": ""
      }

Значения параметров для блока Queue

  1. <Строка, имя блока> — "queue";
  2. <Объект, мн-во параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "queue_id": <Строка, имя очереди>;
    3. "agents": <Список от 1 до 50 элементов, агенты>:

      Формат агента:
          {
            "agent":<Строка, имя агента>
          }
    4. "fone": <Список из 1 элемента, проигрываемый файл (в фоне)>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
    5. "inqueue": <Список из 1 элемента, проигрываемый файл (при постановке в очередь)>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
    6. "predicted_time": <Список из 1 элемента, проигрываемый файл (предсказываемое время ожидания в очереди)>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
    7. "queue_length": <Число, длина очереди от 0 до 9999>;
    8. "wait_timeout": <Число, от 0 до 3600 (, сек)>;
    9. "distribution_mode": <Строка, режим распределения вызовов>:

      Режим распределения вызовов из очереди по агентам:
      
      "random" - случайное распределение;
      "mia"    - наиболее свободный агент (агент свободный от обслуживания нагрузки дольше других);
      "loa"    - наименее занятый агент (агент обслуживший меньшую нагрузку за определенный промежуток времени).
  3. <Объект, множество переходов в другие блоки>:
    1. "Error": <Строка, id блока>;
    2. "Full": <Строка, id блока>;
    3. "Ok": <Строка, id блока>.
 Пример блока Queue
{
"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

  1. <Строка, имя блока> — "outgoing-call";
  2. <Объект, мн-во параметров блока>:
    1. "description": <Строка, описание (назначения) блока>.
  3. <Объект, мн-во переходов в другие блоки>:
    1. "next": <Строка, id блока>.
 Пример блока Outgoing call
{
"actions": {
"SvgjsG1415": {
"name": "outgoing-call",
"params": {
"description": ""
},
"pos": {
"x": 1,
"y": 0
},
"cases": {
"next": "SvgjsG1422"
}
}
},
"description": "Исходящий вызов"
}

Значения параметров для блока Connect

  1. <Строка, имя блока> — "connect";
  2. <Объект, мн-во параметров блока>:
    1. "description": <Строка, описание (назначения) блока>;
    2. "join_type": <Строка, направление вызова>:

      Направление вызова:
      
      "join_number" - на номер, который указан в параметре "join_number";
      "origination" - на номер вызывающего абонента (CgPN);
      "termination" - но номер вызываемого абонента (CdPN).
    3. "join_number": <Строка, номер телефона (только если в "join_type" присутствует "join_number")>:

      Номера телефона используется для сравнения с номером вызывающего абонента:
      ‘0-9*#A-F’ - цифры 0-9, *, #, буквы A-F;
      
      Пример: 123ABC23
    4. "greeting": <Список от 1 до 20 элементов, проигрываемые файлы>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
    5. "fone": <Список от 1 до 20 элементов, проигрываемые файлы>:

      Формат проигрываемого файла:
          {
            "file": <Строка, имя файла>,
            "group": <Строка, имя папки>,
            "location": <Строка, тип файла>
          }
      , где *<Строка, тип файла>*:
      * "system" - системный файл;
      * "domain" - пользовательский файл.
  3. <Объект, множество переходов в другие блоки>:
    1. "Busy/No answer": <Строка, id блока>;
    2. "Error": <Строка, id блока>;
    3. "Ok": <Строка, id блока>.
 Пример 1 блока Connect

{
  "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": ""
}


 Пример 2 блока Connect

{
  "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

  1. <Строка, имя блока> — "talk";
  2. <Объект, множество параметров блока>:
    1. "description": <Строка, описание (назначения) блока>.
  3. <Объект, множество переходов в другие блоки>:
  • У данного блока нету переходов в другие блоки.
 Пример блока Talk

{
  "actions": {
    "SvgjsG1471": {
      "name": "talk",
      "params": {
        "description": "Блок Talk"
      },
      "pos": {
        "x": 2,
        "y": 8
      },
      "cases": {}
    }
  },
  "description": ""
}