Oktell Web-Socket Protocol — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 390: Строка 390:
  
 
====Обмен состояниями пользователей====
 
====Обмен состояниями пользователей====
 
-------------------------------------------------
 
<span style="color:green">>>> '''userstatechanged'''</span>
 
 
Сообщение из Oktell в CRM о смене состояния пользователя в Oktell. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.
 
 
<pre>
 
[
 
"userstatechanged",
 
{
 
  "qid": "66F8D479-0234-47DF-B043-3A065FF464A7",
 
  "userlogin": "Иванов",
 
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 
  "userstateid": 2,
 
  "onredirect": true,
 
  "onlunch": false,
 
  "oncallcenter": false
 
}
 
]
 
</pre>
 
 
 
-------------------------------------------------
 
<span style="color:green"><<< '''setuserstate'''</span>
 
 
Запрос из CRM к Oktell на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение userstatechanged.
 
 
<pre>
 
[
 
"setuserstate",
 
{
 
  "qid": "2A45010A-8EEA-4876-90CB-F062459D4BE2",
 
  "userlogin": "Иванов",
 
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 
  "userstateid": 2,
 
  "onredirect": false,
 
  "lunchreasonid": 120,
 
  "lunchreasonmsg": ""
 
}
 
]
 
</pre>
 
<pre>
 
//* lunchreasonid и lunchreasonmsg - расширение для будущей статистики, устанавливают причину перерыва.
 
id - если причина одна из стандартных. msg - если что-то уникальное юзер ввел.
 
</pre>
 
  
  
Строка 587: Строка 542:
 
<span style="color:green">>>> '''shownotifymessage'''</span>
 
<span style="color:green">>>> '''shownotifymessage'''</span>
  
Сообщение(запрос) из Oktell об уведомлении пользователя по аналогии с всплывающими Oktellовскими уведомлениями
+
Команда из Oktell в CRM об уведомлении пользователя по аналогии с всплывающими уведомлениями клиентского приложения Oktell
  
 
<pre>
 
<pre>
Строка 596: Строка 551:
 
   "userlogin": "Иванов",
 
   "userlogin": "Иванов",
 
   "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 
   "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
   "sender": "0263C7BF-DEB3-406F-9CF9-6F56D828C755",
+
   "id": "A33027E1-096F-38B8-1198-BB4D7C15823A",
 +
  "sender": "АТС",
 
   "text": "Петров",
 
   "text": "Петров",
 +
  "savedb": "true",
 
   "autohide": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 
   "autohide": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 +
  "dtformat": "dd.MM.yyyy HH:mm:ss",
 +
  "dt": "25.09.2011 13:07:12",
 
   "type": 262144,
 
   "type": 262144,
 
   "backcolor": "00FF0000",
 
   "backcolor": "00FF0000",
Строка 606: Строка 565:
 
</pre>
 
</pre>
 
<pre>
 
<pre>
 +
//* id - идентификатор сообщения. Присутствует, если сообщение сохранено в БД.
 +
//* savedb: true|false. Сохранено ли сообщение в БД.
 +
//* dt - дата/время генерации уведомления.
 
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только  
 
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только  
 
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)
 
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)
 +
//* backcolor - hex AARRGGBB
 +
//* type - тип сообщения из флагового списка кратных двойке кодов
 +
</pre>
 +
 +
 +
-------------------------------------------------
 +
<span style="color:green"><<< '''setnotifyshown'''</span>
 +
 +
Запрос из CRM в Oktell об установке признака прочтенности уведомления.
 +
 +
<pre>
 +
[
 +
"setnotifyshown",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "id": "A33027E1-096F-38B8-1198-BB4D7C15823A",
 +
  "wasshown": false
 +
}
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* id - идентификатор сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только
 +
            одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)
 +
//* ids - список идентификаторов отображенных уведомлений.
 
//* backcolor - hex AARRGGBB
 
//* backcolor - hex AARRGGBB
 
//* type - тип сообщения из флагового списка кратных двойке кодов
 
//* type - тип сообщения из флагового списка кратных двойке кодов
Строка 814: Строка 803:
  
 
<pre>
 
<pre>
  [
+
[
    "phoneevent_acmcallstopped",
+
"phoneevent_acmcallstopped",
    {
+
{
    "qid": "410B1930-423E-4632-B3DE-54EC48C0E8A0",
+
  "qid": "410B1930-423E-4632-B3DE-54EC48C0E8A0",
    "userlogin": "Иванов",
+
  "userlogin": "Иванов",
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
+
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
    }
+
}
  ]
+
]
 
</pre>
 
</pre>
  
Строка 832: Строка 821:
  
 
<pre>
 
<pre>
  [
+
[
    "phoneevent_faxstarted",
+
"phoneevent_faxstarted",
    {
+
{
    "qid": "28979AE8-8E06-4EED-9114-98CB126CA8F4",
+
  "qid": "28979AE8-8E06-4EED-9114-98CB126CA8F4",
    "userlogin": "Иванов",
+
  "userlogin": "Иванов",
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
+
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
    "opponentlineid": "BC1FD50B-651F-459D-B659-28230E919673",
+
  "opponentlineid": "BC1FD50B-651F-459D-B659-28230E919673",
    "faxdirection": "send",
+
  "faxdirection": "send",
    "description": ""
+
  "description": ""
    }
+
}
  ]
+
]
 
</pre>
 
</pre>
  
Строка 853: Строка 842:
  
 
<pre>
 
<pre>
  [
+
[
    "phoneevent_faxstopped",
+
"phoneevent_faxstopped",
    {
+
{
    "qid": "324CD087-BC2D-4FF3-A9BD-86A7276A4DED",
+
  "qid": "324CD087-BC2D-4FF3-A9BD-86A7276A4DED",
    "userlogin": "Иванов",
+
  "userlogin": "Иванов",
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
+
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
    "result": 0,
+
  "result": 0,
    "error": 65289,
+
  "error": 65289,
    "errormsg": "NoFaxPages"
+
  "errormsg": "NoFaxPages"
    }
+
}
  ]
+
]
 +
</pre>
 +
<pre>
 +
//* error: список FaxError
 
</pre>
 
</pre>
  
Строка 874: Строка 866:
  
 
<pre>
 
<pre>
  [
+
[
    "phoneevent_faxreceived",
+
"phoneevent_faxreceived",
    {
+
{
    "qid": "C20E48DF-628D-4954-ADDE-D2C3B31C6700",
+
  "qid": "C20E48DF-628D-4954-ADDE-D2C3B31C6700",
    "userlogin": "Иванов",
+
  "userlogin": "Иванов",
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "result": 1,
+
  "result": 1,
    "files": [
+
  "files": [
      {
+
  {
      "filename": "",
+
    "filename": "",
      "filesize": 172934,
+
    "filesize": 172934,
      "filelink": "\/temp\/receivedfax\/a802d3ea\/img01.tiff",
+
    "filelink": "\/temp\/receivedfax\/a802d3ea\/img01.tiff",
      "availabletill": "2011-03-27 23:39:18",
+
    "availabletill": "2011-03-27 23:39:18",
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
    ]
+
  ]
    }
+
}
  ]
+
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
  //* Даже если result=0, могут быть частично полученные файлы.
+
//* Даже если result=0, могут быть частично полученные файлы.
 
</pre>
 
</pre>
  
Строка 917: Строка 909:
 
   "number": "425",
 
   "number": "425",
 
   "direction": "int",
 
   "direction": "int",
   "sequence": "abonent"
+
   "sequence": "abonent",
 +
  "intercom": false
 
  }
 
  }
 
]
 
]
Строка 924: Строка 917:
 
//* direction: int, ext, undefined (внутрь, наружу, автоопределение)
 
//* direction: int, ext, undefined (внутрь, наружу, автоопределение)
 
//* sequence: abonent, user (сначала до абонента, сначала до пользователя)
 
//* sequence: abonent, user (сначала до абонента, сначала до пользователя)
 +
//* intercom: true|false (интерком-вызов, обычный вызов)
 
</pre>
 
</pre>
  
 
+
 
 
<span style="color:green">>>> '''pbxautocallstartresult'''</span>
 
<span style="color:green">>>> '''pbxautocallstartresult'''</span>
  
Строка 956: Строка 950:
 
//*  cntControlNotReady = 5, //Режим не доделан.
 
//*  cntControlNotReady = 5, //Режим не доделан.
 
//*  cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервер сам будет определять  
 
//*  cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервер сам будет определять  
  направление звонка, это вообще не будет задействовано)
+
  направление звонка, это вообще не будет задействовано)
 
</pre>
 
</pre>
  
Строка 990: Строка 984:
 
   "number": "425",
 
   "number": "425",
 
   "direction": "int",
 
   "direction": "int",
   "sequence": "abonent"
+
   "sequence": "abonent",
 +
  "intercom": false 
 
  }
 
  }
 
]
 
]
 
</pre>
 
</pre>
 
+
 
  
 
<span style="color:green">>>> '''pbxtransfercallresult'''</span>
 
<span style="color:green">>>> '''pbxtransfercallresult'''</span>
Строка 1064: Строка 1059:
 
   "userlogin": "Иванов",
 
   "userlogin": "Иванов",
 
   "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 
   "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "mode": "default"
 
  }
 
  }
 
]
 
]
 
</pre>
 
</pre>
 +
<pre>
 +
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.
 +
abort - обрыв текущему и переключение на того кто на удержании
 +
switch - возврат к тому, кто на удержании, с размещением текущего на удержании
 +
next - обрыв текущему и переход сразу в набор номера
 +
</pre>
 +
 +
 +
-------------------------------------------------
 +
<span style="color:green"><<< '''pbxclearflash'''</span>
 +
 +
Запрос из CRM в Oktell на обрыв линии, находящейся на удержании.
 +
 +
<pre>
 +
[
 +
"pbxclearflash",
 +
{
 +
  "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
}
 +
]
 +
]
 +
</pre>
 +
 +
 +
-------------------------------------------------
 +
<span style="color:green"><<< '''pbxfaxreceive'''</span>
 +
 +
Запрос из CRM в Oktell на переключение в прием факса.
 +
 +
<pre>
 +
[
 +
"pbxfaxreceive",
 +
{
 +
  "qid": "59305AD1-40A5-476A-B76D-2DAB1F2A89D3",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "linkmode": "simple"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы
 +
в событии об окончании приема.
 +
full - вернуть абсолютную ссылку на скачивание через http.
 +
simple - вернуть относительную ссылку на скачивание.
 +
При формировании абсолютной ссылки в качестве доменного имени берется значение из
 +
раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
 +
</pre>
 +
 +
 +
<span style="color:green"><<< '''pbxfaxstop'''</span>
 +
 +
Запрос из CRM в Oktell на прерывание приема/передачи факса.
 +
 +
<pre>
 +
[
 +
"pbxfaxstop",
 +
{
 +
  "qid": "59305AD1-40A5-476A-B76D-2DAB1F2A89D3",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
}
 +
]
 +
</pre>
 +
 +
 +
-------------------------------------------------
 +
<span style="color:green"><<< '''pbxmakeflash'''</span>
 +
 +
Запрос из CRM в Oktell на программную эмуляцию флэш.
 +
 +
<pre>
 +
[
 +
"pbxmakeflash",
 +
{
 +
  "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "mode": "default"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.
 +
abort - обрыв текущему и переключение на того кто на удержании
 +
switch - возврат к тому, кто на удержании, с размещением текущего на удержании
 +
next - обрыв текущему и переход сразу в набор номера
 +
</pre>
 +
  
  
Строка 1075: Строка 1162:
 
-------------------------------------------------
 
-------------------------------------------------
 
<span style="color:green"><<< '''startsvcscript'''</span>
 
<span style="color:green"><<< '''startsvcscript'''</span>
 +
<span style="color:green"><<< '''execsvcscript'''</span>
  
Запрос из CRM в Oktell на запуск служебного сценария.
+
Запрос из CRM в Oktell на запуск служебного сценария. ''startsvcscript'' - от имени пользователя, ''execsvcscript'' - без указания пользователя от имени сервера.
  
 
<pre>
 
<pre>
Строка 1096: Строка 1184:
 
]
 
]
 
</pre>
 
</pre>
 +
<pre>
 +
[
 +
"execsvcscript",
 +
{
 +
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
 +
  "scriptname": "Служебный сценарий получения почты",
 +
  "startparam1": "значение параметра 1",
 +
  "startparam2": "значение параметра 2",
 +
  "startparam3": "значение параметра 3",
 +
  "startparam4": "значение параметра 4",
 +
  "startparam5": "значение параметра 5",
 +
  "waitresponse": true,
 +
  "waittimeoutsec": 10
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* scriptname - название сценария в общем разделе.
 +
//* startparamN - строковое значение соответствующего параметра.
 +
При необходимости передать больше параметров следует объединять параметры в одну строку
 +
с использованием символа-разделителя, а в самом сценарии производить обратную операцию.
 +
//* waitresponse - ожидать ли ответа.
 +
//* waittimeoutsec - таймаут ожидания ответа в секундах. 0 - вечно.
 +
</pre>
 +
  
 
 
 
<span style="color:green">>>> '''startsvcscriptresult'''</span>
 
<span style="color:green">>>> '''startsvcscriptresult'''</span>
  
Строка 1117: Строка 1229:
 
</pre>
 
</pre>
 
<pre>
 
<pre>
//*   error: 10 - файл не найден, 11 - исключение, 12 - таймаут
+
[
 +
"execsvcscriptresult",
 +
{
 +
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
 +
  "scriptname": "Служебный сценарий получения почты",
 +
  "result": 0,
 +
  "returnvalue": "присвоенный в сценарии результат",
 +
  "error": 10
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* error: 10 - файл не найден, 11 - исключение, 12 - таймаут
 +
//*  returnvalue - возвращаемый результат сценария (если сценарий исполнился, и его завершения удалось дождаться)
 
</pre>
 
</pre>
  
Строка 1474: Строка 1599:
 
<span style="color:green"><<< '''confhandleevent'''</span>
 
<span style="color:green"><<< '''confhandleevent'''</span>
  
Подписка/отписка на указанную категорию событий сервера конференций.
+
Запрос из CRM к Oktell. Подписка/отписка на указанную категорию событий сервера конференций.
  
 
<pre>
 
<pre>
Строка 1491: Строка 1616:
 
<pre>
 
<pre>
 
//* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates
 
//* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates
// предполагается, что в общем случае инфа идет только о списке конференций (conferences)
+
              предполагается, что в общем случае инфа идет только о списке конференций (conferences);
//          когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors)
+
                когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors);
// когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения -  
+
                когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения -  
о состояниях всех пользователей (userstates)
+
                  о состояниях всех пользователей (userstates).
//        Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться,  
+
              Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться,  
чтобы не заваливать канал порожняком.
+
                  чтобы не заваливать канал порожняком.
 
//* handle - true|false - подписаться/отписаться
 
//* handle - true|false - подписаться/отписаться
 
</pre>
 
</pre>
Строка 1633: Строка 1758:
  
 
<pre>
 
<pre>
    [
+
[
    "getconferencesresult",
+
"getconferencesresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferencelist": [
+
  "conferencelist": [
      {
+
  {
        "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
        "room": 884,
+
    "room": 884,
        "name": "Планерка",
+
    "name": "Планерка",
        "description": "",
+
    "description": "",
        "accessmode": 11,
+
    "accessmode": 11,
        "accessmodestr": "Free",
+
    "accessmodestr": "Free",
        "isselector": true,
+
    "isselector": true,
        "record": true,
+
    "record": true,
        "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
        "creatorlogin": "Иванов",
+
    "creatorlogin": "Иванов",
        "creatorname": "Иван Иванович Иванов",  
+
    "creatorname": "Иван Иванович Иванов",  
        "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "directorlogin": "Петров",
+
    "directorlogin": "Петров",
        "directorname": "Петр Петрович Петров",
+
    "directorname": "Петр Петрович Петров",
        "timestart": "2011-04-03 17:58:22",
+
    "timestart": "2011-04-03 17:58:22",
        "canvieweachother": true,
+
    "canvieweachother": true,
        "everyonecaninvite": true,
+
    "everyonecaninvite": true,
        "recordrights": 2,
+
    "recordrights": 2,
        "recordrightsstr": "Competitors",
+
    "recordrightsstr": "Competitors",
        "isghost": false,
+
    "isghost": false,
        "ghostmode": 11,
+
    "ghostmode": 11,
        "ghostmodestr": "Monitor"
+
    "ghostmodestr": "Monitor"
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1678: Строка 1803:
  
 
<pre>
 
<pre>
    [
+
[
    "getconferencecompetitors",
+
"getconferencecompetitors",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22"
+
  "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1695: Строка 1820:
  
 
<pre>
 
<pre>
    [
+
[
    "getconferencecompetitorsresult",
+
"getconferencecompetitorsresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
+
  "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
      "competitorlist": [
+
  "competitorlist": [
      {
+
  {
        "competitorid": "65AC0E98-64DE-41CF-B609-D00A4C8B07FD",
+
    "competitorid": "65AC0E98-64DE-41CF-B609-D00A4C8B07FD",
        "chainid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
+
    "chainid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
        "sessionid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
+
    "sessionid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "username": "Петр Петрович Петров",
+
    "username": "Петр Петрович Петров",
        "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
    "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
        "linenumber": "17004",
+
    "linenumber": "17004",
        "number": "472",
+
    "number": "472",
        "intnumber": "472",
+
    "intnumber": "472",
        "extnumber": "",
+
    "extnumber": "",
        "confstate": 11,
+
    "confstate": 11,
        "confstatestr": "OnlineTalking",
+
    "confstatestr": "OnlineTalking",
        "wanttalk": false,
+
    "wanttalk": false,
        "isdirector": true,
+
    "isdirector": true,
        "iscreator": false,
+
    "iscreator": false,
        "isghost": false,
+
    "isghost": false,
        "isghostmajor": false,
+
    "isghostmajor": false,
        "islifebuoy": false
+
    "islifebuoy": false
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1738: Строка 1863:
  
 
<pre>
 
<pre>
    [
+
[
    "getusersforconferenceinvitelist",
+
"getusersforconferenceinvitelist",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1754: Строка 1879:
  
 
<pre>
 
<pre>
    [
+
[
    "getusersforconferenceinvitelistresult",
+
"getusersforconferenceinvitelistresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "possiblecompetitorlist": [
+
  "possiblecompetitorlist": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "username": "Петр Петрович Петров",
+
    "username": "Петр Петрович Петров",
        "groupid": "F72C315A-F9EA-471E-A679-D4BA4797DB51",
+
    "groupid": "F72C315A-F9EA-471E-A679-D4BA4797DB51",
        "groupname": "Руководство"
+
    "groupname": "Руководство"
        "userstate": 5,
+
    "userstate": 5,
        "userstatestr": "usFullbusy",
+
    "userstatestr": "usFullbusy",
        "isredirect": false,
+
    "isredirect": false,
        "islunch": false,
+
    "islunch": false,
        "inconference": true,
+
    "inconference": true,
        "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
+
    "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
        "confstate": 11,
+
    "confstate": 11,
        "confstatestr": "OnlineTalking"
+
    "confstatestr": "OnlineTalking"
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ],
+
  ],
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1791: Строка 1916:
  
 
<pre>
 
<pre>
    [
+
[
    "createnewconference",
+
"createnewconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conference": {
+
  "conference": {
      "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
+
  "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
      "room": 578
+
  "room": 578
      "name": "Совещание с заказчиком",
+
  "name": "Совещание с заказчиком",
      "description": "",
+
  "description": "",
      "accessmode": "free",
+
  "accessmode": "free",
      "isselector": true,
+
  "isselector": true,
      "record": true,
+
  "record": true,
      "recordrights": "selected",
+
  "recordrights": "selected",
      "everyonecaninvite": true,
+
  "everyonecaninvite": true,
      "canvieweachother": true
+
  "canvieweachother": true
      },
+
  },
      "competitors": [
+
  "competitors": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
        "intnumber": "472",
+
    "intnumber": "472",
        "extnumber": "89047289889",
+
    "extnumber": "89047289889",
        "cantalk": true
+
    "cantalk": true
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ],
+
  ],
      "recordusers": [
+
  "recordusers": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 +
</pre>
 +
<pre>
 +
//* conference:accessmode - free|shared|closed (свободный вход, вход по запросу, вход запрещен)
 +
//* conference:recordrights - director|competitors|selected (только управляющий, все участники, избранные участники)
 +
Определяет, кто может прослушивать запись конференции.
 +
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один
 +
параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
 +
//* список recordusers следует указывать, если conference:recordrights=selected.
 
</pre>
 
</pre>
  
Строка 1839: Строка 1972:
  
 
<pre>
 
<pre>
    [
+
[
    "createnewconferenceresult",
+
"createnewconferenceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 0,
+
  "result": 0,
      "error": 1,
+
  "error": 1,
      "errormsg": "alreadyexists",
+
  "errormsg": "alreadyexists",
    }
+
}
    ]
+
]
</pre>
+
<pre>
+
//* conference:accessmode - free|shared|closed
+
//* conference:recordrights - director|competitors|selected
+
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один
+
параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
+
//* список recordusers имеет смысл только когда conference:recordrights=selected.
+
 
</pre>
 
</pre>
  
Строка 1866: Строка 1992:
  
 
<pre>
 
<pre>
    [
+
[
    "setupexistingconference",
+
"setupexistingconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conference": {
+
  "conference": {
      "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
+
  "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
      "room": 578
+
  "room": 578
      "name": "Совещание с заказчиком",
+
  "name": "Совещание с заказчиком",
      "description": "",
+
  "description": "",
      "accessmode": "free",
+
  "accessmode": "free",
      "isselector": true,
+
  "isselector": true,
      "recordrights": "selected",
+
  "recordrights": "selected",
      "everyonecaninvite": true,
+
  "everyonecaninvite": true,
      "canvieweachother": true,
+
  "canvieweachother": true,
      "ghostmode": "monitor"
+
  "ghostmode": "monitor"
      },
+
  },
      "recordusers": [
+
  "recordusers": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1902: Строка 2028:
  
 
<pre>
 
<pre>
    [
+
[
    "setupexistingconferenceresult",
+
"setupexistingconferenceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 0,
+
  "result": 0,
      "error": 1,
+
  "error": 1,
      "errormsg": "notfound",
+
  "errormsg": "notfound",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
    //* conference:accessmode - free|shared|closed
+
//* conference:accessmode - free|shared|closed
    //* conference:recordrights - director|competitors|selected
+
//* conference:recordrights - director|competitors|selected
    //* conference:ghostmode - monitor|help|talk
+
//* conference:ghostmode - monitor|help|talk
    //* список recordusers имеет смысл только когда conference:recordrights=selected.
+
//* список recordusers имеет смысл только когда conference:recordrights=selected.
 
</pre>
 
</pre>
  
Строка 1928: Строка 2054:
  
 
<pre>
 
<pre>
    [
+
[
    "getconferenceinfo",
+
"getconferenceinfo",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 1945: Строка 2071:
  
 
<pre>
 
<pre>
    [
+
[
    "getconferenceinforesult",
+
"getconferenceinforesult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 1,
+
  "result": 1,
      "conference": {
+
  "conference": {
        "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
        "room": 884,
+
    "room": 884,
        "name": "Планерка",
+
    "name": "Планерка",
        "description": "",
+
    "description": "",
        "accessmode": 11,
+
    "accessmode": 11,
        "accessmodestr": "Free",
+
    "accessmodestr": "Free",
        "isselector": true,
+
    "isselector": true,
        "record": true,
+
    "record": true,
        "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
        "creatorlogin": "Иванов",
+
    "creatorlogin": "Иванов",
        "creatorname": "Иван Иванович Иванов",  
+
    "creatorname": "Иван Иванович Иванов",  
        "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "directorlogin": "Петров",
+
    "directorlogin": "Петров",
        "directorname": "Петр Петрович Петров",
+
    "directorname": "Петр Петрович Петров",
        "timestart": "2011-04-03 17:58:22",
+
    "timestart": "2011-04-03 17:58:22",
        "canvieweachother": true,
+
    "canvieweachother": true,
        "everyonecaninvite": true,
+
    "everyonecaninvite": true,
        "recordrights": 2,
+
    "recordrights": 2,
        "recordrightsstr": "Competitors",
+
    "recordrightsstr": "Competitors",
        "isghost": false,
+
    "isghost": false,
        "ghostmode": 11,
+
    "ghostmode": 11,
        "ghostmodestr": "Monitor"
+
    "ghostmodestr": "Monitor"
      },
+
  },
      "competitors": [
+
  "competitors": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
        "intnumber": "472",
+
    "intnumber": "472",
        "extnumber": "89047289889",
+
    "extnumber": "89047289889",
        "cantalk": true
+
    "cantalk": true
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ],
+
  ],
      "recordusers": [
+
  "recordusers": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2007: Строка 2133:
  
 
<pre>
 
<pre>
    [
+
[
    "stopconference",
+
"stopconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
 
 
Строка 2024: Строка 2150:
  
 
<pre>
 
<pre>
    [
+
[
    "stopconferenceresult",
+
"stopconferenceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 0,
+
  "result": 0,
      "error": 1,
+
  "error": 1,
      "errormsg": "accessdenied"
+
  "errormsg": "accessdenied"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2045: Строка 2171:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetvoiceparams",
+
"confsetvoiceparams",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "competitor": {
+
  "competitor": {
      "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
+
  "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
      "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "userlogin": "Петров",
+
  "userlogin": "Петров",
      "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
  "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
      "cantalk": true,
+
  "cantalk": true,
      "canlisten": true,
+
  "canlisten": true,
      "ghosthelp": false
+
  "ghosthelp": false
      }
+
  }
    }
+
}
    ]
+
]
 +
</pre>
 +
<pre>
 +
//* competitor - указывает на одного участника конференции.
 +
/    достаточно/следует указывать только один из набора определяющих участника идентификаторов
 +
{competitorid, userid|userlogin, lineid}
 +
 
 +
//*  competitor:cantalk - может ли говорить
 +
//*  competitor:canlisten - может ли слышать
 +
//*  competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов -
 +
может ли слышать подключившегося супервизора
 
</pre>
 
</pre>
  
Строка 2071: Строка 2207:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetvoiceparamsresult",
+
"confsetvoiceparamsresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 0,
+
  "result": 0,
      "error": 1,
+
  "error": 1,
      "errormsg": "accessdenied"
+
  "errormsg": "accessdenied"
    }
+
}
    ]
+
]
</pre>
+
<pre>
+
//*  competitor:cantalk - может ли говорить
+
//*  competitor:canlisten - может ли слышать
+
//*  competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов -
+
может ли слышать подключившегося супервизора
+
//*  достаточно/следует указывать только один из набора определяющих участника идентификаторов
+
{competitorid, userid|userlogin, lineid}
+
 
</pre>
 
</pre>
  
Строка 2100: Строка 2228:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetwanttalk",
+
"confsetwanttalk",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "wanttalk": true
+
  "wanttalk": true
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2118: Строка 2246:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetwanttalkresult",
+
"confsetwanttalkresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2137: Строка 2265:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetghostmode",
+
"confsetghostmode",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "ghostmode": "help",
+
  "ghostmode": "help",
    }
+
}
    ]
+
]
 +
</pre>
 +
<pre>
 +
//* ghostmode - monitor, help, conference (подслушивание, помощь, конференция)
 
</pre>
 
</pre>
 
 
 
 
<span style="color:green">>>> '''confsetghostmoderesult'''</span>
 
<span style="color:green">>>> '''confsetghostmoderesult'''</span>
Строка 2155: Строка 2285:
  
 
<pre>
 
<pre>
    [
+
[
    "confsetghostmoderesult",
+
"confsetghostmoderesult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2171: Строка 2301:
 
<span style="color:green"><<< '''exitconference'''</span>
 
<span style="color:green"><<< '''exitconference'''</span>
  
Запрос из CRM в Oktell от имени любого участника на выход из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне.
+
Запрос из CRM в Oktell на вывод авторизованного пользователя из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне.
  
 
<pre>
 
<pre>
    [
+
[
    "exitconference",
+
"exitconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2191: Строка 2321:
  
 
<pre>
 
<pre>
    [
+
[
    "exitconferenceresult",
+
"exitconferenceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2210: Строка 2340:
  
 
<pre>
 
<pre>
  [
+
[
    "confdisconnectcompetitor",
+
"confdisconnectcompetitor",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "competitor": {
+
  "competitor": {
      "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
+
  "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
      "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "userlogin": "Петров",
+
  "userlogin": "Петров",
      "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
  "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
      }
+
  }
    }
+
}
    ]
+
]
 +
</pre>
 +
<pre>
 +
//* competitor - указывает на одного участника конференции.
 +
/    достаточно/следует указывать только один из набора определяющих участника идентификаторов
 +
{competitorid, userid|userlogin, lineid}
 
</pre>
 
</pre>
 
 
Строка 2233: Строка 2368:
  
 
<pre>
 
<pre>
    [
+
[
    "confdisconnectcompetitorresult",
+
"confdisconnectcompetitorresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2251: Строка 2386:
 
Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference
 
Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference
 
<pre>
 
<pre>
  [
+
[
    "enterconference",
+
"enterconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2268: Строка 2403:
  
 
<pre>
 
<pre>
    [
+
[
    "enterconferenceresult",
+
"enterconferenceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2287: Строка 2422:
  
 
<pre>
 
<pre>
    [
+
[
    "confpermitdenyentrance",
+
"confpermitdenyentrance",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "competitor": {
+
  "competitor": {
      "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
+
  "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
      "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "userlogin": "Петров",
+
  "userlogin": "Петров",
      "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
  "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
      "permit": true
+
  "permit": true
      }
+
  }
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
+
<pre>
 +
//* competitor - указывает на одного участника конференции.
 +
/    достаточно/следует указывать только один из набора определяющих участника идентификаторов
 +
{competitorid, userid|userlogin, lineid}
 +
</pre>
 +
 
  
 
<span style="color:green">>>> '''confpermitdenyentranceresult'''</span>
 
<span style="color:green">>>> '''confpermitdenyentranceresult'''</span>
Строка 2311: Строка 2451:
  
 
<pre>
 
<pre>
    [
+
[
    "confpermitdenyentranceresult",
+
"confpermitdenyentranceresult",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2330: Строка 2470:
  
 
<pre>
 
<pre>
    [
+
[
    "invitetoconference",
+
"invitetoconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "competitors": [
+
  "competitors": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
        "intnumber": "472",
+
    "intnumber": "472",
        "extnumber": "89047289889",
+
    "extnumber": "89047289889",
        "cantalk": true
+
    "cantalk": true
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 +
</pre>
 +
<pre>
 +
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один
 +
параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
 
</pre>
 
</pre>
  
Строка 2359: Строка 2503:
  
 
<pre>
 
<pre>
    [
+
[
    "invitetoconference",
+
"invitetoconference",
    {
+
{
      "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
+
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
</pre>
+
<pre>
+
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один
+
параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
+
 
</pre>
 
</pre>
  
Строка 2386: Строка 2526:
  
 
<pre>
 
<pre>
    [
+
[
    "conflistchanged",
+
"conflistchanged",
    {
+
{
      "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
+
  "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
      "conferencelist": [
+
  "conferencelist": [
      {
+
  {
        "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
+
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
        "room": 884,
+
    "room": 884,
        "name": "Планерка",
+
    "name": "Планерка",
        "description": "",
+
    "description": "",
        "accessmode": 11,
+
    "accessmode": 11,
        "accessmodestr": "Free",
+
    "accessmodestr": "Free",
        "isselector": true,
+
    "isselector": true,
        "record": true,
+
    "record": true,
        "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
        "creatorlogin": "Иванов",
+
    "creatorlogin": "Иванов",
        "creatorname": "Иван Иванович Иванов",  
+
    "creatorname": "Иван Иванович Иванов",  
        "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "directorlogin": "Петров",
+
    "directorlogin": "Петров",
        "directorname": "Петр Петрович Петров",
+
    "directorname": "Петр Петрович Петров",
        "timestart": "2011-04-03 17:58:22",
+
    "timestart": "2011-04-03 17:58:22",
        "canvieweachother": true,
+
    "canvieweachother": true,
        "everyonecaninvite": true,
+
    "everyonecaninvite": true,
        "recordrights": 2,
+
    "recordrights": 2,
        "recordrightsstr": "Competitors",
+
    "recordrightsstr": "Competitors",
        "isghost": false,
+
    "isghost": false,
        "ghostmode": 11,
+
    "ghostmode": 11,
        "ghostmodestr": "Monitor"
+
    "ghostmodestr": "Monitor"
      },
+
  },
      {...},
+
  {...},
      {...}
+
  {...}
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2429: Строка 2569:
  
 
<pre>
 
<pre>
    [
+
[
    "conf***",
+
"conf***",
    {
+
{
      "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
+
  "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "eventinfo": {
+
  "eventinfo": {
        ***
+
    ***
      }
+
  }
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
    //* confparamschanged,  
+
//* confparamschanged,  
    //* confcompositionchanged,  
+
//* confcompositionchanged,  
    //* confcompetitorstatechanged,  
+
//* confcompetitorstatechanged,  
    //* confentrancedenied,  
+
//* confentrancedenied,  
    //* confentrancepermitted,  
+
//* confentrancepermitted,  
    //* confentrancerequest,  
+
//* confentrancerequest,  
    //* confnotifyinvite,  
+
//* confnotifyinvite,  
    //* confpossiblecompetitorstatechanged
+
//* confpossiblecompetitorstatechanged
 
</pre>
 
</pre>
  
Строка 2456: Строка 2596:
  
 
====Состояния пользователей и линий====
 
====Состояния пользователей и линий====
 +
 +
-------------------------------------------------
 +
<span style="color:green">>>> '''userstatechanged'''</span>
 +
 +
Сообщение из Oktell в CRM о смене состояния пользователя в Oktell. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.
 +
 +
<pre>
 +
[
 +
"userstatechanged",
 +
{
 +
  "qid": "66F8D479-0234-47DF-B043-3A065FF464A7",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "userstateid": 2,
 +
  "onredirect": true,
 +
  "onlunch": false,
 +
  "oncallcenter": false
 +
}
 +
]
 +
</pre>
 +
 +
 +
-------------------------------------------------
 +
<span style="color:green"><<< '''setuserstate'''</span>
 +
 +
Запрос из CRM к Oktell на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение userstatechanged.
 +
 +
<pre>
 +
[
 +
"setuserstate",
 +
{
 +
  "qid": "2A45010A-8EEA-4876-90CB-F062459D4BE2",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "userstateid": 2,
 +
  "onredirect": false,
 +
  "lunchreasonid": 120,
 +
  "lunchreasonmsg": ""
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* lunchreasonid и lunchreasonmsg - расширение для будущей статистики, устанавливают причину перерыва.
 +
id - если причина одна из стандартных. msg - если что-то уникальное юзер ввел.
 +
</pre>
 +
  
 
-------------------------------------------------------------------
 
-------------------------------------------------------------------
Строка 2463: Строка 2649:
  
 
<pre>
 
<pre>
    [
+
[
    "getuserstate",
+
"getuserstate",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2478: Строка 2664:
 
Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы.  
 
Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы.  
 
<pre>
 
<pre>
    [
+
[
    "getuserstateresult",
+
"getuserstateresult",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "userstate": 5,
+
  "userstate": 5,
      "userstateid": 5,
+
  "userstateid": 5,
      "userstatestr": "usFullbusy",
+
  "userstatestr": "usFullbusy",
      "onredirect": true,
+
  "onredirect": true,
      "onlunch": false,
+
  "onlunch": false,
      "oncallcenter": false
+
  "oncallcenter": false
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2501: Строка 2687:
  
 
<pre>
 
<pre>
  [
+
[
    "checkuserintask",
+
"checkuserintask",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2517: Строка 2703:
  
 
<pre>
 
<pre>
    [
+
[
    "checkuserintaskresult",
+
"checkuserintaskresult",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "intask": true,
+
  "intask": true,
      "task": {,
+
  "task": {,
      "id": "1D565B41-1D16-46DE-B2C5-CF55ED5279F0",
+
  "id": "1D565B41-1D16-46DE-B2C5-CF55ED5279F0",
      "name": "Исходящий обзвон",
+
  "name": "Исходящий обзвон",
      "code": "af-2329",
+
  "code": "af-2329",
      "direction": "outgoing",
+
  "direction": "outgoing",
      "contacttype": 0,
+
  "contacttype": 0,
      "contacttypestr": "Call",
+
  "contacttypestr": "Call",
      "projectid": "E6ADBA0D-C9FF-40F2-96FF-6D2F455F9D5A"
+
  "projectid": "E6ADBA0D-C9FF-40F2-96FF-6D2F455F9D5A"
      }
+
  }
    }
+
}
     ]
+
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getmyuserinfo'''</span>
 +
 
 +
Запрос из CRM в Oktell на получение информации о текущем авторизованном пользователе: имя, внутренний номер, номер и идентификатор линии.
 +
 
 +
<pre>
 +
[
 +
"getmyuserinfo",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",</pre>
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  }  
 +
]
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''getmyuserinforesult'''</span>
 +
 
 +
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.
 +
 
 +
<pre>
 +
[
 +
"getmyuserinforesult",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "username": "Иванов Иван Иванович",
 +
  "mainpbxnumber": "471",
 +
  "hasline": 1,
 +
  "lineid": "267F8F36-4713-4B66-81BD-019512E56E7E",
 +
  "linenumber": "17374",
 +
  }
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getuserphoto'''</span>
 +
 
 +
Запрос из CRM в Oktell о текущем изображении (аватарке) указанного пользователя.
 +
 
 +
<pre>
 +
[
 +
"getuserphoto",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "photoownerlogin": "Петров",
 +
  "photoownerid": "3F140170-AEEF-4621-AF9D-247116AE1411"
 +
  "mode": "link"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* mode - link, page, data. По умолчанию page.
 +
link - вернуть абсолютную ссылку на скачивание через http.
 +
page - вернуть относительную ссылку на скачивание.
 +
вернуть данные изображения в base64.
 +
При формировании абсолютной ссылки в качестве доменного имени берется значение из
 +
раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
 +
//* photoownerlogin, photoownerid - логин и/или идентификатор пользователя, чья аватарка требуется
 +
Может не указываться, тогда будет возвращена аватарка авторизованного пользователя.
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''getuserphotoresult'''</span>
 +
 
 +
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.
 +
 
 +
<pre>
 +
[
 +
"getuserphotoresult",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1,
 +
  "link": "http://..."
 +
  "link32": "http://..."
 +
  "link96": "http://..."
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи
 +
будет находиться в поле errormsg. Например "File not found".
 +
//* imagedatab64. В случае возврата целиком изображения, оно будет в base64 строке содержаться в поле.
 +
//* link, link32, link96. В случае возврата ссылки на изображение в полях лежат соответственно
 +
ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getalluserphotolink'''</span>
 +
 
 +
Запрос из CRM в Oktell на получение ссылок на текущие изображения (аватарки) всех пользователей системы.
 +
 
 +
<pre>
 +
[
 +
"getalluserphotolink",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "mode": "link"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* mode - link, page. По умолчанию page.
 +
link - вернуть абсолютную ссылку на скачивание через http.
 +
page - вернуть относительную ссылку на скачивание.
 +
При формировании абсолютной ссылки в качестве доменного имени берется значение из
 +
раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''getalluserphotolinkresult'''</span>
 +
 
 +
Ответ из Oktell в CRM с ответом на запрос ссылкок на текущие изображения (аватарки) всех пользователей системы.
 +
 
 +
<pre>
 +
[
 +
"getalluserphotolinkresult",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1,
 +
  "links": [
 +
  {
 +
     "userid": "C6036E73-FB90-4F0C-B780-81CE5659BFEA",
 +
    "userlogin": "Сидоров",
 +
    "link": "http://...",
 +
    "link32x32": "http://...",
 +
    "link96x96": "http://...",
 +
  },
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* result. Если в наборе есть хотя бы одна аватарка, будет содержать 1. Иначе 0.
 +
//* links. Содержит набор пользовательских словарей, в каждом из которых идентификатор,
 +
логин и набор ссылок link, link32, link96. В полях лежат соответственно
 +
ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''setmyuserphoto'''</span>
 +
 
 +
Запрос из CRM в Oktell на установку нового изображения (аватарки) текущего пользователя.
 +
 
 +
<pre>
 +
[
 +
"setmyuserphoto",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "filepath": "",
 +
  "imagedatab64": "",
 +
  "filename": ""
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* filepath - если файл уже на сервере где-то, то это путь к нему -
 +
относительный рабочего каталога, относительный файлового хранилища, или абсолютный.
 +
Допускается устанавливать в качестве аватарки изображения размером не более 1 MБ.
 +
  либо
 +
//* imagedatab64 и filename - если файл целиком прокачивается через веб-сокет, то тут base64 строка
 +
с образом файла.
 +
 
 +
//* если не указано ни filepath, ни imagedatab64, ни filename - стирает текущую аватарку.
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''setmyuserphotoresult'''</span>
 +
 
 +
Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.
 +
 
 +
<pre>
 +
[
 +
"setmyuserphotoresult",
 +
{
 +
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи
 +
будет находиться в поле errormsg. Например "File not found".
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''changepassword'''</span>
 +
 
 +
Запрос из CRM в Oktell на изменение пароля текущего авторизованного пользователя
 +
 
 +
<pre>
 +
[
 +
"changepassword",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "newpwdmd5": "",
 +
  "oldpwdmd5": ""
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* oldpwdmd5 - MD5 текущего пароля.
 +
//* newpwdmd5 - MD5 нового пароля.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''changepasswordresult'''</span>
 +
 
 +
Ответ от Oktell в CRM о результате изменения пароля.
 +
 
 +
<pre>
 +
[
 +
"changepasswordresult",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 0,
 +
  "errormsg": "password should be md5 string"
 +
}
 +
]
 
</pre>
 
</pre>
  
Строка 2544: Строка 2978:
  
 
<pre>
 
<pre>
    [
+
[
    "getcurrentlinestate",
+
"getcurrentlinestate",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2559: Строка 2993:
 
Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы.  
 
Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы.  
 
<pre>
 
<pre>
    [
+
[
    "getcurrentlinestateresult",
+
"getcurrentlinestateresult",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "hasline": true,
+
  "hasline": true,
      "lineid": "866692FC-DA08-459D-BAA1-428F9BA6A0D1",
+
  "lineid": "866692FC-DA08-459D-BAA1-428F9BA6A0D1",
      "linenumber": "17012",
+
  "linenumber": "17012",
      "linetype": 5,
+
  "linetype": 5,
      "linetypestr": "ltIntIP",
+
  "linetypestr": "ltIntIP",
      "linestate": 32,
+
  "linestate": 32,
      "linestatestr": "lsCommutated"
+
  "linestatestr": "lsCommutated"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
  
 
-------------------------------------------------------------------
 
-------------------------------------------------------------------
<span style="color:green"><<< '''getcurrentlinestate'''</span>
+
<span style="color:green"><<< '''getcurrentqueue'''</span>
  
 
Запрос из CRM в Oktell состояния очереди указанного пользователя.
 
Запрос из CRM в Oktell состояния очереди указанного пользователя.
  
 
<pre>
 
<pre>
  [
+
[
    "getcurrentqueue",
+
"getcurrentqueue",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
 
 
<span style="color:green">>>> '''getcurrentlinestateresult'''</span>
+
<span style="color:green">>>> '''getcurrentqueueresult'''</span>
  
 
Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы.  
 
Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы.  
 
<pre>
 
<pre>
    [
+
[
    "getcurrentqueueresult",
+
"getcurrentqueueresult",
 +
{
 +
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "queue": [
 +
  {
 +
    "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
 +
    "objecttype": 0,
 +
    "objecttypestr": "qotQueueLogic",
 +
    "queuesource": 1,
 +
    "queuesourcestr": "qsLineLogic",
 +
    "queuepriority": 9,
 +
    "srcelementid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
 +
    "srclineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
 +
    "srclinenumber": "17004",
 +
    "startqueuetime": "2011-04-05 15:02:28",
 +
    "lenqueue": 72,
 +
    "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
 +
    "managedlinenumber": "17004",
 +
    "callerid": "472",
 +
    "calledid": "479",
 +
    "isuser": true,
 +
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 +
    "userlogin": "Петров",
 +
    "username": "Петр Петрович Петров",
 +
    "department": "Руководство",
 +
    "chainid": "02B99AD3-C954-4FD3-B07D-DFEDD83C0BF5",
 +
    "istask": true,
 +
    "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
 +
    "taskname": "Входящая кампания",
 +
    "taskdirection": "incoming",
 +
    "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
 +
    "tasklistinfo": [
 
     {
 
     {
       "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
       "key": "Название организации",
      "userlogin": "Иванов",
+
      "value": "ООО МДГХ"
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
    },
      "queue": [
+
    {...},
      {
+
    {...}
        "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
+
        "objecttype": 0,
+
        "objecttypestr": "qotQueueLogic",
+
        "queuesource": 1,
+
        "queuesourcestr": "qsLineLogic",
+
        "queuepriority": 9,
+
        "srcelementid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
        "srclineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
        "srclinenumber": "17004",
+
        "startqueuetime": "2011-04-05 15:02:28",
+
        "lenqueue": 72,
+
        "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
        "managedlinenumber": "17004",
+
        "callerid": "472",
+
        "calledid": "479",
+
        "isuser": true,
+
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
        "userlogin": "Петров",
+
        "username": "Петр Петрович Петров",
+
        "department": "Руководство",
+
        "chainid": "02B99AD3-C954-4FD3-B07D-DFEDD83C0BF5",
+
        "istask": true,
+
        "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
+
        "taskname": "Входящая кампания",
+
        "taskdirection": "incoming",
+
        "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
+
        "tasklistinfo": [
+
        {
+
          "key": "Название организации",
+
          "value": "ООО МДГХ"
+
        },
+
        {...},
+
        {...}
+
        ]
+
      },
+
      {...},
+
      {...}
+
      ]
+
    }
+
 
     ]
 
     ]
 +
  },
 +
  {...},
 +
  {...}
 +
  ]
 +
}
 +
]
 
</pre>
 
</pre>
  
Строка 2655: Строка 3089:
  
 
<pre>
 
<pre>
    [
+
[
    "getcallingoutabonentinfo",
+
"getcallingoutabonentinfo",
    {
+
{
      "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
+
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2671: Строка 3105:
  
 
<pre>
 
<pre>
     [
+
[
     "getcallingoutabonentinforesult",
+
"getcallingoutabonentinforesult",
 +
{
 +
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
 +
  "number": "89032728973",
 +
  "name": "",
 +
  "lineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
 +
  "linenumber": "13005"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getflashedabonentinfo'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат информации об абоненте, находящемся на удержании.
 +
 
 +
<pre>
 +
[
 +
"getflashedabonentinfo",
 +
{
 +
  "qid": "DC35D182-8BAB-4DE4-919C-5F79090D92DE",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
}
 +
]
 +
</pre>
 +
 
 +
 +
<span style="color:green">>>> '''getcallingoutabonentinforesult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает информацию об абоненте, находящемся на удержании
 +
 
 +
<pre>
 +
[
 +
"getflashedabonentinforesult",
 +
{
 +
  "qid": "DC35D182-8BAB-4DE4-919C-5F79090D92DE",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "containsflashed": 1,
 +
  "abonent": {
 +
     "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
 +
    "isconference": 0,
 +
"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
 +
"conferenceroom": "#124",
 +
"conferencename": "Планерка",
 +
"conferencedescription": "",
 +
    "name": "",
 +
    "comment": "",
 +
    "description": "",
 +
    "simplename": "",
 +
    "number": "89032728973",
 +
    "lineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
 +
    "linenumber": "13005",
 +
    "userid": "",
 +
    "userlogin": "",
 +
    "username": ""
 +
  }
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getextendedlineinfo'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат расширенной информации о текущей линии и ее оппозитных абонентах: текущее состояние, информация об абоненте в коммутации, информация об абоненте на удержании.
 +
 
 +
<pre>
 +
[
 +
"getextendedlineinfo",
 +
{
 +
  "qid": "55D54351-651E-4EC2-8E48-1D5136811FB9",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
}
 +
]
 +
</pre>
 +
 
 +
 +
<span style="color:green">>>> '''getextendedlineinfo'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя.
 +
 
 +
<pre>
 +
[
 +
"getextendedlineinforesult",
 +
{
 +
  "qid": "55D54351-651E-4EC2-8E48-1D5136811FB9",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "linestateid": 5,
 +
  "linestatestr": "lsCommutated,
 +
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
 +
  "datetimeformat" = "dd.MM.yyyy HH:mm:ss",
 +
  "activetimestart" = "01.12.2011 16:59:28",
 +
  "abonent": {
 +
    "isconference": false,
 +
"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
 +
"conferenceroom": "#124",
 +
"conferencename": "Планерка",
 +
"conferencedescription": "",
 +
    "iscommutated": false,
 +
    "iswaitingfaxline": false,
 +
    "iswaitinginflash": false,
 +
    "iswaitingforanswer": false,
 +
"number": "",
 +
"name": "",
 +
"description": "",
 +
"userid": "",
 +
"userlogin": "",
 +
"username": "",
 +
"comment": "",
 +
"simplename": "",
 +
"lineid": "",
 +
"linenumber": "",
 +
"isextline": false,
 +
    "iswaitingforanswer": false,
 +
"extnumber": "",
 +
"queuesourceid": 1,
 +
"queuesourcestr": "",
 +
    "isivr": false,
 +
"ivrname": "",
 +
    "isautocall": false,
 +
"number": "",
 +
    "isringing": false,
 +
"ringtimesec": 172,
 +
"isconference": false,
 +
"conferenceid": "",
 +
"conferencename": "",
 +
"conferenceroom": "",
 +
"conferencedescription": "",
 +
"inviteruserid": "",
 +
"inviterusername": "",
 +
"inviteruserlogin": "",
 +
"number": "",
 +
"name": "",
 +
"comment": "",
 +
"description": "",
 +
"direction": "",
 +
"isextline": true,
 +
"istask": false,
 +
"taskid": "",
 +
"taskname": "",
 +
"userid": "",
 +
"userlogin": "",
 +
"username": "",
 +
"lineid": "",
 +
"linenumber": ""
 +
  }
 +
  "isflashing": true,
 +
  "flashed": {
 +
    "isconference": true,
 +
"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
 +
"conferenceroom": "#124",
 +
"conferencename": "Планерка",
 +
"conferencedescription": "",
 +
"number": "",
 +
    "name": "",
 +
    "description": "",
 +
    "userid": "",
 +
    "userlogin": "",
 +
    "username": "",
 +
    "comment": "",
 +
    "simplename": "",
 +
    "lineid": "",
 +
    "linenumber": "",
 +
    "isextline": false
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* С отступом в примере указаны поля, появляющиеся в случае, если базовое булево поле имеет значение true.
 +
//     Например, если isringing=true, то указанные с отступом поля будут присутствовать и представлять собой
 +
//      информацию об абоненте, осуществляющем вызов текущего канала.
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
====Управление переадресацией====
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getredirectrules'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат списка правил переадресации для текущего пользователя с их настройками.
 +
 
 +
<pre>
 +
[
 +
"getredirectrules",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''getredirectrulesresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.
 +
 
 +
<pre>
 +
[
 +
"getredirectrulesresult",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "redirectrules": [
 +
  {
 +
    "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
 +
    "caption": "Постоянное",
 +
    "description": "Действует всегда, когда я в состоянии переадресации",
 +
    "priority": 1,
 +
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
    "isenabled": true,
 +
    "allowcascade": true,
 +
    "state": 2,
 +
    "statestr": "Active",
 +
    "destinationnumber": "89050213951",
 +
    "onlyforredirectstate": true,
 +
    "definesources": true,
 +
    "sources": [
 
     {
 
     {
       "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
+
       "type": 0,
       "userlogin": "Иванов",
+
      "typestr": "ExtNumber",
       "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
       "description": "",
       "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
+
       "srcnumber": "4959741589",
      "number": "89032728973",
+
       "srcid": ""
       "name": "",
+
    },
       "lineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
+
    ...
       "linenumber": "13005"
+
    ],
     }
+
    "defineschedule": true,
 +
    "tformat": "HH:mm:ss",
 +
    "schedule": [
 +
    {
 +
       "weekday": 0,
 +
      "weekdaystr": "Sunday",
 +
       "tstart": "00:00:00",
 +
       "tstop": "23:59:59",
 +
     },
 +
    ...
 
     ]
 
     ]
 +
  },
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//*  state: disabled=0, enabled=1, active=2
 +
//*  defineschedule - если false, значит активно всегда
 +
//*  definesources - если false, значит для всех номеров
 +
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4.
 +
Если номер - то указывается scrnumber, иначе srcid
 +
</pre>
 +
 +
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''saveredirectrules'''</span>
 +
 +
Запрос из CRM в Oktell. Сохраняет новое/измененное правило переадресации для текущего пользователя.
 +
 +
<pre>
 +
[
 +
"saveredirectrules",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "redirectrules": [
 +
  {
 +
    "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
 +
    "caption": "Постоянное",
 +
    "description": "Действует всегда, когда я в состоянии переадресации",
 +
    "priority": 1,
 +
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
    "isenabled": true,
 +
    "allowcascade": true,
 +
    "destinationnumber": "89050213951",
 +
    "onlyforredirectstate": true,
 +
    "definesources": true,
 +
    "sources": [
 +
    {
 +
      "type": 0,
 +
      "typestr": "ExtNumber",
 +
      "description": "",
 +
      "srcnumber": "4959741589",
 +
      "srcid": ""
 +
    },
 +
    ...
 +
    ],
 +
    "defineschedule": true,
 +
    "tformat": "HH:mm:ss",
 +
    "schedule": [
 +
    {
 +
      "weekday": 0,
 +
      "weekdaystr": "Sunday",
 +
      "tstart": "00:00:00",
 +
      "tstop": "23:59:59",
 +
    },
 +
    ...
 +
    ]
 +
  },
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//*  state: disabled=0, enabled=1, active=2
 +
//*  defineschedule - если false, значит активно всегда
 +
//*  definesources - если false, значит для всех номеров
 +
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. Если номер - то указывается scrnumber, иначе srcid
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''saveredirectrulesresult'''</span>
 +
 +
Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.
 +
 +
<pre>
 +
[
 +
"saveredirectrulesresult",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1
 +
}
 +
]
 +
</pre>
 +
 +
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''deleteredirectrules'''</span>
 +
 +
Запрос из CRM в Oktell. Удаляет указанные правила переадресации для текущего пользователя.
 +
 +
<pre>
 +
[
 +
"deleteredirectrules",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
  "ids": [
 +
  "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''deleteredirectrulesresult'''</span>
 +
 +
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на удаление правил переадресации.
 +
 +
<pre>
 +
[
 +
"deleteredirectrulesresult",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
}
 +
]
 +
</pre>
 +
 +
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''setredirectruleenabled'''</span>
 +
 +
Запрос из CRM в Oktell. Включает/выключает указанные правила переадресации.
 +
 +
<pre>
 +
[
 +
"setredirectruleenabled",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
  "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
 +
  "enabled": true
 +
}
 +
]
 +
</pre>
 +
 +
 +
<span style="color:green">>>> '''setredirectruleenabledresult'''</span>
 +
 +
Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на включение/выключения указанных правил переадресации.
 +
 +
<pre>
 +
[
 +
"setredirectruleenabledresult",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 +
}
 +
]
 
</pre>
 
</pre>
  
Строка 2712: Строка 3544:
 
Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя.  
 
Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя.  
 
<pre>
 
<pre>
    [
+
[
    "getchaincontentresult",
+
"getchaincontentresult",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
+
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
      "result": 1,
+
  "result": 1,
      "content": {
+
  "content": {
      "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
+
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
      "createtime": "2011-04-06 20:38:41",
+
  "createtime": "2011-04-06 20:38:41",
      "customfield": "трололололо",
+
  "customfield": "трололололо",
      "trace": [
+
  "trace": [
        {
+
    {
        "contentelementtype": "call",
+
    "contentelementtype": "call",
        "pbxdirection": "internal",
+
    "pbxdirection": "internal",
        "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
+
    "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
        "objecttype": 0,
+
    "objecttype": 0,
        "objecttypestr": "qotQueueLogic",
+
    "objecttypestr": "qotQueueLogic",
        "queuesource": 5,
+
    "queuesource": 5,
        "queuesourcestr": "qsIncomingTask",
+
    "queuesourcestr": "qsIncomingTask",
        "queuepriority": 7,
+
    "queuepriority": 7,
        "srcelementid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
+
    "srcelementid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
        "srclineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
+
    "srclineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
        "srclinenumber": "13005",
+
    "srclinenumber": "13005",
        "startqueuetime": "2011-04-06 20:38:41",
+
    "startqueuetime": "2011-04-06 20:38:41",
        "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
    "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
        "managedlinenumber": "17004",
+
    "managedlinenumber": "17004",
        "callerid": "89048928835",
+
    "callerid": "89048928835",
        "calledid": "4959211586",
+
    "calledid": "4959211586",
        "isuser": false,
+
    "isuser": false,
        "department": "",
+
    "department": "",
        "istask": true,
+
    "istask": true,
        "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
+
    "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
        "taskname": "Входящая кампания",
+
    "taskname": "Входящая кампания",
        "taskdirection": "incoming",
+
    "taskdirection": "incoming",
        "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
+
    "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
        "tasklistinfo": [
+
    "tasklistinfo": [
          {
+
      {
          "key": "Название организации",
+
      "key": "Название организации",
          "value": "ООО МДГХ"
+
      "value": "ООО МДГХ"
          }
+
        ]
+
        },
+
        {
+
        "contentelementtype": "commutation",
+
        "commutationid": "58D76504-DA2D-42C2-9016-1089A94DC1BF",
+
        "timestart": "2011-04-06 20:40:01",
+
        "timeanswer": "2011-04-06 20:40:04",
+
        "connectiontype": 5,
+
        "connectiontypestr": "ctOuterInner",
+
        "isrecorded": true,
+
        "customfield": "траляляляля",
+
        "alineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
+
        "alinenumber": "13005",
+
        "anumberdialed": "4959211586",
+
        "aoutnumber": "89048928835",
+
        "aisuser": false,
+
        "atext": "ООО «СДЗЦ» (89048928835)",
+
        "blineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
        "blinenumber": "17004",
+
        "bnumberdialed": "",
+
        "boutnumber": "472",
+
        "bisuser": true,
+
        "buserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
        "buserlogin": "Петров",
+
        "busername": "Петр Петрович Петров",
+
        "btext": "Петр Петрович Петров",
+
        "timestop": "2011-04-06 20:42:12",
+
        "length": 128.32,
+
        "stopside": "a",
+
        "stopreason": 2,
+
        "stopreasonstr": "scrAbonentHangOff"
+
        },
+
        {...},
+
        {...}
+
      ]
+
 
       }
 
       }
     }
+
     ]
     ]
+
    },
 +
     {
 +
    "contentelementtype": "commutation",
 +
    "commutationid": "58D76504-DA2D-42C2-9016-1089A94DC1BF",
 +
    "timestart": "2011-04-06 20:40:01",
 +
    "timeanswer": "2011-04-06 20:40:04",
 +
    "connectiontype": 5,
 +
    "connectiontypestr": "ctOuterInner",
 +
    "isrecorded": true,
 +
    "customfield": "траляляляля",
 +
    "alineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
 +
    "alinenumber": "13005",
 +
    "anumberdialed": "4959211586",
 +
    "aoutnumber": "89048928835",
 +
    "aisuser": false,
 +
    "atext": "ООО «СДЗЦ» (89048928835)",
 +
    "blineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
 +
    "blinenumber": "17004",
 +
    "bnumberdialed": "",
 +
    "boutnumber": "472",
 +
    "bisuser": true,
 +
    "buserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 +
    "buserlogin": "Петров",
 +
    "busername": "Петр Петрович Петров",
 +
    "btext": "Петр Петрович Петров",
 +
    "timestop": "2011-04-06 20:42:12",
 +
    "length": 128.32,
 +
    "stopside": "a",
 +
    "stopreason": 2,
 +
    "stopreasonstr": "scrAbonentHangOff"
 +
    },
 +
    {...},
 +
    {...}
 +
  ]
 +
  }
 +
}
 +
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
    * trace:contentelementtype:  
+
* trace:contentelementtype:  
 
</pre>
 
</pre>
  
Строка 2804: Строка 3636:
  
 
<pre>
 
<pre>
    [
+
[
    "setchaincontentcustomfield",
+
"setchaincontentcustomfield",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "customfield": "фывафыдвлаожфыдлвао"
+
  "customfield": "фывафыдвлаожфыдлвао"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2821: Строка 3653:
  
 
<pre>
 
<pre>
    [
+
[
    "setchaincontentcustomfieldresult",
+
"setchaincontentcustomfieldresult",
    {
+
{
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
+
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
+
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
      "result": 1
+
  "result": 1
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2840: Строка 3672:
  
 
<pre>
 
<pre>
    [
+
[
    "getchaincontentcustomfield",
+
"getchaincontentcustomfield",
    {
+
{
      "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
+
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2856: Строка 3688:
  
 
<pre>
 
<pre>
    [
+
[
    "getchaincontentcustomfieldresult",
+
"getchaincontentcustomfieldresult",
    {
+
{
      "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
+
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
+
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
      "customfield": "фывафыдвлаожфыдлвао",
+
  "customfield": "фывафыдвлаожфыдлвао",
      "result": 1
+
  "result": 1
    }
+
}
     ]
+
]
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
====Журнал звонков====
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getpbxcalljournal'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат журнала звонков АТС по указанному фильтру в соответствии с правами пользователя.
 +
В том числе ссылки на файлы записей разговоров.
 +
 
 +
<pre>
 +
[
 +
"getpbxcalljournal",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "filter": {
 +
     "idconn": "08708573-4AF9-45F2-83B7-B8A0DDEF52EC",
 +
    "idchain": "94B5B657-3009-45E0-9095-F5D7BA163EB2",
 +
    "datestart": "2011-04-07",
 +
    "datestop": "2011-04-07",
 +
    "timestart": "08:00:00",
 +
    "timestop": "20:00:00",
 +
    "connectiontype": "all",
 +
    "intnumber": "",
 +
    "outnumber": "89503222555",
 +
    "minduration": 1,
 +
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 +
    "userlogin: "Петров"
 +
    "comment": "",
 +
    "showcallcenter": false,
 +
    "taskid": "00000000-0000-0000-0000-000000000000"
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* filter - фильтр для запроса. Все поля не являются обязательными.
 +
По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00 без звонков call-центра
 +
длительностью более 1 секунды, которые доступны авторизованному пользователю по правам контроля.
 +
К фильтру могут быть применены:
 +
idconn - идентификатор конкретно интересующей коммутации.
 +
idchain - идентификатор конкретно интересующей цепочки коммутаций/сессии.
 +
datestart - дата начала интересующего периода. Включительно.
 +
datestop - дата окончания интересующего периода. Включительно.
 +
timestart - время начала интересующего внутридневного интервала.
 +
timestop - время окончания интересующего внутридневного интервала.
 +
connectiontype - тип соединения (all, incoming, outcoming, internal, conference).
 +
intnumber - интересующий внутренний номер.
 +
outnumber - интересующий внешний номер.
 +
minduration - минимальная длительность коммутации в секундах, может быть действительным значением.
 +
userid - идентификатор интересующего пользователя.
 +
userlogin - логин интересующего пользователя.
 +
comment - строка включения в комментарии.
 +
showcallcenter: true|false. Отображать ли коммутации call-центра.
 +
taskid - идентификатор задачи в рамках коллцентра, чьи звонки интересны.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green"><<< '''getpbxcalljournalresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает журнал звонков АТС по указанному фильтру в соответствии с правами пользователя.
 +
 
 +
<pre>
 +
[
 +
"getpbxcalljournalresult",
 +
{
 +
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "dtformat": "dd.MM.yyyy HH:mm:ss",
 +
  "data": [
 +
  {
 +
    "commutationid": "044d56f9-7137-49b6-bacf-a10370a54df4",
 +
    "chainid": "672ec703-e77a-47b1-b698-cb8488352fc9",
 +
    "connectiontype": 10,
 +
    "connectiontypestr": "conference",
 +
    "dtstart": "2011-04-09 19:55:30",
 +
    "dtanswer": "2011-04-09 19:55:30",
 +
    "dtstop": "2011-04-09 19:55:33",
 +
    "length": 2,
 +
    "answerlength": 0,
 +
    "hascomment": false,
 +
    "isbetweenusers": true,
 +
    "fromcc": false,
 +
    "isconf": true,
 +
    "isrecorded": true,
 +
    "recordlink": "/download/rec/AQAAAAAQIKvNHczNCBEBAAAA",
 +
    "fileext": "wav",
 +
    "auserid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
 +
    "auserlogin": "Крючков",
 +
    "alineid": "A117499D-23EA-4BF8-A6B9-F49580E9628C",
 +
    "alinenumber": "16001",
 +
    "aoutnumber": "Семен Егорович Крючков",
 +
    "anumberdialed": "",
 +
    "atext": "Семен Егорович Крючков",
 +
    "conferenceid": "224476F1-2E41-4C8F-BA85-6BEF0EBB5339",
 +
    "conferenceroom": "751",
 +
    "conferencename": "Автоконференция #751 09.04.11 19:55:30",
 +
    "conferencedirectorid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
 +
    "conferencedirectorlogin": "Крючков",
 +
    "conferencedirectorname": "Семен Егорович Крючков",
 +
    "reasonstop": -1,
 +
    "stopside": "a"
 +
  },
 +
  {
 +
    "commutationid": "5F64DECF-194C-474B-8CA7-824E82A1C072",
 +
    "chainid": "22A01B17-064B-4E19-99BA-FED96680AF25",
 +
    "connectiontype": 5,
 +
    "connectiontypestr": "ctOuterInner",
 +
    "dtstart": "2011-04-09 19:57:24",
 +
    "dtanswer": "2011-04-09 19:57:24",
 +
    "dtstop": "2011-04-09 19:58:13",
 +
    "length": 49,
 +
    "answerlength": 0,
 +
    "hascomment": true,
 +
    "isbetweenusers": true,
 +
    "fromcc": false,
 +
    "isrecorded": true,
 +
    "recordlink": "/download/rec/AAAAAABwOltxHczNCGlCAACBPgAA",
 +
  "fileext": "mp3",
 +
    "isconf": false,
 +
    "auserid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
 +
    "auserlogin": "Крючков",
 +
    "alineid": "A117499D-23EA-4BF8-A6B9-F49580E9628C",
 +
    "alinenumber": "16001",
 +
    "aoutnumber": "Семен Егорович Крючков",
 +
    "anumberdialed": "",
 +
    "atext": "Семен Егорович Крючков",
 +
    "buserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
 +
    "buserlogin": "Петров",
 +
    "blineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
 +
    "blinenumber": "17004",
 +
    "boutnumber": "",
 +
    "bnumberdialed": "217",
 +
    "btext": "Петр Петрович Петров",
 +
    "reasonstop": -1,
 +
    "stopside": "b"
 +
  }
 +
  {...},
 +
  {...}
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* dtformat - формат представления даты/времени.
 +
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.
 +
commutationid - идентификатор коммутации.
 +
chainid - идентификатор цепочки коммутаций/сессии.
 +
connectiontype, connectiontypestr - Тип соединения:
 +
ctInnerOuter = 1, //внутренняя линия с внешней линией
 +
ctInnerIvr = 2, //внутренняя линия с IVR
 +
ctInnerInner = 3, //внутренняя линия с внутренней линией
 +
ctOuterIvr = 4, //внешняя линия с IVR
 +
ctOuterInner = 5, //внешняя линия с внутренней линией линией
 +
ctOuterOuter = 6, //внешняя линия с внешней линией
 +
ctIvrOuter = 7, //IVR с внешней линией
 +
ctIvrInner = 8, //IVR с внутренней линией
 +
ctConference = 10,//Конференция
 +
ctSelector = 11,//Селекторное совещание
 +
dtstart - дата/время начала вызова перед осуществлением коммутации.
 +
dtanswer - дата/время ответа и начала коммутации.
 +
dtstop - дата/время окончания коммутации
 +
length - длительность в секундах
 +
answerlength - длительность ответа в секундах.
 +
hascomment - true|false. Имеет ли данная коммутация комментарий.
 +
isbetweenusers - true|false. Является ли текущая коммутация между пользователями системы.
 +
fromcc - true|false. Произведена ли текущая коммутация в рамках работы call-центра.
 +
isrecorded - true|false. Записана ли коммутация.
 +
recordlink - относительная ссылка на скачивание файла записи разговора.
 +
fileext - если файл записан, то его расширение mp3 или wav. Возвращает только если в полном
 +
результате менее 5 записей, иначе поле отсутствует.
 +
isconf - true|false. Является ли текущая запись конференцией.
 +
auserid - идентификатор пользователя абонента a.
 +
Если IVR - 'ab000000-0000-0000-0000-000000000000',
 +
Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'
 +
auserlogin - логин пользователя абонента a.
 +
alineid - идентификатор линии абонента a.
 +
alinenumber - номер линии абонента a.
 +
aoutnumber - номер абонента a (CallerId).
 +
anumberdialed - набранный абонентом a номер.
 +
atext - текстовое описание абонента a.
 +
buserid - идентификатор пользователя абонента b.
 +
Если IVR - 'ab000000-0000-0000-0000-000000000000',
 +
Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'
 +
buserlogin - логин пользователя абонента b.
 +
blineid - идентификатор линии абонента b.
 +
blinenumber - номер линии абонента b.
 +
boutnumber - номер абонента b (CallerId).
 +
bnumberdialed - набранный абонентом b номер.
 +
btext - текстовое описание абонента b.
 +
reasonstop - причина разрыва коммутации.
 +
stopside - a, b. По чьей инициативе коммутация прервана.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getpbxcallcomment'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат комментария к указанной коммутации.
 +
 
 +
<pre>
 +
[
 +
"getpbxcallcomment",
 +
{
 +
  "qid": "1E3C27C0-BE28-4621-AD39-6D1B31EB37EB",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green"><<< '''getpbxcallcommentresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает комментарий к запрошенной коммутации.
 +
 
 +
<pre>
 +
[
 +
"getpbxcallcommentresult",
 +
{
 +
  "qid": "1E3C27C0-BE28-4621-AD39-6D1B31EB37EB",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644",
 +
  "comment": "раз два три четыре пять вышел зайчик погулять"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''setpbxcallcomment'''</span>
 +
 
 +
Запрос из CRM в Oktell на установку комментария для указанной коммутации.
 +
 
 +
<pre>
 +
[
 +
"setpbxcallcomment",
 +
{
 +
  "qid": "3AB79A11-24FB-4D10-B7FD-5FD1653A679D",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
 +
  "comment": "раз два три четыре пять вышел зайчик погулять"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green"><<< '''setpbxcallcommentresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает результат установки комментария к коммутации.
 +
 
 +
<pre>
 +
[
 +
"setpbxcallcommentresult",
 +
{
 +
  "qid": "3AB79A11-24FB-4D10-B7FD-5FD1653A679D",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getpbxmycalljournal'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат журнала собственных звонков авторизованного пользователя по указанному фильтру.
 +
В том числе ссылки на файлы записей разговоров.
 +
 
 +
<pre>
 +
[
 +
"getpbxmycalljournal",
 +
{
 +
  "qid": "F95D0A08-D904-49C9-A4B9-8C02B1781A89",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "linkmode": "full",
 +
  "filter": {
 +
    "datestart": "2011-04-07",
 +
    "datestop": "2011-04-07",
 +
    "comment": "",
 +
    "number": "89503222555",
 +
    "media": "all",
 +
    "type": "all"
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы
 +
в событии об окончании приема.
 +
full - вернуть абсолютную ссылку на скачивание через http.
 +
simple - вернуть относительную ссылку на скачивание.
 +
При формировании абсолютной ссылки в качестве доменного имени берется значение из
 +
раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
 +
//* filter - фильтр для запроса. Все поля не являются обязательными.
 +
По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00, в которых
 +
участвовал авторизованный пользователь
 +
К фильтру могут быть применены:
 +
datestart - дата начала интересующего периода. Включительно.
 +
datestop - дата окончания интересующего периода. Включительно.
 +
comment - строка включения в комментарии.
 +
number - интересующий номер оппонента.
 +
media - external, internal, all. Среда вызова.
 +
type - тип звонка:
 +
incoming - входящий звонок.
 +
outcoming - исходящий звонок.
 +
missed - пропущенный звонок. Что является пропущенным звонком определяется в разделе
 +
[[Менеджер очередей]] общих настроек Oktell.
 +
conference - конференция.
 +
selector - селекторное совещание.
 +
all - все типы звонков.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green"><<< '''getpbxmycalljournalresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает журнал собственных звонков авторизованного пользователя по указанному фильтру.
 +
 
 +
<pre>
 +
[
 +
"getpbxmycalljournalresult",
 +
{
 +
  "qid": "F95D0A08-D904-49C9-A4B9-8C02B1781A89",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "dtformat": "dd.MM.yyyy HH:mm:ss",
 +
  "data": [
 +
  {
 +
    "type": 1,
 +
    "typestr": "incoming",
 +
    "media": 2,
 +
    "mediastr": "internal",
 +
    "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644",
 +
    "chainid": "46fe0543-4a58-49c5-b501-644b8ddad69a",
 +
    "dtstart": "2011-04-09 19:55:25",
 +
    "dtanswer": "2011-04-09 19:55:27",
 +
    "dtstop": "2011-04-09 19:56:29",
 +
    "length": 61,
 +
    "number": "14",
 +
    "alineid": "3294CD8F-7865-436A-AC2E-CEA481D8F52D",
 +
    "alinenumber": "17011",
 +
    "blineid": "021BDECD-196B-408F-8C36-8C37C0A94C5A",
 +
    "blinenumber": "17014",
 +
    "isrecorded": true,
 +
    "recordlink": "http://192.168.0.12:4055/download/rec/AQAAAADQfMDNHczNCBEBAAAA",
 +
    "hascomment": true,
 +
    "abonentname": "Петр Петрович Петров",
 +
    "isconf": false
 +
  },
 +
  {
 +
    "type": 10,
 +
    "typestr": "conference",
 +
    "media": 10,
 +
    "mediastr": "conference",
 +
    "commutationid": "20CF9B5A-5FFE-4456-8984-E7B79D7166EE",
 +
    "chainid": "E443FEA7-5ABB-49CB-A28D-8CC25F404E97",
 +
    "dtstart": "2011-04-09 19:58:12",
 +
    "dtanswer": "2011-04-09 19:58:12",
 +
    "dtstop": "2011-04-09 19:59:45",
 +
    "length": 93,
 +
    "alineid": "3294CD8F-7865-436A-AC2E-CEA481D8F52D",
 +
    "alinenumber": "17011",
 +
    "isconf": true,
 +
    "conferenceid": "224476F1-2E41-4C8F-BA85-6BEF0EBB5339",
 +
    "conferenceroom": "751",
 +
    "conferencename": "Автоконференция #751 09.04.11 19:55:30",
 +
    "conferencedirectorid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
 +
    "conferencedirectorlogin": "Крючков",
 +
    "conferencedirectorname": "Семен Егорович Крючков",
 +
    "isrecorded": true,
 +
    "recordlink": "http://192.168.0.12:4055/download/rec/AAAAAACQSBTLHczNCGlCAACBPgAA",
 +
    "hascomment": true
 +
  },
 +
  {...},
 +
  {...}
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* dtformat - формат представления даты/времени.
 +
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.
 +
type, typestr - тип звонка:
 +
incoming = 1 - входящий звонок.
 +
outcoming = 2 - исходящий звонок.
 +
missed = 3 - пропущенный звонок. Что является пропущенным звонком определяется
 +
в разделе [[Настройки менеджера очередей|Менеджер очередей]] общих настроек Oktell.
 +
conference = 10 - конференция.
 +
selector = 11 - селекторное совещание.
 +
media, mediastr - тип среды вызова:
 +
external = 2 - внешняя среда.
 +
internal = 1 - внутренний вызов.
 +
conference = 10 - конференция.
 +
selector = 11 - селекторное совещание.
 +
commutationid - идентификатор коммутации.
 +
chainid - идентификатор цепочки коммутаций/сессии.
 +
dtstart - дата/время начала вызова перед осуществлением коммутации.
 +
dtanswer - дата/время ответа и начала коммутации.
 +
dtstop - дата/время окончания коммутации
 +
length - длительность в секундах
 +
alineid - идентификатор линии абонента a.
 +
alinenumber - номер линии абонента a.
 +
blineid - идентификатор линии абонента b, если это коммутация.
 +
blinenumber - номер линии абонента b, если это коммутация.
 +
isrecorded - true|false. Записана ли коммутация.
 +
recordlink - относительная или абсолютная ссылка на скачивание файла записи разговора.
 +
hascomment - true|false. Имеет ли данная коммутация комментарий.
 +
abonentname - текстовое описание оппозитного абонента коммутации.
 +
isconf - true|false. Является ли текущая запись конференцией(селектором) или нет.
 +
conferenceid - идентификатор конференции/селектора.
 +
conferenceroom - номер комнаты конференции/селектора.
 +
conferencename - название конференции/селектора.
 +
conferencedirectorid - идентификатор управляющего пользователя конференции/селектора.
 +
conferencedirectorlogin - логин управляющего пользователя конференции/селектора.
 +
conferencedirectorname - имя управляющего пользователя конференции/селектора.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''removepbxcallrecord'''</span>
 +
 
 +
Запрос из CRM в Oktell. Удаляет запись разговора указанной коммутации в соответствии с правами доступа.
 +
 
 +
<pre>
 +
[
 +
"removepbxcallrecord",
 +
{
 +
  "qid": "DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green"><<< '''removepbxcallrecordresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает результат удаления записи разговора.
 +
 
 +
<pre>
 +
[
 +
"removepbxcallrecordresult",
 +
{
 +
  "qid": "DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "result": 1
 +
}
 +
]
 
</pre>
 
</pre>
  
Строка 2880: Строка 4173:
  
 
<pre>
 
<pre>
  [
+
[
    "getusersbynumbers",
+
"getusersbynumbers",
    {
+
{
      "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
+
  "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "numbers": [
+
  "numbers": [
      "883",
+
  "883",
      "470",
+
  "470",
      "472",
+
  "472",
      "485"
+
  "485"
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2902: Строка 4195:
  
 
<pre>
 
<pre>
    [
+
[
    "getusersbynumbersresult",
+
"getusersbynumbersresult",
    {
+
{
      "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
+
  "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 1,
+
  "result": 1,
      "users": [
+
  "users": [
      {
+
  {
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "username": "Петр Петрович Петров",
+
    "username": "Петр Петрович Петров",
      },
+
  },
      {
+
  {
        "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
+
    "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
        "userlogin": "Сидоров",
+
    "userlogin": "Сидоров",
        "username": "Сидор Сидорович Сидоров"
+
    "username": "Сидор Сидорович Сидоров"
      }
+
  }
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2932: Строка 4225:
  
 
<pre>
 
<pre>
  [
+
[
    "getitemsbynumbers",
+
"getitemsbynumbers",
    {
+
{
      "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
+
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "numbers": [
+
  "numbers": [
      "883",
+
  "883",
      "470",
+
  "470",
      "472",
+
  "472",
      "485"
+
  "485"
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2954: Строка 4247:
  
 
<pre>
 
<pre>
    [
+
[
    "getitemsbynumbersresult",
+
"getitemsbynumbersresult",
    {
+
{
      "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
+
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 1,
+
  "result": 1,
      "items": [
+
  "items": [
      {
+
  {
        "type": "user",
+
    "type": "user",
        "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
        "userlogin": "Петров",
+
    "userlogin": "Петров",
        "username": "Петр Петрович Петров",
+
    "username": "Петр Петрович Петров",
      },
+
  },
      {
+
  {
        "type": "user",
+
    "type": "user",
        "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
+
    "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
        "userlogin": "Сидоров",
+
    "userlogin": "Сидоров",
        "username": "Сидор Сидорович Сидоров"
+
    "username": "Сидор Сидорович Сидоров"
      },
+
  },
      {
+
  {
        "type": "line",
+
    "type": "line",
        "lineid": "50203B8C-8079-4B52-8D24-ECDA4BF7877A",
+
    "lineid": "50203B8C-8079-4B52-8D24-ECDA4BF7877A",
        "linenumber": "17025"
+
    "linenumber": "17025"
      }
+
  }
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 2991: Строка 4284:
  
 
<pre>
 
<pre>
    [
+
[
    "getsystemnumberbyuser",
+
"getsystemnumberbyuser",
    {
+
{
      "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
+
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "user": {
+
  "user": {
      "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "userlogin": "Петров"
+
  "userlogin": "Петров"
      }
+
  }
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 3011: Строка 4304:
  
 
<pre>
 
<pre>
    [
+
[
    "getsystemnumberbyuserresult",
+
"getsystemnumberbyuserresult",
    {
+
{
      "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
+
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "result": 1,
+
  "result": 1,
      "systemnumber": "U28CA980EF9F84B83B4934454AA54FCD8"
+
  "systemnumber": "U28CA980EF9F84B83B4934454AA54FCD8"
      ]
+
  ]
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 3031: Строка 4324:
  
 
<pre>
 
<pre>
  [
+
[
    "getpbxnumbersforitem",
+
"getpbxnumbersforitem",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
      "itemtype": "user",
+
  "itemtype": "user",
      "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "itemuserlogin: "Петров"
+
  "itemuserlogin: "Петров"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 3050: Строка 4343:
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbersforitemresult",
+
"getpbxnumbersforitemresult",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "itemtype": "user",
+
  "itemtype": "user",
      "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "itemuserlogin: "Петров",
+
  "itemuserlogin: "Петров",
      "itemnumbers": "403, 472"
+
  "itemnumbers": "403, 472"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
    /*  "itemtype": "line",
+
/*  "itemtype": "line",
    /*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
/*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    /*  "itemlinenumber": "17004"
+
/*  "itemlinenumber": "17004"
 
</pre>
 
</pre>
  
Строка 3076: Строка 4369:
  
 
<pre>
 
<pre>
  [
+
[
    "getmainpbxnumberforitem",
+
"getmainpbxnumberforitem",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
      "itemtype": "user",
+
  "itemtype": "user",
      "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "itemuserlogin: "Петров"
+
  "itemuserlogin: "Петров"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
  
Строка 3095: Строка 4388:
  
 
<pre>
 
<pre>
    [
+
[
    "getmainpbxnumberforitemresult",
+
"getmainpbxnumberforitemresult",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "itemtype": "user",
+
  "itemtype": "user",
      "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
+
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
      "itemuserlogin: "Петров",
+
  "itemuserlogin: "Петров",
      "itemnumber": "472"
+
  "itemnumber": "472"
    }
+
}
    ]
+
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
    /*  "itemtype": "line",
+
/*  "itemtype": "line",
    /*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
+
/*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    /*  "itemlinenumber": "17004"
+
/*  "itemlinenumber": "17004"
 
</pre>
 
</pre>
  
Строка 3118: Строка 4411:
 
<span style="color:green"><<< '''getpbxnumbers'''</span>
 
<span style="color:green"><<< '''getpbxnumbers'''</span>
  
Запрос из CRM в Oktell на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.
+
Запрос из CRM в Oktell на возврат всех внутренних номеров системы.  
 +
Не требует указания авторизованного пользователя, так как может исполняться по инициативе сервера WebCRM.
 +
В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.
  
 
<pre>
 
<pre>
  [
+
[
    "getpbxnumbers",
+
"getpbxnumbers",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "mode": "simple"
+
  "mode": "simple"
    }
+
}
  ]
+
]
 +
</pre>
 +
<pre>
 +
//* mode: simple, full (простой вид, полный вид).
 
</pre>
 
</pre>
  
 +
 +
<span style="color:green">>>> '''getpbxnumbersresult'''</span>
  
<span style="color:green"><<< '''getpbxnumbers'''</span>
+
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы.
 +
В примере приведен ответ на запрос с перечнем номеров в простом виде.
  
Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.
+
<pre>
 +
[
 +
"getpbxnumbersresult",
 +
{
 +
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "mode": "simple",
 +
  "numbers": [
 +
  "401",
 +
  "402",
 +
  "403",
 +
  "404",
 +
  "405",
 +
  "471",
 +
  "472",
 +
  "473"
 +
  ]
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
В следующем примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbers",
+
"getpbxnumbersresult",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "mode": "simple"
+
  "mode": "full",
    }
+
  "numbers": [
     ]
+
  {
 +
     "id": "9079E514-FECF-4DFD-BF48-5EDE4241E3A1",
 +
    "number": "472",
 +
    "type": 0,
 +
    "typestr": "intRule",
 +
    "isgroup": false,
 +
    "caption": "Петров",
 +
    "state": 5,
 +
    "statestr": "usFullbusy",
 +
    "department": "Руководство"
 +
  },
 +
  {...},
 +
  {...}
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
/* number:type - intRule(0), intFast(2), intIVR(3), intEmergency(4)
 +
/* number:state - usDisconnected(0), usReady(1), usLunch(2), usOff(3), usFullbusy(5),
 +
usReserved(6), usWOPhone(7), usError(100), usRinging(201)
 
</pre>
 
</pre>
  
 
<span style="color:green">>>> '''getpbxnumbersresult'''</span>
 
  
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в простом виде.
+
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getallusernumbers'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат списка всех пользователей, содержащего актуальную информацию по их прямым, основным и групповым номерам.
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbersresult",
+
"getallusernumbers",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
      "mode": "simple",
+
}
      "numbers": [
+
]
      "401",
+
      "402",
+
      "403",
+
      "404",
+
      "405",
+
      "471",
+
      "472",
+
      "473"
+
      ]
+
    }
+
    ]
+
 
</pre>
 
</pre>
 
  
<span style="color:green"><<< '''getpbxnumbers'''</span>
 
  
Запрос из CRM в Oktell на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде.
+
<span style="color:green">>>> '''getallusernumbersresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает список всех пользователей, содержащий актуальную информацию по их прямым, основным и групповым номерам.
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbers",
+
"getallusernumbersresult",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
      "mode": "full"
+
  "userlogin": "Иванов",
    }
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
     ]
+
  "users": [
 +
  {"id": "47A8B3A0-0B33-41BB-9D08-1D9EB0D6F09B",
 +
    "name: "Петров",
 +
    "main: "14",
 +
    "nums": "14, 625, 773"
 +
  },
 +
  {"id": "5A84368D-5ED3-434B-8EB2-41AE86E1566A",
 +
     "name: "Иванов"
 +
  },
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
/*  users:main - основной прямой номер,
 +
/*  users:nums - перечень номеров, в которых участвует пользователь или его текущая линия.
 +
Порядок следования от главного к групповым, затем от главного к групповым с участием линии.
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
====Преобразования====
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getuserbyline'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат информации о связанном пользователе по ключу линии. Ключом линии традиционно является идентификатор или номер линии.
 +
 
 +
<pre>
 +
[
 +
"getuserbyline",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "linekey": "17002"
 +
}
 +
}
 +
]
 
</pre>
 
</pre>
  
 
 
<span style="color:green"><<< '''getpbxnumbers'''</span>
+
<span style="color:green">>>> '''getuserbylineresult'''</span>
  
Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде.
+
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.  
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbers",
+
"getuserbylineresult",
    {
+
{
      "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
      "userlogin": "Иванов",
+
  "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
      "mode": "full"
+
  "founduser": {
    }
+
  "userid": "BE6A252A-D7E7-4D15-8D75-385A210DF997",
    ]
+
  "userlogin": "john",
 +
  "username": "John Smith"
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* founduser - информация о связанном с указанной линии пользователе - его идентификатор, логин, имя.
 +
Если линия указана неверно или к ней в данный момент не привязан пользователь - null.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getlinebyuser'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат информации о связанной линии по ключу пользователя. Ключом пользователя традиционно является идентификатор, логин или имя.
 +
 
 +
<pre>
 +
[
 +
"getlinebyuser",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "userkey": "ivanov"
 +
}
 +
}
 +
]
 
</pre>
 
</pre>
  
 
 
<span style="color:green">>>> '''getpbxnumbersresult'''</span>
+
<span style="color:green">>>> '''getlinebyuserresult'''</span>
  
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.
+
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.
  
 
<pre>
 
<pre>
    [
+
[
    "getpbxnumbersresult",
+
"getlinebyuserresult",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "foundline": {
 +
  "lineid": "FA86E75A-6383-42B7-873C-37A0654B18EF",
 +
  "linenum": "17002"
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* foundline - информация о связанной с указанным авторизованным пользователем линии - ее идентификатор, номер.
 +
Если пользователь указана неверно, или не авторизован - null.
 +
''Пользователь по умолчанию'' считается авторизованным.
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
====Служебные методы====
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''getversionresult'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат информации о версии сервера Oktell.
 +
 
 +
<pre>
 +
[
 +
"getversion",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "showalloweddbstoredprocs": 1
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* showalloweddbstoredprocs: true|false. Отображать ли список доступных хранимых процедур БД.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''getversionresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.
 +
 
 +
<pre>
 +
[
 +
"getversionresult",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "version": {
 +
  "text": "Версия программы: 2.7.110808(4237.32979). Версия БД: 110713.",
 +
  "dated": "110808",
 +
  "build": "2.7.4237.32979",
 +
  "datedhal": "110808",
 +
  "buildhal": "2.15.3.2871",
 +
  "webserverport": 4067
 +
  }
 +
  "alloweddbstoredprocs": {
 +
  "w_favoritegetbyuser": 1,
 +
  "w_favoritesavebyuser": 1,
 +
  "w_favoritedeletebyuser": 1,
 +
  "w_clientsget": 1,
 +
  "w_clientgroupsget": 1
 +
  }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* version - информация о версии сервера логики и HAL.
 +
//* version:webserverport - номер порта [[Серверный_HTTP_интерфейс|HTTP веб-сервера oktell]].
 +
//* alloweddbstoredprocs - перечень хранимых процедур, доступных для исполнения в БД Oktell
 +
посредством метода <span style="color:green">''execpredefineddbstoredproc''</span>
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''gettemphttppass'''</span>
 +
 
 +
Запрос из CRM в Oktell. Генерирует и возвращает временный пароль на доступ к [[Веб-интерфейс|HTTP веб-серверу]] без авторизации.
 +
Временный пароль живет не более 10 секунд до первого обращения к HTTP с указанием этого пароля среди параметров запроса.
 +
Пароль привязывается к IP адресу дополнительно.
 +
После этого вне зависимости от способа авторизации, установленного для HTTP веб-сервера Oktell, однократный вызов любого [[Серверный_HTTP_интерфейс|метода серверного веб-интерфейса]] возможен без авторизации с указанием среди параметров дополнительного служебного параметра ''temppass=A'', где A - выданный временный пароль.
 +
 
 +
Доступно для [[#Arch2|схемы интеграции 2]].
 +
 
 +
<pre>
 +
[
 +
"gettemphttppass",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "responsetowebsock": true
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''gettemphttppassresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.
 +
 
 +
<pre>
 +
[
 +
"gettemphttppassresult",
 +
{
 +
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "password": "6f3200ac"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* password - временный пароль для подстановки в качестве значения параметра temppass
 +
при осуществлении GET или POST запроса к HTTP веб-серверу Oktell.
 +
Следует иметь в виду, что даже в случае POST запроса со специальным контентом
 +
указание параметра-пароля возможно в теле самой страницы (по аналогии с GET запросом).
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''triggercustomevent'''</span>
 +
 
 +
Запрос из CRM в Oktell на генерацию пользовательского произвольного события всем или только указанным пользователям.
 +
Может быть использовано в [[#Arch2|схеме интеграции 2]].
 +
Производит массовую рассылку указанного события. Точно также как и все остальные события требует подписки.
 +
 
 +
<pre>
 +
[
 +
"triggercustomevent",
 +
{
 +
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "eventname": "newClientCategoryAdded",
 +
  "eventparam": "строка"
 +
  "sendback": 1, // отправлять мне самому или нет
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
[
 +
"triggercustomevent",
 +
{
 +
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "eventname": "newClientCategoryAdded",
 +
  "eventparam": "строка",
 +
  "recipients": [
 +
  "Петров",
 +
  "Сидоров"
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
[
 +
"triggercustomevent",
 +
{
 +
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
 +
  "userlogin": "Иванов",
 +
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "eventname": "newClientCategoryAdded",
 +
  "eventparam": { "param1": "123", "p2": { "asdfasd": "sdfgsdf" } , ... },
 +
  "recipients": [
 +
  "C45D4911-BDE2-40C0-8D11-A4AFF1F160CC",
 +
  "BA2C4BAC-7A7C-4959-B1A7-2F63C248DF3D"
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* recipients - список идентификаторов/логинов получателей сообщений.
 +
Может не быть указанным, тогда отправка производится всем.
 +
//* sendback - генерировать ли событие для самого отправителя. Имеет смысл, поскольку
 +
в случае использования нескольких вкладок в браузере, каждое из подключений
 +
получит событие независимо.
 +
//* eventname - название пользовательского события.
 +
//* eventparam - параметр пользовательского события. Переходит в сгенерированное сообщение без изменений.
 +
Может содержать строку, набор, массив, словарь - все что угодно.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''gettemphttppassresult'''</span>
 +
 
 +
Событие из Oktell пользователям CRM. Отправляется всем пользователям, указанным при запросе на рассылку события.
 +
 
 +
<pre>
 +
[
 +
"customevent",
 +
{
 +
  "qid":"aaa3f5c9-bcd5-4bf9-aef9-0b4ee735170d",
 +
  "userlogin": "Петров",
 +
  "userid": "C45D4911-BDE2-40C0-8D11-A4AFF1F160CC",
 +
  "eventname": "newClientCategoryAdded",
 +
  "triggereduserid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 +
  "triggereduserlogin": "Иванов",
 +
  "eventparam": { "param1": "123", "p2": { "asdfasd": "sdfgsdf" } , ... }
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* eventname - название пользовательского события.
 +
//* eventparam - параметр пользовательского события в неизменном виде, как в запросе.
 +
//* triggereduserid - идентификатор пользователя-рассыльщика.
 +
//* triggereduserlogin - логин пользователя-рассыльщика.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''gettotalqueue'''</span>
 +
 
 +
Запрос из CRM в Oktell на возврат информации обо всех очередях.
 +
Может использоваться без указания пользователя.
 +
Не рекомендуется к частому использованию, так как требует значительных вычислительных ресурсов.
 +
 
 +
<pre>
 +
[
 +
"gettotalqueue",
 +
{
 +
  "qid": "DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D",
 +
  "skipempty": true
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''gettotalqueueresultresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает список всех очередей и их абонентов
 +
 
 +
<pre>
 +
[
 +
"gettotalqueueresult",
 +
{
 +
  "qid": "DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D",
 +
  "result": [
 +
  {
 +
    "numid": "507db30b-f8f7-46cf-b3c7-6b8ba7b696a8",
 +
    "numprefix": "12",
 +
    "ruleid": "6ffab1ac-7b9b-4ba2-8547-233175368b6d",
 +
    "rulename": "Денис"
 +
    "queue": [
 
     {
 
     {
       "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
+
       "objectid": "928efda2-a3b3-423b-9d49-d2e76879c718",
       "userlogin": "Иванов",
+
       "chainid": "d1c2b337-6293-4ea0-a355-f59caaeff54b",
       "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
+
       "srcelementid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
       "mode": "full",
+
       "objecttype": 0,
       "numbers": [
+
      "objecttypestr": "qotQueueLogic",
      {
+
       "queuesource": 1,
        "id": "9079E514-FECF-4DFD-BF48-5EDE4241E3A1",
+
      "queuesourcestr": "qsLineLogic",
        "number": "472",
+
      "callerid": "14",
        "type": 0,
+
      "calledid": "12",
        "typestr": "intRule",
+
      "isuser": true,
        "isgroup": false,
+
      "userid": "da803f01-ea77-40fa-bc9d-e2efb36fd5a8",
        "caption": "Петров",
+
      "userlogin": "Peter",
        "state": 5,
+
      "username": "Петр Александрович",
        "statestr": "usFullbusy",
+
      "department": "Программисты",
        "department": "Руководство"
+
      "managedlineid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
      },
+
      "managedlinenumber": "16001",
      {...},
+
      "srclineid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
      {...}
+
      "srclinenumber": "16001",
       ]
+
      "queuepriority": 9,
    }
+
      "startqueuetime": "2012-06-07 12:58:44",
 +
      "lenqueue": 1.4375,
 +
       "istask": false
 +
      }
 
     ]
 
     ]
 +
  },
 +
  ...
 +
  {}
 +
  ]
 +
}
 +
]
 
</pre>
 
</pre>
 
<pre>
 
<pre>
/* number:type - intRule(0), intFast(2), intIVR(3), intEmergency(4)
+
//* result - содержит список всех очередей. Очередь при этом содержится в словаре.
/* number:state - usDisconnected(0), usReady(1), usLunch(2), usOff(3), usFullbusy(5),
+
//*  result:numid - идентификатор стандартного внутреннего номера, при котором данная очередь.
usReserved(6), usWOPhone(7), usError(100), usRinging(201)
+
//*  result:numprefix - стандартный внутреннего номер, при котором данная очередь.
 +
//*  result:ruleid - идентификатор номерного правила, при котором данная очередь.
 +
//*  result:rulename - название номерного правила, при котором данная очередь.
 +
//*  result:queue - список абонентов очереди в порядке убывания. Каждый абонент содержится в словаре.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green">'''whoareyou'''</span>
 +
 
 +
Двунаправленный запрос на возврат информации об удаленной стороне. Служит для выстраивания взаимоотношений на основе типа подключения, а также дает возможность получить имя системы для указания администратору.
 +
Ответом является сообщение ''iam''.
 +
 
 +
Применяется в [[#Arch2|схеме интеграции 1]].
 +
 
 +
<pre>
 +
[
 +
"whoareyou",
 +
{
 +
  "qid": "4FEEB8EF-DF4B-47AE-8EFE-4BDA577A6FF8",
 +
  "type": "ws-server",
 +
  "name": "Iris CRM",
 +
  "version": 10.5
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* type - собственный тип сервера, осуществляющего запрос.
 +
Oktell при запросе указывает значение ''commserver''.
 +
WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.
 +
//* name - собственное название службы.
 +
//* version - собственная версия службы.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">'''iam'''</span>
 +
 
 +
Двунаправленный ответ на запрос ''whoareyou''. Возвращает информацию об удаленной стороне.
 +
 
 +
<pre>
 +
[
 +
"iam",
 +
{
 +
  "qid": "080C0DF2-442B-410E-9204-4ADB3399FCC0",
 +
  "type": "commserver",
 +
  "name": "Oktell",
 +
  "version": 100425,
 +
  "build": "2.5.3928.8022"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* type - тип удаленного сервера.
 +
Oktell при запросе указывает значение ''commserver''.
 +
WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.
 +
//* name - название службы на удаленнм сервере.
 +
//* version - версия службы на удаленном сервере.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''execpredefineddbstoredproc'''</span>
 +
 
 +
Запрос из CRM в Oktell. Исполняет указанную хранимую процедуру в БД Oktell и возвращает данные всех сформированных в ходе выполнения наборов.
 +
Доступные для исполнения процедуры содержатся в конфигурационном файле ''websocket.config'', а также могут быть возвращены методом ''getversion''.
 +
 
 +
Не требует указания пользователя.
 +
 
 +
Доступно для [[#Arch2|схемы интеграции 2]].
 +
 
 +
<pre>
 +
[
 +
"execpredefineddbstoredproc",
 +
{
 +
  "qid": "7198D943-7BA9-443D-B283-55812BC82AFB",
 +
  "procedure": "T_GetFavorites",
 +
  "inputparams": {
 +
"param1": "XXX",
 +
"param2": 10
 +
}
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* procedure - название процедуры из разрешенного списка.
 +
//* inputparams - значения параметров процедуры. Имена параметров могут содержать в начале символ ''@'',
 +
В случае его отсутствия он добавляется автоматически.
 +
Если в списке присутствует параметр ''authorizeduserid'', его значение будет принудительно заменено
 +
на идентификатор текущего авторизованного пользователя в Oktell. Этим можно пользоваться для
 +
создания в БД процедур, учитывающих инициатора исполнения.
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''execpredefineddbstoredprocresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.
 +
 
 +
<pre>
 +
[
 +
"execpredefineddbstoredprocresult",
 +
{
 +
  "qid": "7198D943-7BA9-443D-B283-55812BC82AFB",
 +
  "result": 1,
 +
  "errorcode": 0,
 +
  "errorstr": "",
 +
  "dataset": [
 +
  [
 +
    ["column1", "column2", "column3"],
 +
    ["row1val1", "row1val2", "row1val3" ],
 +
    ["row2val1", "row2val2", "row2val3" ],
 +
    ...
 +
  ],
 +
  [
 +
    ["column1", "column2"]
 +
  ],
 +
  ...
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* result - 1 или 0. Успешно или неудачно проведена операция.
 +
//* errorcode - код ошибки. 50044 - служебное значение, в случае запрета или исключения при исполнении,
 +
не связанного с ошибкой SQL
 +
//* errorstr - описание ошибки.
 +
//* dataset - наборы данных по порядку выдачи в ходе исполнения хранимой процедуры.
 +
Набор - это список строк, каждая из которых - список значений по ячейкам.
 +
Первая строка в наборе - всегда содержит названия столбцов набора.
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''exectmcall'''</span>
 +
 
 +
Запрос из CRM в Oktell. Осуществляет размещение короткого задания на дозвон и соединение с указанным оператором (пользователем).
 +
Дозвониться до одного из указанных абонентов-номеров группы A, соединить с одним из указанных абонентов-номеров группы B.
 +
Результатом выполнения является одна коммутация.
 +
 
 +
Не требует указания пользователя.
 +
 
 +
<pre>
 +
[
 +
"exectmcall",
 +
{
 +
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
 +
  "taskid": "qud82039lsdfmnasd",
 +
  "a_abonents": [
 +
  "7931289",
 +
  "83959279394",
 +
  "425",
 +
  "688C1DD6-7429-4B47-819D-C15827654A53",
 +
  {
 +
    "type": 11,
 +
"key": "84951435565"
 +
  }
 +
  ],
 +
  "b_abonents": [
 +
  "1211F58F-93AE-470C-895D-E3A163E8FF5F",
 +
  "ivanov",
 +
  "2BC51D79-BA63-47D7-93CA-1F283029C529",
 +
  {
 +
    "type": 12,
 +
    "key": "1211F58F-93AE-470C-895D-E3A163E8FF5F"
 +
  }
 +
  ]
 +
  "mode": 0
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
[
 +
"exectmcall",
 +
{
 +
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
 +
  "taskid": "qud82039lsdfmnasd",
 +
  "taskcode": "xxxxx",
 +
  "a_abonents": ["4952172020"],
 +
  "b_abonents": ["417"],
 +
  "mode": 0,
 +
  "ownertext": "Задача соединения",
 +
  "sessionid": "FB232E90-524A-453C-95BA-1B42251F5A14",
 +
  "projectid": "F95BA34E-2CE2-49FA-B3C2-4344199F5B42",
 +
  "a_callerid": "4959261589",
 +
  "a_music": "Фоновое воспроизведение для оператора",
 +
  "a_usequeue": false,
 +
  "a_queuepriority": 10,
 +
  "a_timeoutsec": 40,
 +
  "b_callerid": "4952172020",
 +
  "b_music": "?**ivr?Фоновое воспроизведение",
 +
  "b_usequeue": true,
 +
  "b_queuepriority": 5,
 +
  "b_timeoutsec": 40,
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
Обязательными параметрами являются только a_abonents и b_abonents. Остальные имеют значения по умолчанию.
 +
 +
//* taskid - уникальный строковый идентификатор задания.
 +
Может быть не указан, тогда генерируется автоматически.
 +
//* taskcode - пользовательский код задачи, передается в сценарии, обслуживающие дозвоны.
 +
//* a_abonents - набор из одного или нескольких абонентов, относящихся к группе A.
 +
//* b_abonents - набор из одного или нескольких абонентов, относящихся к группе B.
 +
abonent:type - типы представления о конкретном абоненте
 +
Undefined   = 0, //Не определен, определить автоматически.
 +
External   = 11,//Внешний номер
 +
InternalItem   = 12,//Внутренний элемент - пользователь или линия,
 +
задаются ключами (идентификатор, номер, логин, имя).
 +
InternalRule   = 13,//Стандартный внутренний номер
 +
InternalFast   = 14,//Быстрый номер
 +
InternalEmergency = 15,//Экстренный номер
 +
InternalIVR   = 16,//Сценарий IVR
 +
//* mode:  
 +
0 - вызывает сначала группу A (достает первого ответившего),  
 +
потом абонентов группы B (достает первого ответившего)
 +
1 - вызывает сначала группу B (достает первого ответившего),  
 +
потом абонентов группы A (достает первого ответившего)
 +
2 - вызывает одновременно всех, достает первого ответившего из группы A
 +
и первого ответившего из группы B.
 +
//* a_music, b_music - мелодия ожидания для абонентов группы A и B. Задается с помощью строки:
 +
- ''?**ivr?scriptname'', где scriptname - название фонового медиа сценария IVR.
 +
- ''?**ff?filepath'', где filepath - абсолютный путь к звуковому файлу (*.mp3 или *.wav).
 +
- ''?**ff?folderpath'', где folderpath - абсолютный путь к каталогу со звуковыми файлами, выбираются рандомно.
 +
- ''?**ff?filename'', где filename - название файла с расширением (*.mp3 или *.wav) в стандартном каталоге Snd.
 +
- абсолютный путь к каталогу cо звуковыми файлами
 +
- абсолютный путь к файлу
 +
- название файла с расширением в стандартном каталоге Snd
 +
- название фонового медиа-сценария IVR
 +
- если не указывать, указывать неверно или указывать пустоту - играется
 +
[[Музыкальное сопровождение#Alternative|альтернативная мелодия ожидания]] (возможно сценарий) из общих настроек
 +
//* sessionid - генерируемый идентификатор цепочки коммутаций/сессии.
 +
//* ownertext - название владельца служебного сценария набора номеров.
 +
//* projectid - привязанный идентификатор проекта (участвует в поиске сценариев).
 +
//* a_usequeue, b_usequeue: true|false. Использовать ли очередь ожидания при вызове внутренних абонентов.
 +
//* a_queuepriority, b_queuepriority: числовой приоритет при размещении в очередях.
 +
Традиционно чем меньше значение - тем больше приоритет.
 +
Значения по умолчанию определены в [[Настройки менеджера очередей|общих настройках]]
 +
//* a_timeoutsec, b_timeoutsec: таймаут в секундах для вызова абонентов соответствующей группы.
 +
Режим использования таймаута задается в разделе [[Настройки менеджера очередей|настроек менеджера очередей]].
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''exectmcallresult'''</span>
 +
 
 +
Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.
 +
 
 +
<pre>
 +
[
 +
"exectmcallresult",
 +
{
 +
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
 +
  "taskid": "qud82039lsdfmnasd"
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
//* taskid - возвращает идентификатор запущенного задания.
 +
В дальнейшем с помощью него можно будет отменить задание (если оно еще не будет к тому времени исполнено)
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''stoptmcall'''</span>
 +
 
 +
Запрос из CRM в Oktell. Отменяет ранее запущенное методом ''exectmcall'' задание, если оно еще не завершило исполнение.
 +
 
 +
Не требует указания пользователя.
 +
 
 +
<pre>
 +
[
 +
"stoptmcall",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859",
 +
  "taskid": "qud82039lsdfmnasd"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''stoptmcallresult'''</span>
 +
 
 +
Ответ от Oktell в CRM. Возвращает результат отмены задания.
 +
 
 +
<pre>
 +
[
 +
"stoptmcallresult",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859",
 +
  "taskid": "qud82039lsdfmnasd",
 +
  "success": false,
 +
  "errortext": "task not found"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''ping'''</span>
 +
 
 +
Запрос из CRM в Oktell. Периодически пробивает канал связи, напоминая о жизнеспособности подключения. Необязательно
 +
 
 +
Не требует указания пользователя.
 +
 
 +
<pre>
 +
[
 +
"ping",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
<span style="color:green">>>> '''pong'''</span>
 +
 
 +
Ответ от Oktell в CRM на запрос ''ping''.
 +
 
 +
<pre>
 +
[
 +
"pong",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
}
 +
]
 +
</pre>
 +
 
 +
 
 +
-------------------------------------------------------------------
 +
<span style="color:green"><<< '''subscribeevent'''</span>,
 +
<span style="color:green">'''unsubscribeevent'''</span>
 +
 
 +
Запрос из CRM в Oktell. Производит соответсвенно подписку и отписку на указанные события.
 +
 
 +
Доступно и требуется только для [[#Arch2|схемы интеграции 2]].
 +
В [[#Arch2|схеме интеграции 1]] события поступают в полном объеме, часть из них объединяются и отправляются на сервер WebCRM без привязки к пользователю; ожидается, что сервер WebCRM самостоятельно размножит их. К таким событиям относятся, например ''pbxnumberstatechanged'', ''conflistchanged'' и им подобные.
 +
 
 +
<pre>
 +
[
 +
"subscribeevent",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
  "eventmethod": "userstatechanged", 
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
[
 +
"subscribeevent",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
  "eventmethod": [
 +
  "userstatechanged",
 +
  "pbxnumberstatechanged"
 +
  ]
 +
}
 +
]
 +
</pre>
 +
<pre>
 +
[
 +
"unsubscribeevent",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
  "eventmethod": "userstatechanged", 
 +
}
 +
]
 +
</pre>
 +
 
 +
События, требующие подписки:
 +
:* pbxnumberstatechanged
 +
:* pbxnumberlistmodified
 +
:* shownotifymessage
 +
:* usertextmessagereceived
 +
:* usertextmessageviewed
 +
:* voicemailreceived
 +
:* userstatechanged
 +
:* phoneevent_acmcallstarted
 +
:* phoneevent_acmcallstopped
 +
:* phoneevent_ringstarted
 +
:* phoneevent_ringstopped
 +
:* phoneevent_ivrstarted
 +
:* phoneevent_ivrstopped
 +
:* phoneevent_commstarted
 +
:* phoneevent_commstopped
 +
:* phoneevent_faxstarted
 +
:* phoneevent_faxstopped
 +
:* phoneevent_faxreceived
 +
:* linestatechanged
 +
:* chainstatechanged
 +
:* flashstatechanged
 +
:* conferenceevent
 +
:* conflistchanged
 +
:* confparamschanged
 +
:* confcompositionchanged
 +
:* confcompetitorstatechanged
 +
:* confentrancedenied
 +
:* confentrancepermitted
 +
:* confentrancerequest
 +
:* confnotifyinvite
 +
:* confpossiblecompetitorstatechanged
 +
:* customevent
 +
:* executemethod ''(список доступных динамических методов содержится в файле websock.config)''
 +
:* cancelmethod
 +
:* showform ''(список доступных динамических форм содержится в файле websock.config)''
 +
:* closeform
 +
 
 +
 
 +
<span style="color:green">>>> '''subscribeeventresult'''</span>,
 +
<span style="color:green">'''unsubscribeeventresult'''</span>
 +
 
 +
Ответ от Oktell в CRM на запросы ''subscribeeventresult'' и ''unsubscribeeventresult'' соответственно.
 +
 
 +
<pre>
 +
[
 +
"subscribeeventresult",
 +
{
 +
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 +
  "result": 1
 +
}
 +
]
 
</pre>
 
</pre>

Версия 18:46, 17 сентября 2012

Наверх


В рамках настоящей статьи рассматриваются вопросы интеграции web-системы и коммуникационной системы (в дальнейшем WebCRM и Oktell). WebCRM на рабочем месте сотрудника используется через браузер. Телефон, находящийся на рабочем месте сотрудника подключен к серверу (узлу коммутаций) Oktell. Решается задача функционального объединения двух системы с предоставлением возможности приема и совершения звонков и управления телефоном из интерфейсов WebCRM.



Краткое описание возможностей телефонии Oktell

Стандартный функционал Oktell предоставляет пользователям:

  • доступ к управлению телефонами (позвонить, переключить, отклонить звонок, организовать конференцию, пригласить других участников в конференцию, подключиться к разговору в режиме прослушивания, помощи и т.д.).
  • доступ к управлению состояниями пользователей (перерыв - чтобы поток входящих звонков не поступал, занят - чтобы отметить факт обработки звонка, переадресация - чтобы все звонки на пользователя перенаправлялись в соответствии с настроенными правилами, готов - чтобы вернуться к обычному режиму).
  • информацию о текущем состоянии телефонов, внутренних номеров, пользователей с т.з. занятости в операциях телефонии.
  • информацию о поступающем звонке, абоненте
  • доступ к статистике разговоров (по правам).
  • доступ к записям разговоров (по правам).
  • доступ к информации об ожидающей очереди абонентов в реальном времени.
  • доступ к контентам сессий и линий.
  • доступ к управлению режимом переадресации.
  • возможность запуска служебных сценариев.

и т.д.


В рамках настройки сценариев Oktell, имеется возможность отправлять синхронные и асинхронные запросы в WebCRM (фактически исполнять методы по событиям в Oktell)и получать ответы и применять их в рамках проведения маршрутизации или любых других действий, реализуемых в сценариях. Например:

  • Выяснить, какому клиенту/контакту принадлежит определившийся номер телефона или введенный им вручную с помощью DTMF-набора номер договора, отфильтровать по черному списку, переключить вызов на ответственного за работу с этим контактом пользователя, если пользователя нет в системе - переключить на секретаря, а если контакт новый - соединить с отделом продаж. Если ответственный пользователь занят, предложить оставить голосовое сообщение для VIP клиентов.
  • В момент поступления звонка открыть карточку у пользователя, которому направляется звонок. Закрыть ее автоматически, если пользователь так и не снял трубку (а снял кто-то другой, или звонок потерялся).
  • Выполнить какое-то важное с т.з. WebCRM действие в случае, например, если пользователь оставил заказ на встречный звонок, занести его в список задач.


Именно сценарии придают жизнь Oktell и его сервисам.

Среди событий Oktell, отрабатываемых в сценариях:

  • поступление внешнего звонка.
  • завершение звонка.
  • переключение абонента на пользователя, группу пользователей, задачу коллцентра.
  • любое из интересующих явлений в ходе обработки звонка (от преобразования номера абонента в нужный формат и сверки времени поступления звонка до обработки контента звонка после завершения и выявления там факта состоявшейся конференции).
  • наступление определенного времени.
  • периодический запуск по таймеру.
  • поступление/отправка e-mail.
  • поступление/отправка sms/icq/jabber.
  • контрольные события call-центра (оператор первым положил трубку, оператор слишком долго находится в перерыве или поствызывной обработке, число операторов в задаче меньше минимально допустимого, число абонентов в очереди задачи больше допустимого и т.д.)
  • ручной запуск сценария по инициативе пользователя или WebCRM.
  • исходящий звонок от пользователя
  • поступление голосовой почты
  • появление где-то в базе данных интересующего события (например появление новой записи в таблице абонентов)
  • появление где-то на веб-ресурсе интересующего события (например температура на улице опустилась ниже нуля)

и т.д.


Схема интеграции 1 (межсерверное подключение)

Arch1.jpg


Сервер Oktell взаимодействует с телефонами и с веб-сервером WebCRM.

Веб-сервер WebCRM взаимодействует ответно с сервером Oktell и с браузерами.

Между сервером Oktell и веб-сервером WebCRM существует только один канал для двустороннего обмена сообщениями.

Установка соединения может производиться как сервером Oktell, так и веб-сервером WebCRM. В случае разрыва соединения сторона-инициатор вновь организует подключение.

  1. При выборе соединения со стороны сервера WebCRM в настройках Web-Socket Oktell должен быть выбран один из режимов «CRM к Oktell» с указанием требуемого способа авторизации.
  2. При выборе соединения со стороны сервера Oktell должен быть выбран один из режимов «Oktell к CRM» с указанием версии протокола Web-Socket.

После установки соединения системы обмениваются данными друг о друге, об авторизованных пользователях, о динамических методах. Все авторизованные в WebCRM пользователи автоматически становятся авторизованными в Oktell. В дальнейшем авторизация подключающихся пользователей и вывод отключившихся осуществляется с помощью сообщений login и logoff. Считается, что авторизацию пользователь проходит на веб-сервере WebCRM, и повторной проверки пароля в Oktell не требуется. Поэтому при организации сообщений login поле password не требует указания.

Любой запрос от клиента к Oktell отправляется на сервер WebCRM, где формируется интеграционное сообщение и перенаправляется на сервер Oktell. Персональные сообщения/команды от Oktell клиенту также направляются на WebCRM, где они должны быть перенаправлены клиенту. Общие сообщения/команды от Oktell направляются к серверу, где проводится их обработка.

Часть общих событий, например изменение состояния абонента в номерном плане, отправляется в WebCRM однократно и без привязки к конкретному пользователю, подразумевая тем самым, что веб-сервер WebCRM самостоятельно размножит сообщение и отправит всем заинтересованным клиентам.

В рамках такой интеграции WebCRM может предоставлять в Oktell некоторые общие сервисы, которые доступны администратору при настройке сценариев Oktell. Например, доступ к БД WebCRM на поиск маршрута для обработки звонка конкретного клиента. Подробнее в разделе Динамическое взаимодействие.


Схема интеграции 2 (клиент-серверное подключение)

Arch2.jpg


Сервер Oktell взаимодействует с телефонами и с конечными клиентами (браузерами).

Веб-сервер CRM взаимодействует только с клиентами и БД.

Между Oktell и каждым клиентом существует один или несколько каналов для двустороннего обмена сообщениями (поддерживается работа в нескольких вкладках браузера).

В данном случае клиенты (браузеры) производят коннект к серверу Oktell, и в его настройках Web-Socket должен быть выбран способ соединения «Браузеры к Oktell», а в сообщениях login должен быть указан пароль (MD5).

При таком способе интеграции у WebCRM не требуется наличие собственного Web-Socket сервера. Каждый клиент (браузер) подключается по Web-Socket протоколу непосредственно к серверу Oktell. Веб-сервер занимается формированием страниц и предоставлением данных из БД WebCRM. Непосредственная взаимосвязь между серверами WebCRM и Oktell отсутствует, доступ не требуется, клиенты самостоятельно обрабатывают и объединяют данные двух систем. По такому принципу реализованы Web-клиент Oktell и плагин Oktell.js.

Поскольку клиентов может быть много, при рассылке событий возможна оптимизация за счет исключения тех клиентов, где конкретное событие не является необходимым. Достигается это путем подписки/отписки клиентов на определенные типы сообщений.

В отличие от схемы интеграции 1, где Oktell запрашивает у сервера WebCRM список динамических методов и форм, здесь роль хранилища этих списков выполняет конфигурационный файл websock.config в рабочем каталоге сервера Oktell.

Применительно к этому способу интеграции существует ряд дополнительных методов интерфейса. Большинство таких методов доступно и при схеме интеграции 1, но не являются там необходимыми, так как часть данных и работ проводится на веб-сервере WebCRM. Исключение составляет метод обращения к БД Oktell на исполнение хранимой процедуры и возврат результатов (execpredefineddbstoredproc). Он существует только для этого способа интеграции, при этом разрешенные для исполнения хранимые процедуры содержатся там же в конфигурационном файле websock.config.


Привязка пользователя к телефону

Решению подлежит задача сопоставления конкретных пользователей CRM с конкретными телефонными устройствами. Поскольку элементы управления устройством находятся в браузере, а влияют они на поведение конкретного телефона. Например, так выглядит простейшая задача перевода звонка из браузера на врача Михайлова: звонок должен поступить на телефон, находящийся в кабинете 103, за компьютером в котором сейчас сидит Михайлов (в браузере открыта WebCRM и авторизован Михайлов). Настройка этого происходит в Oktell.

Пользователи могут работать:

  • стационарно каждый за своим компьютером.
  • перемещаться с одного рабочего место за другое.
  • работать посменно за одним рабочим местом.

(Рабочее место = компьютер + телефон)

Необходимо в каждый момент времени знать, около какого телефона какой пользователь сидит.


Существуют два подхода к решению, также возможны их комбинации в рамках одного сервера.

1. Жесткая привязка пользователя к телефонной учетной записи.

Для этого в карте сети Oktell в свойствах телефона требуется указание пользователя WebCRM

Плюсы: При взаимодействии Oktell и WebCRM используются одни и те же идентификаторы (например логины пользователей), соответственно отсутствует проблема привязки как таковая.

Минусы: Пользователь вынужден перемещаться с одного компьютера на другой вместе со своим телефоном, или переназначая учетную запись в телефонном аппарате.


2. Телефон привязывается к компьютеру, а в момент логина пользователя сопоставление производится через этот компьютер.

Плюсы: Кто бы ни залогинился с этого компьютера, приобретает управление телефоном, все звонки пользователю попадают на этот телефон.

Минусы: Требует указания одного из постоянных идентификаторов компьютера в Oktell, а также передачи его из WebCRM в момент логина для привязки. Это может быть айпи адрес, хостнейм или любой другой постоянный идентификатор, задаваемый в конфигурации.


Синхронизация учетных записей Oktell и WebCRM может производиться по логинам (по умолчанию) или по GUID-идентификаторам. Соответственно в персональных запросах должны указываться userlogin и/или userid.

Логин в Oktell нужен для приведения состояния пользователя в готовность. Без этого звонки на пользователя не поступают, а обрабатываются как и в случае, когда он недоступен. Логофф - обратная операция. В ходе взаимодействия пользователю доступны команды управления своим состоянием. Он может отлучиться, выставить перерыв, переадресацию, занятость и т.д. Все это нужно для того, чтобы изменить направление маршрутизации звонков и режим работы коллцентра. А в случае Схемы интеграции 2 также для авторизации.


ВНИМАНИЕ! Ограничение: Oktell не позволяет пользователям логиниться с разных рабочих мест одновременно. Делается это для того, чтобы каждому пользователю соответствовало не более одного телефона.


Взаимодействие по каналу связи

Socket 3.jpg


Все взаимодействие между Oktell и WebCRM (а также между Oktell и браузером) идет по общему каналу путем двустороннего обмена сообщениями между сторонами.

Взаимодействие на транспортном уровне происходит по Web-Socket протоколу. Поддерживаются версии

В зависимости от выбранной схемы интеграции и выбранного в настройках направления и способа подключения одна из сторон производит подключение (Oktell к серверу WebCRM, сервер WebCRM к Oktell, клиенты WebCRM к Oktell). Рукопожатие (handshake) на установление Web-Socket соединения предлагается также стороной-инициатором. Подробнее. Рукопожатие является HTTP запросом и при необходимости поддерживает прохождение Basic или Digest-авторизации. В качестве логина и пароля выступают указанные в настройках Web-Socket значения. Описание процедуры рукопожатия описывается в документации к каждой версии протокола Web-Socket.

Все сообщения имеют идентификаторы для организации серий типа «запрос-ответ» (поле qid). Сообщения могут адресоваться конкретному пользователю или относиться к общим. В первом случае в сообщении должен присутствовать идентификатор, позволяющий различать одинаковые, но направляемые от разных пользователей команды из WebCRM в Oktell и наоборот соответственно.

Возможные направления и типы сообщений:

  • Oktell генерирует события.
  • Oktell производит запросы к веб-системе. WebCRM отправляет ответы на получаемые запросы.
  • WebCRM производит запросы к Oktell. В том числе и команды. Oktell отправляет ответы на запросы.

Каждое сообщение представляет из себя строку JSON или XML в кодировке UTF-8. Сообщения в общем потоке данных в канале отделяются друг от друга в соотвествии с версией используемого протокола Web-Socket:

  • Версии rfc6455 v13, v8, v7 подразумевают использование фреймов, в заголовках которых определяется тип и размер.
  • Версии 76 и 75 подразумевают отделение сообщений байтами 0 и 255. 0 - в начале сообщения, 255 - в конце. Форматы XML и JSON представления данных в текстовом виде гарантируют отсутствие байтов 0 и 255 в теле сообщений.

Формат самих сообщений определяется непосредственно протоколом интеграции Oktell-WebCRM. Например вот так выглядит сообщение из Oktell в WebCRM о факте входящего вызова в формате json:

Сообщения длиной более 64 КБ упаковываются в Base64 и разбиваются на несколько сообщений длиной до 64К. Для этого используется формат multipart-сообщения в протоколе Oktell-WebCRM. Если версия протокола Web-Socket для передачи сообщений использует фреймы (rfc6455 v13, v8, v7), то способ отправки длинных сообщений в нескольких фреймах определен в самом протоколе. Однако это имеет ограничение: при передаче одного длинного сообщения в нескольких фреймах, оно не может быть прервано передачей других сообщений.

Структура каждого сообщения - это список из двух объектов, первый из которых - тип сообщения, второй - словарь параметров. В словаре обязательно присутствует идентификатор запроса (поле qid с любым текстовым уникальным значением). В случае, когда сообщение производится от имени пользователя, присутствуют его идентификаторы (userid, userlogin).


Среди параметров находятся и индивидуальные параметры сообщения. Поддерживается произвольная вложенность объектов: строк, чисел, дат, словарей, списков.


Json.jpg


Динамическое взаимодействие

В момент создания сценариев в Oktell администратор имеет возможность настроить индивидуальное взаимодействие с WebCRM. Взаимодействие представляет собой вызов определенного метода WebCRM с передачей в него входных параметров, и возможно ожидание его исполнения с возвратом (нескольких) выходных значений.

Сразу после организации подключения к серверу WebCRM Oktell производит запрос доступных в WebCRM динамических методов (как было сказано выше, в рамках схемы интеграции 2 вместо запроса к WebCRM осуществляется загрузка сведений из файла websock.config). В ответ WebCRM перечисляет список действий, инициативу исполнения которых она готова отдать наружу в Oktell. При описании метода упоминаются:

  • человеческое название,
  • краткий код метода,
  • описание для администратора, настраивающего Oktell,
  • список входных параметров с упоминанием типов (и возможных значений для перечислений),
  • список выходных параметров, если метод возвращает данные и призван влиять на алгоритм сценария в Oktell,
  • признак того, нужно ли исполнять метод с привязкой к конкретному пользователю, или это обращение к серверу вообще,
  • разрешено ли отменять исполнение (например для метода «открыть карточку такую-то» возможна отмена, означающая «закрыть карточку такую-то»),
  • куда Oktell направлять запрос - через Web-Socket (стандартный для взаимодействия канал) или по HTTP на альтернативный URL веб-сервера.

По каждому методу дополнительно описывается перечень входных и выходных параметров, их типы, способ исполнения метода (по организованному каналу или отдельным http-подключением), возможность его отмены (для длительных асинхронных операций, например метод Открыть диалоговую форму может быть отменен обратным методом Закрыть диалоговую форму, а может быть прерван с тем же результатом).

В интеграционном интерфейсе Oktell-WebCRM отсутствует таким образом необходимость конкретизировать методы WebCRM. В момент настройки сценария Oktell администратор уже имеет о них информацию и настраивает конкретный сценарий под место.

Администратором определяется одно или несколько из доступных действий, определяется момент исполнения, определяются входные параметры или способ их вычисления, а также режим ожидания, таймаута или асинхронного выполнения. В момент работы Oktell отправляет команду на исполнение в соответствии с определенными администратором настройками. Если метод призван исполняться синхронно и возвращать некие значения, то сценарий приостанавливается, а после получения ответа сохраняет результаты в переменных сценария и продолжает выполнение. Работа с динамическими методами и формами производится в сценариях Oktell компонентом Действие в WebCRM.


Для примера: в момент поступления вызова Oktell определил номер абонента. Производит синхронное исполнение динамического метода WebCRM Вернуть ид компании по номеру телефона, дожидается ответа и принимает в сценарий значение. Далее исполняет динамический метод Ответственный сотрудник по компании, дожидается ответа и принимает в сценарий значение. Все это время абоненту проигрывается голосовое или музыкальное приветствие. Когда воспроизведение завершается, Oktell производит маршрутизацию в соответствии с вернувшимися значениями, а также в момент поступления звонка сотруднику исполняет динамический метод Открыть карточку компании с передачей в качестве параметра идентификатора, вернувшегося на первом шаге. В случае, если сотрудник не снимает трубку, Oktell отменяет исполнение метода, тем самым отдавая команду на закрытие карточки компании.

Ни об одном из перечисленных в примере методов WebCRM сервер Oktell не знает, зато знает администратор, настраивающий систему на работу совместно с WebCRM.


Подробно список и интерфейс методов динамического взаимодействия приведен в разделе Методы динамического взаимодействия.


Список методов общего интерфейса

Взаимодействие происходит путем обмена сообщениями по установившемуся транспортному каналу. Часть сообщений носят вид событий, часть - вид запросов (команд), часть - вид ответов на запросы. Каждое сообщение представляет собой байтовое представление текста с escape-последовательностями, описывающего объект в виде структуры JSON (возможен вариант XML), преобразованного через кодировку UTF8.

На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров:

[ "messagecode", {"var1":"value1", "var2":"value2", ...} ]

В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари):

"var1":["a", "b", "c"]  или "var2":{"a":1, "b":2, "c":3}

В каждом сообщении присутствует параметр qid, содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида «запрос-ответ». В случае, когда сообщение относится к конкретному пользователю (отправляется от его имени), в нем присутствуют параметры userlogin и userid. По умолчанию синхронизация учетных записей пользователей происходит по их уникальным логинам.


Обмен данными об активных пользователях


>>> getactiveusers

Запрос из Oktell в CRM на возврат текущих активных (авторизованных) пользователей. Применяется при старте одной из систем в момент организации подключения.

[
 "getactiveusers",
 {
  "qid": "9C44D978-E380-4405-B1B9-C4894BF188A7"
 }
]


<<< activeusers

Ответное сообщение из CRM в Oktell со списком активных авторизованных пользователей CRM.

[
 "activeusers",
 {
  "qid": "9C44D978-E380-4405-B1B9-C4894BF188A7",
  "users": [
   {"userlogin": "ivanov", "userid": "20394857203948752345"},
   {"userlogin": "petrov", "userid": "kasjdfhlaksjdfhlaks"},
   {"userlogin": "sidorov", "userid": "987495873948573945"}
  ]
 }
]



<<< login

Сообщение из CRM в Oktell об авторизации пользователя. Запрос кросс-авторизации в Oktell.

[
 "login",
 {
  "qid": "9D484E0E-BE08-47B5-ABBD-490936881056",
  "userlogin": "ivanov",
  "userid": "29834234234"
 }
]


>>> loginresult

Сообщение из Oktell в CRM о результате кросс-авторизации пользователя. Может быть отправлено в ответ на запрос кросс-авторизации в Oktell, а может быть отправлено самостоятельно по результатам обработки сообщения activeusers.

[
 "loginresult",
 {
  "qid": "939AA33E-011F-4FEC-B60A-8BC1B4888B5A",
  "userlogin": "ivanov",
  "userid": "29834234234",
  "result": 0,
  "error": 50093,
  "errormsg": "Пользователь уже зарегистрирован"
 }
]



<<< logout

Сообщение из CRM в Oktell о выходе (логауте) пользователя. Команда на кросс-логаут в Oktell.

[
 "logout",
 {
  "qid": "9D484E0E-BE08-47B5-ABBD-490936881056",
  "userlogin": "ivanov",
  "userid": "29834234234"
 }
]


>>> logoutresult

Сообщение из Oktell в CRM о результате кросс-логаута пользователя. Может быть отправлено в ответ на запрос кросс-логаута в Oktell, а может быть отправлено самостоятельно в случае длительного отсутствия откликов от пользователя (не задействовано).

[
 "logoutresult",
 {
  "qid": "4B25E210-2D67-4675-A5AE-46DC9CBC32F9",
  "userlogin": "ivanov",
  "userid": "29834234234",
  "result": 1
 }
]



>>> pbxnumberstatechanged

Сообщение из Oktell о смене состояния внутреннего номера (или группы внутренних номеров)

[
 "pbxnumberstatechanged",
 {
  "qid": "5B9508DF-565B-44E1-A122-6FEB70ADA0B9",
  "numbers": [
   {"num": "425", "numstateid": 3},
   {"num": "427", "numstateid": 2},
   {"num": "#82", "numstateid": 3}
  ]
 }
]



Обмен состояниями пользователей


<<< entercallcenter

Запрос из CRM на вход в режим коллцентра. При проведении изменений в ответ отправляется сообщение userstatechanged.

[
 "entercallcenter",
 {
  "qid": "7DD2ED7A-B6BF-4988-A780-99719C65CA5D",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


<<< exitcallcenter

Запрос из CRM на выход из режима коллцентра. При проведении изменений в ответ отправляется сообщение userstatechanged.

[
 "exitcallcenter",
 {
  "qid": "6E899456-C373-48EB-949E-E2C0D79D45EA",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



Текстовый чат


>>> usertextmessagereceived

Сообщение-событие из Oktell в CRM о новом входящем текстовом сообщении чата.

[
 "usertextmessagereceived",
 {
  "qid": "D5582E04-2964-438C-A8DB-21AF898BBAE0",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "messageid": "0263C7BF-DEB3-406F-9CF9-6F56D828C755",
  "snduserlogin": "Петров",
  "snduserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "sndusername": "Петров Антон Григорьевич",
  "messagetext": "раз два три четыре пять вышел зайчик погулять",
  "messagedate": "2011-03-27 14:12:28",
 }
]


>>> usertextmessageviewed

Сообщение-событие из Oktell в CRM о прочитанности отправленного сообщения.

[
 "usertextmessageviewed",
 {
  "qid": "D5582E04-2964-438C-A8DB-21AF898BBAE0",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "vieweduserid": "66D12297-E400-4862-BD24-F6DACCFDF9DA",
  "messageids": [
    "0263C7BF-DEB3-406F-9CF9-6F56D828C755",
    "4B5110FD-899B-4429-A659-2B9695B4D89E"
  ]
 }
]


<<< sendusertextmessage

Запрос из CRM в Oktell на отправку текстового сообщения в рамках чата другому пользователю.

[
 "sendusertextmessage",
 {
  "qid": "F14F31B7-F203-4462-975F-3A37DD16240B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "messageid": "0B9A00D8-12F6-4A0F-A8A3-4C840E98C240",
  "recvuserlogin": "0B9A00D8-12F6-4A0F-A8A3-4C840E98C240",
  "recvuserid": "0B9A00D8-12F6-4A0F-A8A3-4C840E98C240",
  "messagetext": "раз два три четыре пять вышел зайчик погулять",
 }
]


<<< setusermessageviewed

Запрос из CRM в Oktell на выставление признака прочитанности текстового сообщения пользователем. В ответ возвращается количество реально отмеченных сообщений. Может быть больше или меньше указанного. Событие о прочитанности отправляется пользователю, указанному в поле senderuserid.

[
 "setusermessageviewed",
 {
  "qid": "AA29AE60-50C3-48EE-A32E-3D98265D7412",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "senderuserid": "689BD58D-2288-4E93-8647-58FB0756F3CA",
  "messageids": [ 
    "0B9A00D8-12F6-4A0F-A8A3-4C840E98C240", 
    "4748964E-9ADC-4999-9ACB-12B8B46660CF" 
  ]
 }
]



Голосовая почта


>>> voicemailreceived

Сообщение из Oktell в CRM о факте поступления голосовой почты на ящик пользователя.

[
 "voicemailreceived",
 {
  "qid": "080C0DF2-442B-410E-9204-4ADB3399FCC0",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



Всплывающие уведомления


>>> shownotifymessage

Команда из Oktell в CRM об уведомлении пользователя по аналогии с всплывающими уведомлениями клиентского приложения Oktell

[
 "shownotifymessage",
 {
  "qid": "99CC8C57-1793-486A-AFB1-6E5CA3E6855E",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "id": "A33027E1-096F-38B8-1198-BB4D7C15823A",
  "sender": "АТС",
  "text": "Петров",
  "savedb": "true",
  "autohide": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "dtformat": "dd.MM.yyyy HH:mm:ss",
  "dt": "25.09.2011 13:07:12",
  "type": 262144,
  "backcolor": "00FF0000",
  "uniquekey": "E7899B61-55C3-4007-91EE-DDB348913AA8",
 }
]
//* id - идентификатор сообщения. Присутствует, если сообщение сохранено в БД.
//* savedb: true|false. Сохранено ли сообщение в БД.
//* dt - дата/время генерации уведомления.
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только 
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)
//* backcolor - hex AARRGGBB
//* type - тип сообщения из флагового списка кратных двойке кодов



<<< setnotifyshown

Запрос из CRM в Oktell об установке признака прочтенности уведомления.

[
 "setnotifyshown",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "id": "A33027E1-096F-38B8-1198-BB4D7C15823A",
  "wasshown": false
	}
 }
]
//* id - идентификатор сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только 
             одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это)
//* ids - список идентификаторов отображенных уведомлений.			 
//* backcolor - hex AARRGGBB
//* type - тип сообщения из флагового списка кратных двойке кодов



Сообщения от АТС


>>> phoneevent_ringstarted

Сообщение из Oktell в CRM о входящем звонке. Не имеет отношения к постановке звонка в очередь. Фактически когда телефон пользователя начал звенеть.

[
 "phoneevent_ringstarted",
 {
  "qid": "00488421-97E4-443B-81B7-D645E403AEBB",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "callerlineid": "BC1FD50B-651F-459D-B659-28230E919673",
  "callerlinenum": "13027",
  "callerdirection": "oktell_pbx",
  "callerid": "73439170203",
  "callername": "ОАО Металлург",
  "callerdescription": "Металлоконструкции, изделия из черных и цветных металлов",
  "callerinfo": "Абонент: 315, Задача 'Входящие в коллцентр'",
  "callercomment": "Еще что-то об абоненте",
  "calleruserlogin": "",
  "calleruserid": "00000000-0000-0000-0000-000000000000",
  "isextline": true,
  "canfax": true,
  "canvideo": false,
  "isconference": false,
  "confid": "00000000-0000-0000-0000-000000000000",
  "confname": "",
  "confroom": 0,
  "confinviternumber": "",
  "confinviteruserid": "00000000-0000-0000-0000-000000000000",
  "confinviteruserlogin": "",
  "istask": true,
  "taskid": "F94BD1FE-B628-4CC3-B215-F3F84B275EDD",
  "taskname": "Входящие в коллцентр"
 }
]
//* Частично могут отсутстовать параметры, описывающие абонента. 
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid
//    Если isconference=false, то отсутствует confid, confname, confroom



>>> phoneevent_ringstopped

Сообщение из Oktell в CRM о прекращении входящего вызова. Если пользователь не снял трубку, а вызов прекратился.

[
 "phoneevent_ringstopped",
 {
  "qid": "BEB91146-BA27-4236-9CAC-EF562719E7E5",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718"
 }
]



>>> phoneevent_commstarted

Сообщение из Oktell в CRM о коммутации

[
 "phoneevent_commstarted",
 {
  "qid": "B7ACFEC1-65BB-4773-A425-DC39F5D1A48C",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "commutationid": "072F2EE0-4B3B-49A7-AB5B-E213AE752A53"
  "callerlineid": "BC1FD50B-651F-459D-B659-28230E919673",
  "callerlinenum": "13027",
  "callerid": "73439170203",
  "callername": "ОАО Металлург",
  "callerdescription": "Металлоконструкции, изделия из черных и цветных металлов",
  "callerinfosimple": "Абонент: 315, Задача 'Входящие в коллцентр'",
  "callercomment": "Еще что-то об абоненте",
  "calleruserlogin": "",
  "calleruserid": "00000000-0000-0000-0000-000000000000",
  "isextline": true,
  "canfax": true,
  "canvideo": false,
  "cansendfiles": true,
  "canbuildconf": true,
  "isivrscript": false,
  "isconference": false,
  "confid": "00000000-0000-0000-0000-000000000000",
  "confname": "",
  "confroom": 0,
  "istask": true,
  "taskid": "F94BD1FE-B628-4CC3-B215-F3F84B275EDD",
  "taskname": "Входящие в коллцентр",
  "tasktalklimitsec": 180,
  "taskfromhandlesec": 24
 }
]
//* Частично могут отсутстовать параметры, описывающие абонента. 
//    Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec
//    Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid
//    Если isconference=false, то отсутствует confid, confname, confroom



>>> phoneevent_commstopped

Сообщение из Oktell в CRM о завершении коммутации. Не путать со звонком. Коммутаций в рамках обработки звонка может быть много.

[
 "phoneevent_commstopped",
 {
  "qid": "D514511C-BD4F-406B-B9C7-695CDC6C40E7",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "commutationid": "072F2EE0-4B3B-49A7-AB5B-E213AE752A53"
 }
]



>>> phoneevent_ivrstarted

Сообщение из Oktell в CRM о соединении с IVR-сценарием.

[
 "phoneevent_ivrstarted",
 {
  "qid": "46E07742-0B24-4DD6-B4C6-12CDC1F7B938",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "scriptname": "(Служебный) Вход в АТС",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "commutationid": "072F2EE0-4B3B-49A7-AB5B-E213AE752A53"
 }
]



>>> phoneevent_ivrstopped

Сообщение из Oktell в CRM о завершении соединения с IVR сценарием.

[
 "phoneevent_ivrstopped",
 {
  "qid": "FC9DD78C-1A5F-4E06-9AB5-A9CEDE025F6A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



>>> phoneevent_acmcallstarted

Сообщение из Oktell в CRM о запуске автодозвона.

[
 "phoneevent_acmcallstarted",
 {
  "qid": "410B1930-423E-4632-B3DE-54EC48C0E8A0",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "callnumber": "471",
  "isextline": false,
  "callername": "Сигизмунд Львович Кац",
 }
]



>>> phoneevent_acmcallstopped

Сообщение из Oktell в CRM об остановке автодозвона.

[
 "phoneevent_acmcallstopped",
 {
  "qid": "410B1930-423E-4632-B3DE-54EC48C0E8A0",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
 }
]



>>> phoneevent_faxstarted

Сообщение из Oktell о начале факс-сеанса на оппозитном канале.

[
 "phoneevent_faxstarted",
 {
  "qid": "28979AE8-8E06-4EED-9114-98CB126CA8F4",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "opponentlineid": "BC1FD50B-651F-459D-B659-28230E919673",
  "faxdirection": "send",
  "description": ""
 }
]



>>> phoneevent_faxstopped

Сообщение из Oktell о завершении факс-сеанса на оппозитном канале (следом возврат в коммутацию, если трубку не положили там).

[
 "phoneevent_faxstopped",
 {
  "qid": "324CD087-BC2D-4FF3-A9BD-86A7276A4DED",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
  "result": 0,
  "error": 65289,
  "errormsg": "NoFaxPages"
 }
]
//* error: список FaxError



>>> phoneevent_faxreceived

Cообщение из Oktell о завершении приема факса со ссылками на файлы.

[
 "phoneevent_faxreceived",
 {
  "qid": "C20E48DF-628D-4954-ADDE-D2C3B31C6700",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "files": [
   {
    "filename": "",
    "filesize": 172934,
    "filelink": "\/temp\/receivedfax\/a802d3ea\/img01.tiff",
    "availabletill": "2011-03-27 23:39:18",
   },
   {...},
   {...}
  ]
 }
]
//* Даже если result=0, могут быть частично полученные файлы.



Команды к АТС


<<< pbxautocallstart

Запрос из CRM к Oktell на совершение звонка. В зависимости от текущего состояния линии - запускается автодозвон или нет, звонок на внешнюю линию, во внутрений номерной план, или автоопределение, сначала вызываться сам пользователь будет, а потом звонок абоненту, или сначала дозвон до абонента, а потом вызов пользователя.

[
 "pbxautocallstart",
 {
  "qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "number": "425",
  "direction": "int",
  "sequence": "abonent",
  "intercom": false
 }
]
//* direction: int, ext, undefined (внутрь, наружу, автоопределение)
//* sequence: abonent, user (сначала до абонента, сначала до пользователя)
//* intercom: true|false (интерком-вызов, обычный вызов)


>>> pbxautocallstartresult

Ответ из Oktell в CRM на запрос звонка.

[
 "pbxautocallstartresult",
 {
  "qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "number": "425",
  "direction": "int",
  "sequence": "abonent",
  "result": 0,
  "error": 5,
  "errormsg": "cntNumberNotFound"
 }
]
//* error, errormsg: EACMAnswer:
//*   cntStartedSuccessfully = 0 //Звонок успешно взят в реализацию
//*   cntUserNotReady = 1 //У пользователя-инициатора не найдены линии, готовые линии, или состояние кривое
//*   cntBusy = 2 //При звонке на внутренний номер - признак занятости. В очереди и сам повисеть может
//*   cntExtLineNotFound = 3, //Не найдены готовые внешние линии
//*   cntError = 4, //Прочие ошибки, исключения.
//*   cntControlNotReady = 5, //Режим не доделан.
//*   cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервер сам будет определять 
				  направление звонка, это вообще не будет задействовано)



<<< pbxautocallabort

Запрос из CRM к Oktell на прекращение автодозвона

[
 "pbxautocallabort",
 {
  "qid": "28BF3E8F-1F97-47AB-BD42-92D174D4A705",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



<<< pbxtransfercall

Аналогично запросу из CRM на совершение звонка - запрос на совершение переключения. Если линия свободна - действует аналогично полностью запросу на звонок. Если пользователь в разговоре - через флэш набирает указанный номер.

[
 "pbxtransfercall",
 {
  "qid": "81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "number": "425",
  "direction": "int",
  "sequence": "abonent",
  "intercom": false  
 }
]


>>> pbxtransfercallresult

И аналогичный ответ из Oktell в CRM.

[
 "pbxtransfercallresult",
 {
  "qid": "81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "number": "425",
  "direction": "int",
  "sequence": "abonent",
  "result": 0,
  "error": 5,
  "errormsg": "cntNumberNotFound"
 }
]



>>> pbxdeclinecall

Запрос из CRM к Oktell на отклонение звонка.

[
 "pbxdeclinecall",
 {
  "qid": "0AFB2B0C-A68F-448B-9B4B-AB42096D4E95",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



<<< pbxabortcall

Запрос из CRM к Oktell на обрыв текущего существующего сеанса связи. Не путать с DeclineCall. Прекращает коммутацию, если существует, прекращает автодозвон, если запущен.

[
 "pbxabortcall",
 {
  "qid": "53F2EE86-46AF-4A37-8C60-2F27EADD10DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



<<< pbxmakeflash

Запрос из CRM в Oktell на программную эмуляцию флэш.

[
 "pbxmakeflash",
 {
  "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "mode": "default"
 }
]
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.
		abort - обрыв текущему и переключение на того кто на удержании
		switch - возврат к тому, кто на удержании, с размещением текущего на удержании
		next - обрыв текущему и переход сразу в набор номера



<<< pbxclearflash

Запрос из CRM в Oktell на обрыв линии, находящейся на удержании.

[
 "pbxclearflash",
 {
  "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]
]



<<< pbxfaxreceive

Запрос из CRM в Oktell на переключение в прием факса.

[
 "pbxfaxreceive",
 {
  "qid": "59305AD1-40A5-476A-B76D-2DAB1F2A89D3",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "linkmode": "simple"
 }
]
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы
		в событии об окончании приема.
			full - вернуть абсолютную ссылку на скачивание через http.
			simple - вернуть относительную ссылку на скачивание.
		При формировании абсолютной ссылки в качестве доменного имени берется значение из 
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.


<<< pbxfaxstop

Запрос из CRM в Oktell на прерывание приема/передачи факса.

[
 "pbxfaxstop",
 {
  "qid": "59305AD1-40A5-476A-B76D-2DAB1F2A89D3",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]



<<< pbxmakeflash

Запрос из CRM в Oktell на программную эмуляцию флэш.

[
 "pbxmakeflash",
 {
  "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "mode": "default"
 }
]
//* mode - abort, switch, next - устанавливает поведение, если на удержании уже находится абонент.
			abort - обрыв текущему и переключение на того кто на удержании
			switch - возврат к тому, кто на удержании, с размещением текущего на удержании
			next - обрыв текущему и переход сразу в набор номера



Запуск служебного сценария


<<< startsvcscript <<< execsvcscript

Запрос из CRM в Oktell на запуск служебного сценария. startsvcscript - от имени пользователя, execsvcscript - без указания пользователя от имени сервера.

[
 "startsvcscript",
 {
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "scriptname": "Служебный сценарий получения почты",
  "startparam1": "значение параметра 1",
  "startparam2": "значение параметра 2",
  "startparam3": "значение параметра 3",
  "startparam4": "значение параметра 4",
  "startparam5": "значение параметра 5",
  "waitresponse": true,
  "waittimeoutsec": 10
 }
]
[
 "execsvcscript",
 {
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
  "scriptname": "Служебный сценарий получения почты",
  "startparam1": "значение параметра 1",
  "startparam2": "значение параметра 2",
  "startparam3": "значение параметра 3",
  "startparam4": "значение параметра 4",
  "startparam5": "значение параметра 5",
  "waitresponse": true,
  "waittimeoutsec": 10
 }
]
//* scriptname - название сценария в общем разделе.
//* startparamN - строковое значение соответствующего параметра.
		При необходимости передать больше параметров следует объединять параметры в одну строку
		с использованием символа-разделителя, а в самом сценарии производить обратную операцию.
//* waitresponse - ожидать ли ответа.
//* waittimeoutsec - таймаут ожидания ответа в секундах. 0 - вечно.


>>> startsvcscriptresult

Ответ Oktell на запрос запуска служебного сценария.

[
 "startsvcscriptresult",
 {
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "scriptname": "Служебный сценарий получения почты",
  "result": 0,
  "returnvalue": "присвоенный в сценарии результат",
  "error": 10
 }
]
[
 "execsvcscriptresult",
 {
  "qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
  "scriptname": "Служебный сценарий получения почты",
  "result": 0,
  "returnvalue": "присвоенный в сценарии результат",
  "error": 10
 }
]
//*  error: 10 - файл не найден, 11 - исключение, 12 - таймаут
//*  returnvalue - возвращаемый результат сценария (если сценарий исполнился, и его завершения удалось дождаться)



Методы динамического взаимодействия

Информация от CRM о поддерживаемых методах, доступных Oktell для инициации исполнения.

Серия методов forms - частный случай методов, позволяющий выделить в отдельную категорию работу с карточками. Смысл и способ работы тот же самый. Тем не менее карточки могут быть представлены как методы.


Методы:

  1. >>> getavailablemethods
  2. <<< availablemethods
  3. >>> executemethod
  4. >>> cancelmethod
  5. <<< methodresult

Формы:

  1. >>> getavailableforms
  2. <<< availableforms
  3. >>> showform
  4. >>> closeform
  5. <<< formresult



>>> getavailablemethods

Отправляет из Oktell в CRM сообщение-запрос на возврат доступных динамических методов CRM.

[
 "getavailablemethods",
 {
  "qid": "76EF6E46-23DA-47B6-B3BD-A7076FEDE170"
 }
]


<<< availablemethods

Сообщение-ответ из CRM в Oktell со списком доступных динамических методов CRM.

[
 "availablemethods",
 {
  "qid": "76EF6E46-23DA-47B6-B3BD-A7076FEDE170",
  "methods": [
   {
    "key": "16893E86-4D73-4F4C-8629-6E484B2CB5B0", 
    "name": "Вернуть данные о компании",
    "description": "Возвращает информацию о компании по одному из выбранных идентификаторов, чтобы в дальнейшем использовать при открытии карточки данных о компании",
    "connectiontype": "http",
    "defineuser": false,
    "allowcancel": false,
    "inputparams": [
     {
      "key": "type",
      "name": "Тип поиска",
      "description": "",
      "type": "list",
      "items": [
       {
        id: "byphone",
        name: "По номеру телефона"
       },
       {
        id: "byaccount",
        name: "По номеру договора"
       }
      ]
     },
     {
      "key": "data",
      "name": "Значение идентификатора",
      "description": "Номер телефона или номер договора (в соответствии с выбранным типом)",
      "type": "string"
     },
     {...},
     {...}
    ]
    "outputparams": [
     {
      "key": "accountid",
      "name": "Идентификатор клиента",
      "description": "Для дальнейшей передачи на отображение карточки",
      "type": "string"
     },
     {...},
     {...}
    ]
   },
   {
    "key": "createrecord", 
    "name": "Создать новое дело",
    "description": "Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке",
    "connectiontype": "websock",
    "defineuser": true,
    "allowcancel": false,
    "inputparams": [
     {
      "key": "sessionid",
      "name": "Идентификатор сессии звонка",
      "description": "Для связи с номером дела",
      "type": "string"
     }
    ],
    "outputparams": [
     {
      "key": "recordid",
      "name": "Идентификатор созданного дела",
      "description": "Для дальнейшей передачи на отображение карточки",
      "type": "string"
     }
     {...},
     {...}
    ]
   },
   {
    "key": "card_records", 
    "name": "Показать карточку «ДЕЛА»",
    "description": "Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке",
    "connectiontype": "websock",
    "defineuser": true,
    "allowcancel": true,
    "inputparams": [
     {
      "key": "recordid",
      "name": "Номер дела",
      "description": "Номер дела, который ранее был создан при вызове метода «Создать запись дела»",
      "type": "string"
     },
     {
      "key": "accountid",
      "name": "Идентификатор клиента",
      "description": "Идентификатор клиента в базе данных CRM",
      "type": "string"
     },
     {...},
     {...}
    ]
   },
   {...},
   {...}
  ]
 }
]



>>> executemethod

Сообщение-команда из Oktell в CRM на выполнение динамического метода (возможно у конкретного пользователя).

[
 "executemethod",
 {
  "qid": "4A8E20A1-57F9-4CA6-B4EE-221E2EB00364",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "methodkey": "createrecord",
  "executionid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86",
  "inputparameters": {
   "sessionid": "2A2C48FE-D8B6-4B51-951A-09D31543D000"
  }
 }
]


<<< methodresult

Сообщение-результат выполнения динамического метода из CRM в Oktell с возвратом выходных значений. Не отправляется, если исполнение прерывается командой CancelMethod.

[
 "methodresult",
 {
  "qid": "A238110C-6B74-4980-AA23-41402B1E9B0E",
  "methodkey": "createrecord",
  "executionid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86",
  "outputparameters": {
   "recordid": "ADCB1376-BA66-496C-A56E-AB7A7D5A9193"
  }
 }
]



>>> cancelmethod

Сообщение-команда из Oktell на прекращение выполнения ранее запущенного динамического метода.

[
 "cancelmethod",
 {
  "qid": "6ADC3F1E-B1DD-4768-BAF8-3EEB477B2F17",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "methodkey": "card_records",
  "executionid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86",
  "forcecancel": 0
 }
]



>>> getavailableforms

Отправляет из Oktell в CRM сообщение-запрос на возврат доступных карточек CRM.

[
 "getavailableforms",
 {
  "qid": "7A1FF57A-ED91-4033-A42F-1D2AE630450E"
 }
]


<<< availableforms

Cообщение-ответ из CRM в Oktell со списком доступных карточек CRM.

[
 "availableforms",
 {
  "qid": "7A1FF57A-ED91-4033-A42F-1D2AE630450E",
  "forms": [
   {
    "key": "B840825C-95BB-49B8-9B30-74D3225701BF", 
    "name": "Данные о компании",
    "description": "Отображает контактные данные об абоненте (комании или человеке) при входящем/исходящем звонке",
    "inputparams": [
     {
      "key": "accountid",
      "name": "Код компании",
      "description": "Код компании, который CRM возвращает в поле [accountid] в ответ на запрос данных о компании по номеру телефона",
      "type": "string"
     },
     {
      "key": "page",
      "name": "Активная страница",
      "description": "Открываемая страница формы по умолчанию при открытии карточки",
      "type": "list",
      "items": [
       {
        id: "page1",
        name: "Контактные данные"
       },
       {
        id: "page2",
        name: "История взаимодействия"
       },
       {
        id: "page3",
        name: "Комментарии"
       }
      ]
     {...},
     {...}
    ]
   },
   {...},
   {...}
  ]
 }
]



>>> showform

Сообщение-команда из Oktell в CRM на открытие карточки у конкретного пользователя.

[
 "showform",
 {
  "qid": "5CF770AE-E308-41DA-B89E-7BBCE75BE36F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "formkey": "B840825C-95BB-49B8-9B30-74D3225701BF",
  "windowid": "9F5D8B1A-8818-41EA-A240-04DA07498C40",
  "inputparameters": {
   "accountid": "05379F49-AB22-4872-B2C2-0D4BA019EA0B",
   "page": "page2"
  }
 }
]


<<< formresult

Сообщение-результат из CRM в Oktell при закрытии карточки пользователем с возвратом выходных значений. Не отправляется, если отображение прерывается командой CloseForm

[
 "formresult",
 {
  "qid": "EC9E1619-AC1B-4071-98B9-30808B9ED0EC",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "formkey": "EC9E1619-AC1B-4071-98B9-30808B9ED0EC",
  "windowid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86",
  "outputparameters": {
   "comment": "блаблабла"
  }
 }
]



>>> closeform

Сообщение-команда из Oktell на закрытие карточки у конкретного пользователя.

[
 "closeform",
 {
  "qid": "FAA1A503-FEC6-4D23-ADA9-2E4FD63F2C96",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "formkey": "B840825C-95BB-49B8-9B30-74D3225701BF",
  "windowid": "9F5D8B1A-8818-41EA-A240-04DA07498C40",
  "forceclose": 0
 }
]



Конференц-связь

Запросы из CRM, ответы от Oktell, события из Oktell


<<< confhandleevent

Запрос из CRM к Oktell. Подписка/отписка на указанную категорию событий сервера конференций.

[
 "confhandleevent",
 {
  "qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "eventtype": "competitors",
  "handle": true
 }
]
//* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates
               предполагается, что в общем случае инфа идет только о списке конференций (conferences);
                 когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors);
                 когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения - 
                   о состояниях всех пользователей (userstates).
               Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться, 
                   чтобы не заваливать канал порожняком.
//* handle - true|false - подписаться/отписаться



<<< checkcanconnecttogathertoconference

Запрос из CRM к oktell. В момент коммутации, в случае если во флеш-буфере находится абонент, определяет, существует ли возможность переключиться всем вместе в конференцию единой командой. Это возможно, если один из абонентов - конференция, а другой - линия/пользователь.

[
 "checkcanconnecttogathertoconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> confcheckcanconnecttogatherresult

Ответ из Oktell в CRM на запрос возможности совместного переключения в конференцию.

[
 "confcheckcanconnecttogatherresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "canconnecttogather": true,
  "inconference": false,
 }
]



<<< connecttogathertoconference

Запрос из CRM к oktell. Производит совместное переключение текущего онлайн-абонента и флеш-абонента в существующую конференцию.

[
 "connecttogathertoconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]



<<< buildconferencefromcommutation

Запрос из CRM к oktell. Производит преобразование текущей коммутации в конференцию с двумя участниками.

[
 "buildconferencefromcommutation",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]



<<< attachasghost

Запрос из CRM к Oktell. Производит подключение к указанному каналу/пользователю на прослушку/помощь.

[
 "attachasghost",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "ghostedid": "FE9D6B52-C267-4D39-AC9F-81A0F44713FF",
  "ghostedlogin": "Петров"
 }
]


>>> attachasghostresult

Ответ из Oktell в CRM на запрос о подключении к каналу на прослушку.

[
 "attachasghostresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 0,
  "error": 52703
 }
]
//* ghostedid - ид пользователя или линии, к которому подцепляться для прослушки
//* ghostedlogin - логин пользователя, к которому подцепляться для прослушки



<<< getconferences

Запрос из CRM в Oktell на возврат текущих активных конференц-сессий.

[
 "getconferences",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getconferencesresult

Ответ из Oktell в CRM со списком текущих активных конференц-сессий.

[
 "getconferencesresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferencelist": [
   {
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
    "room": 884,
    "name": "Планерка",
    "description": "",
    "accessmode": 11,
    "accessmodestr": "Free",
    "isselector": true,
    "record": true,
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "creatorlogin": "Иванов",
    "creatorname": "Иван Иванович Иванов", 
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "directorlogin": "Петров",
    "directorname": "Петр Петрович Петров",
    "timestart": "2011-04-03 17:58:22",
    "canvieweachother": true,
    "everyonecaninvite": true,
    "recordrights": 2,
    "recordrightsstr": "Competitors",
    "isghost": false,
    "ghostmode": 11,
    "ghostmodestr": "Monitor"
   },
   {...},
   {...}
  ]
 }
]



<<< getconferencecompetitors

Запрос из CRM в Oktell на возврат текущих участников указанной конференции.

[
 "getconferencecompetitors",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22"
 }
]


>>> getconferencecompetitorsresult

Ответ из Oktell в CRM со списком текущих участников указанной в запросе конференции.

[
 "getconferencecompetitorsresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
  "competitorlist": [
   {
    "competitorid": "65AC0E98-64DE-41CF-B609-D00A4C8B07FD",
    "chainid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
    "sessionid": "91687102-E19F-466C-A0BE-B6C3EEF83EE7",
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "username": "Петр Петрович Петров",
    "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "linenumber": "17004",
    "number": "472",
    "intnumber": "472",
    "extnumber": "",
    "confstate": 11,
    "confstatestr": "OnlineTalking",
    "wanttalk": false,
    "isdirector": true,
    "iscreator": false,
    "isghost": false,
    "isghostmajor": false,
    "islifebuoy": false
   },
   {...},
   {...}
  ]
 }
]



<<< getusersforconferenceinvitelist

Запрос из CRM в Oktell на возврат возможных участников конференции (учетных записей всех пользователей системы с указанием их состояний и присутствия в других конференциях).

[
 "getusersforconferenceinvitelist",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getusersforconferenceinvitelistresult

Ответ из Oktell в CRM со списком учетных записей, доступных для приглашения в конференцию с их текущими состояниями и присутствием в других конференциях.

[
 "getusersforconferenceinvitelistresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "possiblecompetitorlist": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "username": "Петр Петрович Петров",
    "groupid": "F72C315A-F9EA-471E-A679-D4BA4797DB51",
    "groupname": "Руководство"
    "userstate": 5,
    "userstatestr": "usFullbusy",
    "isredirect": false,
    "islunch": false,
    "inconference": true,
    "conferenceid": "F16D26E3-2A78-49C2-AFCE-815611A16E22",
    "confstate": 11,
    "confstatestr": "OnlineTalking"
   },
   {...},
   {...}
  ],
  "result": 1
 }
]



<<< createnewconference

Запрос из CRM в Oktell на создание новой конференции. Указывает параметры самой конференц-сессии, список участников для приглашения на старте.

[
 "createnewconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conference": {
   "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
   "room": 578
   "name": "Совещание с заказчиком",
   "description": "",
   "accessmode": "free",
   "isselector": true,
   "record": true,
   "recordrights": "selected",
   "everyonecaninvite": true,
   "canvieweachother": true
  },
  "competitors": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "intnumber": "472",
    "extnumber": "89047289889",
    "cantalk": true
   },
   {...},
   {...}
  ],
  "recordusers": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
   },
   {...},
   {...}
  ]
 }
]
//* conference:accessmode - free|shared|closed (свободный вход, вход по запросу, вход запрещен)
//* conference:recordrights - director|competitors|selected (только управляющий, все участники, избранные участники)
			Определяет, кто может прослушивать запись конференции.
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один 
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
//* список recordusers следует указывать, если conference:recordrights=selected.


>>> createnewconferenceresult

Ответ из Oktell в CRM с результатом исполнения команды на создание конференции.

[
 "createnewconferenceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 0,
  "error": 1,
  "errormsg": "alreadyexists",
 }
]



<<< setupexistingconference

Запрос из CRM в Oktell от имени управляющего конференции на изменение параметров указанной конференции.

[
 "setupexistingconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conference": {
   "id": "17A3F9D2-040C-471B-A4F5-6A13BEB27667",
   "room": 578
   "name": "Совещание с заказчиком",
   "description": "",
   "accessmode": "free",
   "isselector": true,
   "recordrights": "selected",
   "everyonecaninvite": true,
   "canvieweachother": true,
   "ghostmode": "monitor"
  },
  "recordusers": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
   },
   {...},
   {...}
  ]
 }
]


>>> setupexistingconferenceresult

Ответ из Oktell в CRM с результатом исполнения команды на изменение параметров конференции.

[
 "setupexistingconferenceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 0,
  "error": 1,
  "errormsg": "notfound",
 }
]
//* conference:accessmode - free|shared|closed
//* conference:recordrights - director|competitors|selected
//* conference:ghostmode - monitor|help|talk
//* список recordusers имеет смысл только когда conference:recordrights=selected.



<<< getconferenceinfo

Запрос из CRM в Oktell на возврат текущих параметров указанной конференции.

[
 "getconferenceinfo",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
 }
]


>>> getconferenceinforesult

Ответ из Oktell в CRM. Возвращает текущие настройки указанной в запросе конференции, текущих ее участников и их состояния.

[
 "getconferenceinforesult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "conference": {
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
    "room": 884,
    "name": "Планерка",
    "description": "",
    "accessmode": 11,
    "accessmodestr": "Free",
    "isselector": true,
    "record": true,
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "creatorlogin": "Иванов",
    "creatorname": "Иван Иванович Иванов", 
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "directorlogin": "Петров",
    "directorname": "Петр Петрович Петров",
    "timestart": "2011-04-03 17:58:22",
    "canvieweachother": true,
    "everyonecaninvite": true,
    "recordrights": 2,
    "recordrightsstr": "Competitors",
    "isghost": false,
    "ghostmode": 11,
    "ghostmodestr": "Monitor"
  },
  "competitors": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "intnumber": "472",
    "extnumber": "89047289889",
    "cantalk": true
   },
   {...},
   {...}
  ],
  "recordusers": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
   },
   {...},
   {...}
  ]
 }
]



<<< stopconference

Запрос из CRM в Oktell от имени управляющего конференции на прекращение указанной конференции.

[
 "stopconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
 }
]


>>> stopconferenceresult

Ответ из Oktell в CRM с результатом выполнения запроса на прекращение указанной конференции.

[
 "stopconferenceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 0,
  "error": 1,
  "errormsg": "accessdenied"
 }
]



<<< confsetvoiceparams

Запрос из CRM в Oktell от имени управляющего конференции на изменение голосовых свойств канала указанного участника указанной конференции.

[
 "confsetvoiceparams",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "competitor": {
   "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
   "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
   "userlogin": "Петров",
   "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
   "cantalk": true,
   "canlisten": true,
   "ghosthelp": false
  }
 }
]
//* competitor - указывает на одного участника конференции. 
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов 
							{competitorid, userid|userlogin, lineid}

//*  competitor:cantalk - может ли говорить
//*  competitor:canlisten - может ли слышать
//*  competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов - 
					может ли слышать подключившегося супервизора


>>> confsetvoiceparamsresult

Ответ из Oktell в CRM с результатом выполнения запроса на изменение голосовых свойств канала.

[
 "confsetvoiceparamsresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 0,
  "error": 1,
  "errormsg": "accessdenied"
 }
]



<<< confsetwanttalk

Запрос из CRM в Oktell от имени простого бесправного участника селекторного совещания на взятие голоса (сообщение для управляющего).

[
 "confsetwanttalk",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "wanttalk": true
 }
]


>>> confsetwanttalkresult

Ответ из Oktell в CRM с результатом выполнения запроса на взятие голоса.

[
 "confsetwanttalkresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< confsetghostmode

Запрос из CRM в Oktell от имени прослушивающего супервизора на изменение режима конференц-помощи.

[
 "confsetghostmode",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "ghostmode": "help",
 }
]
//* ghostmode - monitor, help, conference (подслушивание, помощь, конференция)

>>> confsetghostmoderesult

Ответ из Oktell в CRM с результатом выполнения запроса на изменение режима конференц-помощи.

[
 "confsetghostmoderesult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< exitconference

Запрос из CRM в Oktell на вывод авторизованного пользователя из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне.

[
 "exitconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
 }
]


>>> exitconferenceresult

Ответ из Oktell в CRM с результатом выполнения запроса на выход из конференции.

[
 "exitconferenceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< confdisconnectcompetitor

Запрос из CRM в Oktell от имени управляющего конференцией на вывод из конференции указанного участника.

[
 "confdisconnectcompetitor",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "competitor": {
   "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
   "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
   "userlogin": "Петров",
   "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
  }
 }
]
//* competitor - указывает на одного участника конференции. 
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов 
	{competitorid, userid|userlogin, lineid}


>>> confdisconnectcompetitorresult

Ответ из Oktell в CRM с результатом выполнения запроса на вывод указанного в запросе участника.

[
 "confdisconnectcompetitorresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< enterconference

Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference

[
 "enterconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3"
 }
]


>>> enterconferenceresult

Ответ из Oktell в CRM с результатом выполнения запроса на вход в конференцию.

[
 "enterconferenceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< confdisconnectcompetitor

Запрос-команда из CRM в Oktell от имени управляющего конференцией на разрешение/запрет входа в конференцию указанному участнику, ранее запросившему право входа.

[
 "confpermitdenyentrance",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "competitor": {
   "competitorid": "249995A5-8A64-49CC-87CA-D797FCFB7782",
   "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
   "userlogin": "Петров",
   "lineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
   "permit": true
  }
 }
]
	
//* competitor - указывает на одного участника конференции. 
/    	достаточно/следует указывать только один из набора определяющих участника идентификаторов 
	{competitorid, userid|userlogin, lineid}


>>> confpermitdenyentranceresult

Ответ из Oktell в CRM с результатом выполнения запроса на разрешение/запрет входа в конференцию участнику.

[
 "confpermitdenyentranceresult",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



<<< invitetoconference

Запрос из CRM в Oktell от имени управляющего конференцией или любого другого участника на приглашение в конференцию стороннего абонента (пользователя, линию, абонента по внутреннему/внешнему номеру).

[
 "invitetoconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "competitors": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "lineid": "F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "intnumber": "472",
    "extnumber": "89047289889",
    "cantalk": true
   },
   {...},
   {...}
  ]
 }
]
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один 
			параметр из набора {userid|userlogin, lineid, intnumber, extnumber}


>>> invitetoconference

Ответ из Oktell в CRM с результатом выполнения запроса на приглашение нового участника конференции.

[
 "invitetoconference",
 {
  "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
  "result": 1
 }
]



События из Oktell, касающиеся конференций


>>> conflistchanged

Событие из Oktell в CRM об изменении списка текущих активных конференций.

[
 "conflistchanged",
 {
  "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
  "conferencelist": [
   {
    "id": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3",
    "room": 884,
    "name": "Планерка",
    "description": "",
    "accessmode": 11,
    "accessmodestr": "Free",
    "isselector": true,
    "record": true,
    "creatorid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "creatorlogin": "Иванов",
    "creatorname": "Иван Иванович Иванов", 
    "directorid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "directorlogin": "Петров",
    "directorname": "Петр Петрович Петров",
    "timestart": "2011-04-03 17:58:22",
    "canvieweachother": true,
    "everyonecaninvite": true,
    "recordrights": 2,
    "recordrightsstr": "Competitors",
    "isghost": false,
    "ghostmode": 11,
    "ghostmodestr": "Monitor"
   },
   {...},
   {...}
  ]
 }
]



>>> "conf***"

Другие событие из Oktell в CRM об изменениях на сервере конференций. Общий список возможных событий приведен ниже.

[
 "conf***",
 {
  "qid": "2A6380B4-ADD4-4CD3-9A5C-9483A3B3723A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "eventinfo": {
     ***
  }
 }
]
//* confparamschanged, 
//* confcompositionchanged, 
//* confcompetitorstatechanged, 
//* confentrancedenied, 
//* confentrancepermitted, 
//* confentrancerequest, 
//* confnotifyinvite, 
//* confpossiblecompetitorstatechanged



Состояния пользователей и линий


>>> userstatechanged

Сообщение из Oktell в CRM о смене состояния пользователя в Oktell. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.

[
 "userstatechanged",
 {
  "qid": "66F8D479-0234-47DF-B043-3A065FF464A7",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "userstateid": 2,
  "onredirect": true,
  "onlunch": false,
  "oncallcenter": false
 }
]



<<< setuserstate

Запрос из CRM к Oktell на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение userstatechanged.

[
 "setuserstate",
 {
  "qid": "2A45010A-8EEA-4876-90CB-F062459D4BE2",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "userstateid": 2,
  "onredirect": false,
  "lunchreasonid": 120,
  "lunchreasonmsg": ""
 }
]
//* lunchreasonid и lunchreasonmsg - расширение для будущей статистики, устанавливают причину перерыва. 
			id - если причина одна из стандартных. msg - если что-то уникальное юзер ввел.



<<< getuserstate

Запрос из CRM в Oktell состояния указанного пользователя системы.

[
 "getuserstate",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> getuserstateresult

Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы.

[
 "getuserstateresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "userstate": 5,
  "userstateid": 5,
  "userstatestr": "usFullbusy",
  "onredirect": true,
  "onlunch": false,
  "oncallcenter": false
 }
]



<<< checkuserintask

Запрос из CRM в Oktell о присутствии указанного пользователя в задачах коллцентра.

[
 "checkuserintask",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> checkuserintaskresult

Ответ из Oktell в CRM с ответом на запрос присутствия указанного в запросе пользователя в задачах коллчентра. Описание задачи в случае положительного ответа.

[
 "checkuserintaskresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "intask": true,
  "task": {,
   "id": "1D565B41-1D16-46DE-B2C5-CF55ED5279F0",
   "name": "Исходящий обзвон",
   "code": "af-2329",
   "direction": "outgoing",
   "contacttype": 0,
   "contacttypestr": "Call",
   "projectid": "E6ADBA0D-C9FF-40F2-96FF-6D2F455F9D5A"
  }
 }
]



<<< getmyuserinfo

Запрос из CRM в Oktell на получение информации о текущем авторизованном пользователе: имя, внутренний номер, номер и идентификатор линии.

[
 "getmyuserinfo", 
 { 
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
 "userlogin": "Иванов",
 "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",	
 }	  

] </pre>


>>> getmyuserinforesult

Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.

[
 "getmyuserinforesult",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "username": "Иванов Иван Иванович",
  "mainpbxnumber": "471",
  "hasline": 1,
  "lineid": "267F8F36-4713-4B66-81BD-019512E56E7E",
  "linenumber": "17374",
  }
 }
]



<<< getuserphoto

Запрос из CRM в Oktell о текущем изображении (аватарке) указанного пользователя.

[
 "getuserphoto",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "photoownerlogin": "Петров",
  "photoownerid": "3F140170-AEEF-4621-AF9D-247116AE1411"
  "mode": "link"
 }
]
//* mode - link, page, data. По умолчанию page. 
		link - вернуть абсолютную ссылку на скачивание через http.
		page - вернуть относительную ссылку на скачивание.
		вернуть данные изображения в base64.
	При формировании абсолютной ссылки в качестве доменного имени берется значение из 
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
//* photoownerlogin, photoownerid - логин и/или идентификатор пользователя, чья аватарка требуется
	Может не указываться, тогда будет возвращена аватарка авторизованного пользователя.


>>> getuserphotoresult

Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.

[
 "getuserphotoresult",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "link": "http://..."
  "link32": "http://..."
  "link96": "http://..."
  }
 }
]
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи
		будет находиться в поле errormsg. Например "File not found".
//* imagedatab64. В случае возврата целиком изображения, оно будет в base64 строке содержаться в поле.
//* link, link32, link96. В случае возврата ссылки на изображение в полях лежат соответственно
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.



<<< getalluserphotolink

Запрос из CRM в Oktell на получение ссылок на текущие изображения (аватарки) всех пользователей системы.

[
 "getalluserphotolink",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "mode": "link"
 }
]
//* mode - link, page. По умолчанию page. 
		link - вернуть абсолютную ссылку на скачивание через http.
		page - вернуть относительную ссылку на скачивание.
	При формировании абсолютной ссылки в качестве доменного имени берется значение из 
	раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.


>>> getalluserphotolinkresult

Ответ из Oktell в CRM с ответом на запрос ссылкок на текущие изображения (аватарки) всех пользователей системы.

[
 "getalluserphotolinkresult",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "links": [ 
   {
    "userid": "C6036E73-FB90-4F0C-B780-81CE5659BFEA",
    "userlogin": "Сидоров",
    "link": "http://...",
    "link32x32": "http://...",
    "link96x96": "http://...",
   },
   ...
  ]
 }
]
//* result. Если в наборе есть хотя бы одна аватарка, будет содержать 1. Иначе 0.
//* links. Содержит набор пользовательских словарей, в каждом из которых идентификатор, 
		логин и набор ссылок link, link32, link96. В полях лежат соответственно
		ссылки на полное изображение, 32х32- и 96x96- пиксельные образы.



<<< setmyuserphoto

Запрос из CRM в Oktell на установку нового изображения (аватарки) текущего пользователя.

	[
	 "setmyuserphoto",
	 {
	  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
	  "userlogin": "Иванов",
	  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
	  "filepath": "",
	  "imagedatab64": "",
	  "filename": ""
	 }
	]
//* filepath - если файл уже на сервере где-то, то это путь к нему - 
		относительный рабочего каталога, относительный файлового хранилища, или абсолютный.
		Допускается устанавливать в качестве аватарки изображения размером не более 1 MБ.
   либо
//* imagedatab64 и filename - если файл целиком прокачивается через веб-сокет, то тут base64 строка
		с образом файла.

//* если не указано ни filepath, ни imagedatab64, ни filename - стирает текущую аватарку.


>>> setmyuserphotoresult

Ответ из Oktell в CRM с ответом на запрос информации о текущем авторизованном пользователе.

[
 "setmyuserphotoresult",
 {
  "qid": "0DD06DFF-E7C7-431B-BC29-920EAC81F76F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1
  }
 }
]
//* result. В случае отсутствия файла или по любой другой причине неудачи описание неудачи
			будет находиться в поле errormsg. Например "File not found".



<<< changepassword

Запрос из CRM в Oktell на изменение пароля текущего авторизованного пользователя

[
 "changepassword",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "newpwdmd5": "",
  "oldpwdmd5": ""
 }
]
//* oldpwdmd5 - MD5 текущего пароля.
//* newpwdmd5 - MD5 нового пароля.


>>> changepasswordresult

Ответ от Oktell в CRM о результате изменения пароля.

[
 "changepasswordresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 0,
  "errormsg": "password should be md5 string"	
 }
]



<<< getcurrentlinestate

Запрос из CRM в Oktell состояния телефонной линии указанного пользователя.

[
 "getcurrentlinestate",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> getcurrentlinestateresult

Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы.

[
 "getcurrentlinestateresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "hasline": true,
  "lineid": "866692FC-DA08-459D-BAA1-428F9BA6A0D1",
  "linenumber": "17012",
  "linetype": 5,
  "linetypestr": "ltIntIP",
  "linestate": 32,
  "linestatestr": "lsCommutated"
 }
]



<<< getcurrentqueue

Запрос из CRM в Oktell состояния очереди указанного пользователя.

[
 "getcurrentqueue",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> getcurrentqueueresult

Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы.

[
 "getcurrentqueueresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "queue": [
   {
    "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
    "objecttype": 0,
    "objecttypestr": "qotQueueLogic",
    "queuesource": 1,
    "queuesourcestr": "qsLineLogic",
    "queuepriority": 9,
    "srcelementid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "srclineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "srclinenumber": "17004",
    "startqueuetime": "2011-04-05 15:02:28",
    "lenqueue": 72,
    "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "managedlinenumber": "17004",
    "callerid": "472",
    "calledid": "479",
    "isuser": true,
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "username": "Петр Петрович Петров",
    "department": "Руководство",
    "chainid": "02B99AD3-C954-4FD3-B07D-DFEDD83C0BF5",
    "istask": true,
    "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
    "taskname": "Входящая кампания",
    "taskdirection": "incoming",
    "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
    "tasklistinfo": [
     {
      "key": "Название организации",
      "value": "ООО МДГХ"
     },
     {...},
     {...}
    ]
   },
   {...},
   {...}
  ]
 }
]



<<< getcallingoutabonentinfo

Запрос из CRM в Oktell на возврат информации об абоненте, которому осуществляется исходящий вызов от имени указанного пользователя.

[
 "getcallingoutabonentinfo",
 {
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getcallingoutabonentinforesult

Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя.

[
 "getcallingoutabonentinforesult",
 {
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
  "number": "89032728973",
  "name": "",
  "lineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
  "linenumber": "13005"
 }
]



<<< getflashedabonentinfo

Запрос из CRM в Oktell на возврат информации об абоненте, находящемся на удержании.

[
 "getflashedabonentinfo",
 {
  "qid": "DC35D182-8BAB-4DE4-919C-5F79090D92DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getcallingoutabonentinforesult

Ответ из Oktell в CRM. Возвращает информацию об абоненте, находящемся на удержании

[
 "getflashedabonentinforesult",
 {
  "qid": "DC35D182-8BAB-4DE4-919C-5F79090D92DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "containsflashed": 1,
  "abonent": {
    "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
    "isconference": 0,
	"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
	"conferenceroom": "#124",
	"conferencename": "Планерка",
	"conferencedescription": "",
    "name": "",
    "comment": "",
    "description": "",
    "simplename": "",
    "number": "89032728973",
    "lineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
    "linenumber": "13005",
    "userid": "",
    "userlogin": "",
    "username": ""
   }
 }
]



<<< getextendedlineinfo

Запрос из CRM в Oktell на возврат расширенной информации о текущей линии и ее оппозитных абонентах: текущее состояние, информация об абоненте в коммутации, информация об абоненте на удержании.

[
 "getextendedlineinfo",
 {
  "qid": "55D54351-651E-4EC2-8E48-1D5136811FB9",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getextendedlineinfo

Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя.

[
 "getextendedlineinforesult",
 {
  "qid": "55D54351-651E-4EC2-8E48-1D5136811FB9",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "linestateid": 5,
  "linestatestr": "lsCommutated,
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
  "datetimeformat" = "dd.MM.yyyy HH:mm:ss",
  "activetimestart" = "01.12.2011 16:59:28",
  "abonent": {
    "isconference": false,
	"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
	"conferenceroom": "#124",
	"conferencename": "Планерка",
	"conferencedescription": "",
    "iscommutated": false,
    "iswaitingfaxline": false,
    "iswaitinginflash": false,
    "iswaitingforanswer": false,
	"number": "",
	"name": "",
	"description": "",
	"userid": "",
	"userlogin": "",
	"username": "",
	"comment": "",
	"simplename": "",
	"lineid": "",
	"linenumber": "",
	"isextline": false,
    "iswaitingforanswer": false,
	"extnumber": "",
	"queuesourceid": 1,
	"queuesourcestr": "",
    "isivr": false,
	"ivrname": "",
    "isautocall": false,
	"number": "",
    "isringing": false,
	"ringtimesec": 172,
	"isconference": false,
		"conferenceid": "",
		"conferencename": "",
		"conferenceroom": "",
		"conferencedescription": "",
		"inviteruserid": "",
		"inviterusername": "",
		"inviteruserlogin": "",
	"number": "",
	"name": "",
	"comment": "",
	"description": "",
	"direction": "",
	"isextline": true,
	"istask": false,
		"taskid": "",
		"taskname": "",
	"userid": "",
	"userlogin": "",
	"username": "",
	"lineid": "",
	"linenumber": ""
  }
  "isflashing": true,
  "flashed": {
    "isconference": true,
	"conferenceid": "0D2A4CA1-FF17-473B-A5E9-E035CB16E257",
	"conferenceroom": "#124",
	"conferencename": "Планерка",
	"conferencedescription": "",
	"number": "",
    "name": "",
    "description": "",
    "userid": "",
    "userlogin": "",
    "username": "",
    "comment": "",
    "simplename": "",
    "lineid": "",
    "linenumber": "",
    "isextline": false
  }
 }
]
//* С отступом в примере указаны поля, появляющиеся в случае, если базовое булево поле имеет значение true. 
//      Например, если isringing=true, то указанные с отступом поля будут присутствовать и представлять собой
//      информацию об абоненте, осуществляющем вызов текущего канала.



Управление переадресацией


<<< getredirectrules

Запрос из CRM в Oktell на возврат списка правил переадресации для текущего пользователя с их настройками.

[
 "getredirectrules",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> getredirectrulesresult

Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.

[
 "getredirectrulesresult",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "redirectrules": [
   {
    "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
    "caption": "Постоянное",
    "description": "Действует всегда, когда я в состоянии переадресации",
    "priority": 1,
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "isenabled": true,
    "allowcascade": true,
    "state": 2,
    "statestr": "Active",
    "destinationnumber": "89050213951",
    "onlyforredirectstate": true,
    "definesources": true,
    "sources": [
     {
      "type": 0,
      "typestr": "ExtNumber",
      "description": "",
      "srcnumber": "4959741589",
      "srcid": ""
     },
     ...
    ],
    "defineschedule": true,
    "tformat": "HH:mm:ss",
    "schedule": [
     {
      "weekday": 0,
      "weekdaystr": "Sunday",
      "tstart": "00:00:00",
      "tstop": "23:59:59",
     },
     ...
    ]
   },
   ...
  ]
 }
]
//*  state: disabled=0, enabled=1, active=2
//*  defineschedule - если false, значит активно всегда
//*  definesources - если false, значит для всех номеров
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. 
		Если номер - то указывается scrnumber, иначе srcid



<<< saveredirectrules

Запрос из CRM в Oktell. Сохраняет новое/измененное правило переадресации для текущего пользователя.

[
 "saveredirectrules",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "redirectrules": [
   {
    "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
    "caption": "Постоянное",
    "description": "Действует всегда, когда я в состоянии переадресации",
    "priority": 1,
    "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
    "isenabled": true,
    "allowcascade": true,
    "destinationnumber": "89050213951",
    "onlyforredirectstate": true,
    "definesources": true,
    "sources": [
     {
      "type": 0,
      "typestr": "ExtNumber",
      "description": "",
      "srcnumber": "4959741589",
      "srcid": ""
     },
     ...
    ],
    "defineschedule": true,
    "tformat": "HH:mm:ss",
    "schedule": [
     {
      "weekday": 0,
      "weekdaystr": "Sunday",
      "tstart": "00:00:00",
      "tstop": "23:59:59",
     },
     ...
    ]
   },
   ...
  ]
 }
]
//*  state: disabled=0, enabled=1, active=2
//*  defineschedule - если false, значит активно всегда
//*  definesources - если false, значит для всех номеров
//*  sourcetype - extnumber=0, user=1, client=3, clientgroup=4. Если номер - то указывается scrnumber, иначе srcid


>>> saveredirectrulesresult

Ответ из Oktell в CRM. Возвращает список правил переадресации для текущего пользователя с их настройками.

[
 "saveredirectrulesresult",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1
 }
]



<<< deleteredirectrules

Запрос из CRM в Oktell. Удаляет указанные правила переадресации для текущего пользователя.

[
 "deleteredirectrules",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
  "ids": [
   "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
   ...
  ]
 }
]


>>> deleteredirectrulesresult

Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на удаление правил переадресации.

[
 "deleteredirectrulesresult",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]



<<< setredirectruleenabled

Запрос из CRM в Oktell. Включает/выключает указанные правила переадресации.

[
 "setredirectruleenabled",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
  "id": "5FD3120D-E86B-4F4B-B57C-AC32343CD00F",
  "enabled": true
 }
]


>>> setredirectruleenabledresult

Ответ из Oktell в CRM. Ничего не возвращает, кроме факта выполнения запроса на включение/выключения указанных правил переадресации.

[
 "setredirectruleenabledresult",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]



Контент звонка


<<< getchaincontent

Запрос из CRM в Oktell на возврат контента текущей сессии, в которой участвует линия указанного пользователя. Кто инициировал звонок, когда, с кем коммутировался, кто переключал, куда, на кого, когда, были ли комментарии какие-то установлены в контент...

   [
     "getchaincontent",
     {
      "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
      "userlogin": "Иванов",
      "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
     }
    ]


>>> getchaincontentresult

Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя.

[
 "getchaincontentresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
  "result": 1,
  "content": {
   "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
   "createtime": "2011-04-06 20:38:41",
   "customfield": "трололололо",
   "trace": [
    {
     "contentelementtype": "call",
     "pbxdirection": "internal",
     "objectid": "723114EE-2ABF-4806-9BC6-FBB532C31B44",
     "objecttype": 0,
     "objecttypestr": "qotQueueLogic",
     "queuesource": 5,
     "queuesourcestr": "qsIncomingTask",
     "queuepriority": 7,
     "srcelementid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
     "srclineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
     "srclinenumber": "13005",
     "startqueuetime": "2011-04-06 20:38:41",
     "managedlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
     "managedlinenumber": "17004",
     "callerid": "89048928835",
     "calledid": "4959211586",
     "isuser": false,
     "department": "",
     "istask": true,
     "taskid": "95575C37-5FDE-412C-8F42-36D55B1EC6BB",
     "taskname": "Входящая кампания",
     "taskdirection": "incoming",
     "tasklistid": "7D9A3E9C-0AD3-4C68-BC02-4EBFE3684507",
     "tasklistinfo": [
      {
       "key": "Название организации",
       "value": "ООО МДГХ"
      }
     ]
    },
    {
     "contentelementtype": "commutation",
     "commutationid": "58D76504-DA2D-42C2-9016-1089A94DC1BF",
     "timestart": "2011-04-06 20:40:01",
     "timeanswer": "2011-04-06 20:40:04",
     "connectiontype": 5,
     "connectiontypestr": "ctOuterInner",
     "isrecorded": true,
     "customfield": "траляляляля",
     "alineid": "98F670D2-20E2-4883-B45E-42CDE1F3365F",
     "alinenumber": "13005",
     "anumberdialed": "4959211586",
     "aoutnumber": "89048928835",
     "aisuser": false,
     "atext": "ООО «СДЗЦ» (89048928835)",
     "blineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
     "blinenumber": "17004",
     "bnumberdialed": "",
     "boutnumber": "472",
     "bisuser": true,
     "buserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
     "buserlogin": "Петров",
     "busername": "Петр Петрович Петров",
     "btext": "Петр Петрович Петров",
     "timestop": "2011-04-06 20:42:12",
     "length": 128.32,
     "stopside": "a",
     "stopreason": 2,
     "stopreasonstr": "scrAbonentHangOff"
    },
    {...},
    {...}
   ]
  }
 }
]
* trace:contentelementtype: 



<<< setchaincontentcustomfield

Запрос из CRM в Oktell на установку комментария в контент текущей сессии, в которой участвует канал указанного пользователя.

[
 "setchaincontentcustomfield",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "customfield": "фывафыдвлаожфыдлвао"
 }
]


>>> setchaincontentcustomfieldresult

Ответ из Oktell в CRM с результатом установки комментария в контент текущей сессии, в которой участвует канал указанного в запросе пользователя.

[
 "setchaincontentcustomfieldresult",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
  "result": 1
 }
]



<<< setchaincontentcustomfield

Запрос из CRM в Oktell на возврат комментария из контента текущей сессии, в которой участвует канал указанного пользователя.

[
 "getchaincontentcustomfield",
 {
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
 }
]


>>> getchaincontentcustomfieldresult

Ответ из Oktell в CRM. Возвращает комментарий из контента текущей сессии, в которой участвует канал указанного в запросе пользователя.

[
 "getchaincontentcustomfieldresult",
 {
  "qid": "AF4B98AA-51D8-4944-B10C-04B0DE1E1BBC",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "chainid": "19ADB2C3-A0B5-47AB-AB2C-CBE15CF98968",
  "customfield": "фывафыдвлаожфыдлвао",
  "result": 1
 }
]



Журнал звонков


<<< getpbxcalljournal

Запрос из CRM в Oktell на возврат журнала звонков АТС по указанному фильтру в соответствии с правами пользователя. В том числе ссылки на файлы записей разговоров.

[
 "getpbxcalljournal",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "filter": {
    "idconn": "08708573-4AF9-45F2-83B7-B8A0DDEF52EC",
    "idchain": "94B5B657-3009-45E0-9095-F5D7BA163EB2",
    "datestart": "2011-04-07",
    "datestop": "2011-04-07",
    "timestart": "08:00:00",
    "timestop": "20:00:00",
    "connectiontype": "all",
    "intnumber": "",
    "outnumber": "89503222555",
    "minduration": 1,
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin: "Петров"
    "comment": "",
    "showcallcenter": false,
    "taskid": "00000000-0000-0000-0000-000000000000"
  }
 }
]
//* filter - фильтр для запроса. Все поля не являются обязательными.
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00 без звонков call-центра 
		длительностью более 1 секунды, которые доступны авторизованному пользователю по правам контроля.
	К фильтру могут быть применены: 
		idconn - идентификатор конкретно интересующей коммутации.
		idchain - идентификатор конкретно интересующей цепочки коммутаций/сессии.
		datestart - дата начала интересующего периода. Включительно.
		datestop - дата окончания интересующего периода. Включительно.
		timestart - время начала интересующего внутридневного интервала. 
		timestop - время окончания интересующего внутридневного интервала. 
		connectiontype - тип соединения (all, incoming, outcoming, internal, conference).
		intnumber - интересующий внутренний номер.
		outnumber - интересующий внешний номер.
		minduration - минимальная длительность коммутации в секундах, может быть действительным значением.
		userid - идентификатор интересующего пользователя.
		userlogin - логин интересующего пользователя.
		comment - строка включения в комментарии.
		showcallcenter: true|false. Отображать ли коммутации call-центра.
		taskid - идентификатор задачи в рамках коллцентра, чьи звонки интересны.


<<< getpbxcalljournalresult

Ответ от Oktell в CRM. Возвращает журнал звонков АТС по указанному фильтру в соответствии с правами пользователя.

[
 "getpbxcalljournalresult",
 {
  "qid": "4CC7EDEC-499B-4C03-95D3-57B8C30FC110",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "dtformat": "dd.MM.yyyy HH:mm:ss",
  "data": [
   {
    "commutationid": "044d56f9-7137-49b6-bacf-a10370a54df4",
    "chainid": "672ec703-e77a-47b1-b698-cb8488352fc9",
    "connectiontype": 10,
    "connectiontypestr": "conference",
    "dtstart": "2011-04-09 19:55:30",
    "dtanswer": "2011-04-09 19:55:30",
    "dtstop": "2011-04-09 19:55:33",
    "length": 2,
    "answerlength": 0,
    "hascomment": false,
    "isbetweenusers": true,
    "fromcc": false,
    "isconf": true,
    "isrecorded": true,
    "recordlink": "/download/rec/AQAAAAAQIKvNHczNCBEBAAAA",
    "fileext": "wav",
    "auserid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
    "auserlogin": "Крючков",
    "alineid": "A117499D-23EA-4BF8-A6B9-F49580E9628C",
    "alinenumber": "16001",
    "aoutnumber": "Семен Егорович Крючков",
    "anumberdialed": "",
    "atext": "Семен Егорович Крючков",
    "conferenceid": "224476F1-2E41-4C8F-BA85-6BEF0EBB5339",
    "conferenceroom": "751",
    "conferencename": "Автоконференция #751 09.04.11 19:55:30",
    "conferencedirectorid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
    "conferencedirectorlogin": "Крючков",
    "conferencedirectorname": "Семен Егорович Крючков",
    "reasonstop": -1,
    "stopside": "a"
   },
   {
    "commutationid": "5F64DECF-194C-474B-8CA7-824E82A1C072",
    "chainid": "22A01B17-064B-4E19-99BA-FED96680AF25",
    "connectiontype": 5,
    "connectiontypestr": "ctOuterInner",
    "dtstart": "2011-04-09 19:57:24",
    "dtanswer": "2011-04-09 19:57:24",
    "dtstop": "2011-04-09 19:58:13",
    "length": 49,
    "answerlength": 0,
    "hascomment": true,
    "isbetweenusers": true,
    "fromcc": false,
    "isrecorded": true,
    "recordlink": "/download/rec/AAAAAABwOltxHczNCGlCAACBPgAA",
	  "fileext": "mp3",
    "isconf": false,
    "auserid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
    "auserlogin": "Крючков",
    "alineid": "A117499D-23EA-4BF8-A6B9-F49580E9628C",
    "alinenumber": "16001",
    "aoutnumber": "Семен Егорович Крючков",
    "anumberdialed": "",
    "atext": "Семен Егорович Крючков",
    "buserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "buserlogin": "Петров",
    "blineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
    "blinenumber": "17004",
    "boutnumber": "",
    "bnumberdialed": "217",
    "btext": "Петр Петрович Петров",
    "reasonstop": -1,
    "stopside": "b"
   }
   {...},
   {...}
  ]
 }
]
//* dtformat - формат представления даты/времени.
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.
	commutationid - идентификатор коммутации.
	chainid - идентификатор цепочки коммутаций/сессии.
	connectiontype, connectiontypestr - Тип соединения:
		ctInnerOuter	= 1, //внутренняя линия с внешней линией
		ctInnerIvr	= 2, //внутренняя линия с IVR
		ctInnerInner	= 3, //внутренняя линия с внутренней линией
		ctOuterIvr	= 4, //внешняя линия с IVR
		ctOuterInner	= 5, //внешняя линия с внутренней линией линией
		ctOuterOuter	= 6, //внешняя линия с внешней линией		
		ctIvrOuter	= 7, //IVR с внешней линией		
		ctIvrInner	= 8, //IVR с внутренней линией
		ctConference	= 10,//Конференция
		ctSelector	= 11,//Селекторное совещание
	dtstart - дата/время начала вызова перед осуществлением коммутации.
	dtanswer - дата/время ответа и начала коммутации.
	dtstop - дата/время окончания коммутации
	length - длительность в секундах
	answerlength - длительность ответа в секундах.
	hascomment - true|false. Имеет ли данная коммутация комментарий.
	isbetweenusers - true|false. Является ли текущая коммутация между пользователями системы.
	fromcc - true|false. Произведена ли текущая коммутация в рамках работы call-центра.
	isrecorded - true|false. Записана ли коммутация.
	recordlink - относительная ссылка на скачивание файла записи разговора.
	fileext - если файл записан, то его расширение mp3 или wav. Возвращает только если в полном 
			результате менее 5 записей, иначе поле отсутствует.
	isconf - true|false. Является ли текущая запись конференцией.
	auserid - идентификатор пользователя абонента a. 
			Если IVR - 'ab000000-0000-0000-0000-000000000000',
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'
	auserlogin - логин пользователя абонента a.
	alineid - идентификатор линии абонента a.
	alinenumber - номер линии абонента a.
	aoutnumber - номер абонента a (CallerId).
	anumberdialed - набранный абонентом a номер.
	atext - текстовое описание абонента a.
	buserid - идентификатор пользователя абонента b. 
			Если IVR - 'ab000000-0000-0000-0000-000000000000',
			Если внешний абонент - 'bf000000-0000-0000-0000-000000000000'
	buserlogin - логин пользователя абонента b.
	blineid - идентификатор линии абонента b.
	blinenumber - номер линии абонента b.
	boutnumber - номер абонента b (CallerId).
	bnumberdialed - набранный абонентом b номер.
	btext - текстовое описание абонента b.
	reasonstop - причина разрыва коммутации.
	stopside - a, b. По чьей инициативе коммутация прервана.



<<< getpbxcallcomment

Запрос из CRM в Oktell на возврат комментария к указанной коммутации.

[
 "getpbxcallcomment",
 {
  "qid": "1E3C27C0-BE28-4621-AD39-6D1B31EB37EB",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
 }
]


<<< getpbxcallcommentresult

Ответ от Oktell в CRM. Возвращает комментарий к запрошенной коммутации.

[
 "getpbxcallcommentresult",
 {
  "qid": "1E3C27C0-BE28-4621-AD39-6D1B31EB37EB",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644",
  "comment": "раз два три четыре пять вышел зайчик погулять"
 }
]



<<< setpbxcallcomment

Запрос из CRM в Oktell на установку комментария для указанной коммутации.

[
 "setpbxcallcomment",
 {
  "qid": "3AB79A11-24FB-4D10-B7FD-5FD1653A679D",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
  "comment": "раз два три четыре пять вышел зайчик погулять"
 }
]


<<< setpbxcallcommentresult

Ответ от Oktell в CRM. Возвращает результат установки комментария к коммутации.

[
 "setpbxcallcommentresult",
 {
  "qid": "3AB79A11-24FB-4D10-B7FD-5FD1653A679D",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1
 }
]



<<< getpbxmycalljournal

Запрос из CRM в Oktell на возврат журнала собственных звонков авторизованного пользователя по указанному фильтру. В том числе ссылки на файлы записей разговоров.

[
 "getpbxmycalljournal",
 {
  "qid": "F95D0A08-D904-49C9-A4B9-8C02B1781A89",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "linkmode": "full",
  "filter": {
    "datestart": "2011-04-07",
    "datestop": "2011-04-07",
    "comment": "",
    "number": "89503222555",
    "media": "all",
    "type": "all"
  }
 }
]
//* linkmode - full, simple - устанавливает формат ссылок, в котором будут указаны полученные файлы
		в событии об окончании приема.
			full - вернуть абсолютную ссылку на скачивание через http.
			simple - вернуть относительную ссылку на скачивание.
		При формировании абсолютной ссылки в качестве доменного имени берется значение из 
		раздела [[Интеграция с WEB-Socket CRM]] общих настроек Oktell.
//* filter - фильтр для запроса. Все поля не являются обязательными.
	По умолчанию возвращаются разговоры за текущий день с 8:00 до 17:00, в которых
		участвовал авторизованный пользователь			
	К фильтру могут быть применены: 
		datestart - дата начала интересующего периода. Включительно.
		datestop - дата окончания интересующего периода. Включительно.
		comment - строка включения в комментарии.
		number - интересующий номер оппонента.
		media - external, internal, all. Среда вызова.
		type - тип звонка:
			incoming - входящий звонок.
			outcoming - исходящий звонок.
			missed - пропущенный звонок. Что является пропущенным звонком определяется в разделе
					[[Менеджер очередей]] общих настроек Oktell.
			conference - конференция.
			selector - селекторное совещание.
			all - все типы звонков.


<<< getpbxmycalljournalresult

Ответ от Oktell в CRM. Возвращает журнал собственных звонков авторизованного пользователя по указанному фильтру.

[
 "getpbxmycalljournalresult",
 {
  "qid": "F95D0A08-D904-49C9-A4B9-8C02B1781A89",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "dtformat": "dd.MM.yyyy HH:mm:ss",
  "data": [
   {
    "type": 1,
    "typestr": "incoming",
    "media": 2,
    "mediastr": "internal",
    "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644",
    "chainid": "46fe0543-4a58-49c5-b501-644b8ddad69a",
    "dtstart": "2011-04-09 19:55:25",
    "dtanswer": "2011-04-09 19:55:27",
    "dtstop": "2011-04-09 19:56:29",
    "length": 61,
    "number": "14",
    "alineid": "3294CD8F-7865-436A-AC2E-CEA481D8F52D",
    "alinenumber": "17011",
    "blineid": "021BDECD-196B-408F-8C36-8C37C0A94C5A",
    "blinenumber": "17014",
    "isrecorded": true,
    "recordlink": "http://192.168.0.12:4055/download/rec/AQAAAADQfMDNHczNCBEBAAAA",
    "hascomment": true,
    "abonentname": "Петр Петрович Петров",
    "isconf": false
   },
   {
    "type": 10,
    "typestr": "conference",
    "media": 10,
    "mediastr": "conference",
    "commutationid": "20CF9B5A-5FFE-4456-8984-E7B79D7166EE",
    "chainid": "E443FEA7-5ABB-49CB-A28D-8CC25F404E97",
    "dtstart": "2011-04-09 19:58:12",
    "dtanswer": "2011-04-09 19:58:12",
    "dtstop": "2011-04-09 19:59:45",
    "length": 93,
    "alineid": "3294CD8F-7865-436A-AC2E-CEA481D8F52D",
    "alinenumber": "17011",
    "isconf": true,
    "conferenceid": "224476F1-2E41-4C8F-BA85-6BEF0EBB5339",
    "conferenceroom": "751",
    "conferencename": "Автоконференция #751 09.04.11 19:55:30",
    "conferencedirectorid": "AA3B3E14-2B44-4D08-8C62-3C616F9D27E3",
    "conferencedirectorlogin": "Крючков",
    "conferencedirectorname": "Семен Егорович Крючков",
    "isrecorded": true,
    "recordlink": "http://192.168.0.12:4055/download/rec/AAAAAACQSBTLHczNCGlCAACBPgAA",
    "hascomment": true
   },
   {...},
   {...}
  ]
 }
]
//* dtformat - формат представления даты/времени.
//* data - набор попавших в выдачу коммутаций/конференций. Каждая запись - в отдельном словаре.
		type, typestr - тип звонка:
			incoming 	= 1 - входящий звонок.
			outcoming 	= 2 - исходящий звонок.
			missed 		= 3 - пропущенный звонок. Что является пропущенным звонком определяется 
						в разделе [[Настройки менеджера очередей|Менеджер очередей]] общих настроек Oktell.
			conference 	= 10 - конференция.
			selector 	= 11 - селекторное совещание.			
		media, mediastr - тип среды вызова:
			external 	= 2 - внешняя среда.
			internal 	= 1 - внутренний вызов.
			conference 	= 10 - конференция.
			selector 	= 11 - селекторное совещание.
		commutationid - идентификатор коммутации.
		chainid - идентификатор цепочки коммутаций/сессии.
		dtstart - дата/время начала вызова перед осуществлением коммутации.
		dtanswer - дата/время ответа и начала коммутации.
		dtstop - дата/время окончания коммутации
		length - длительность в секундах
		alineid - идентификатор линии абонента a.
		alinenumber - номер линии абонента a.
		blineid - идентификатор линии абонента b, если это коммутация.
		blinenumber - номер линии абонента b, если это коммутация.
		isrecorded - true|false. Записана ли коммутация.
		recordlink - относительная или абсолютная ссылка на скачивание файла записи разговора.
		hascomment - true|false. Имеет ли данная коммутация комментарий.
		abonentname - текстовое описание оппозитного абонента коммутации.
		isconf - true|false. Является ли текущая запись конференцией(селектором) или нет.
		conferenceid - идентификатор конференции/селектора.
		conferenceroom - номер комнаты конференции/селектора.
		conferencename - название конференции/селектора.
		conferencedirectorid - идентификатор управляющего пользователя конференции/селектора.
		conferencedirectorlogin - логин управляющего пользователя конференции/селектора.
		conferencedirectorname - имя управляющего пользователя конференции/селектора.



<<< removepbxcallrecord

Запрос из CRM в Oktell. Удаляет запись разговора указанной коммутации в соответствии с правами доступа.

[
 "removepbxcallrecord",
 {
  "qid": "DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "commutationid": "73567FD4-EFB9-46BF-9346-35B8638FE644"
 }
]


<<< removepbxcallrecordresult

Ответ от Oktell в CRM. Возвращает результат удаления записи разговора.

[
 "removepbxcallrecordresult",
 {
  "qid": "DF061C5B-1B3B-41AA-94FF-A7A2F8FA6AE7",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1
 }
]



Номерной план


<<< getusersbynumbers

Запрос из CRM в Oktell на возврат информации о пользователях системы по указанным внутренним номерам от имени указанного пользователя.

[
 "getusersbynumbers",
 {
  "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "numbers": [
   "883",
   "470",
   "472",
   "485"
  ]
 }
]


>>> getusersbynumbersresult

Ответ из Oktell в CRM. Возвращает информацию о пользователях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.

[
 "getusersbynumbersresult",
 {
  "qid": "20D0F23E-F26A-4BD9-BE65-B6F76D91880A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "users": [
   {
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "username": "Петр Петрович Петров",
   },
   {
    "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
    "userlogin": "Сидоров",
    "username": "Сидор Сидорович Сидоров"
   }
  ]
 }
]



<<< getitemsbynumbers

Запрос из CRM в Oktell на возврат информации о пользователях и линиях системы по указанным внутренним номерам от имени указанного пользователя.

[
 "getitemsbynumbers",
 {
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "numbers": [
   "883",
   "470",
   "472",
   "485"
  ]
 }
]


>>> getitemsbynumbersresult

Ответ из Oktell в CRM. Возвращает информацию о пользователях и линиях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров.

[
 "getitemsbynumbersresult",
 {
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "items": [
   {
    "type": "user",
    "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
    "userlogin": "Петров",
    "username": "Петр Петрович Петров",
   },
   {
    "type": "user",
    "userid": "2AC66E31-ADF0-4F84-A589-417A5A599EEA",
    "userlogin": "Сидоров",
    "username": "Сидор Сидорович Сидоров"
   },
   {
    "type": "line",
    "lineid": "50203B8C-8079-4B52-8D24-ECDA4BF7877A",
    "linenumber": "17025"
   }
  ]
 }
]



<<< getsystemnumberbyuser

Запрос из CRM в Oktell на возврат системного внутреннего номера, по которому может быть произведен вызов указанного в суб-параметре пользователя от имени указанного пользователя.

[
 "getsystemnumberbyuser",
 {
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "user": {
   "userid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
   "userlogin": "Петров"
  }
 }
]


>>> getsystemnumberbyuserresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "getsystemnumberbyuserresult",
 {
  "qid": "0A8B1B7C-E4DD-47FC-A17F-A9200602A8DE",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "result": 1,
  "systemnumber": "U28CA980EF9F84B83B4934454AA54FCD8"
  ]
 }
]



<<< getpbxnumbersforitem

Запрос из CRM в Oktell на возврат текстового списка внутренних номеров указанного в суб-параметре пользователя.

[
 "getpbxnumbersforitem",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
  "itemtype": "user",
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "itemuserlogin: "Петров"
 }
]


>>> getpbxnumbersforitemresult

Ответ из Oktell в CRM. Возвращает список несистемных внутренних номеров через запятую, по которым возможен вызов пользователя, указанного в суб-параметре запроса.

[
 "getpbxnumbersforitemresult",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "itemtype": "user",
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "itemuserlogin: "Петров",
  "itemnumbers": "403, 472"
 }
]
/*  "itemtype": "line",
/*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
/*  "itemlinenumber": "17004"



<<< getmainpbxnumberforitem

Запрос из CRM в Oktell на возврат основного несистемного внутреннего номера, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре.

[
 "getmainpbxnumberforitem",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
  "itemtype": "user",
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "itemuserlogin: "Петров"
 }
]


>>> getmainpbxnumberforitemresult

Ответ из Oktell в CRM. Возвращает основной несистемный внутренний номер, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре запроса.

[
 "getmainpbxnumberforitemresult",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "itemtype": "user",
  "itemuserid": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
  "itemuserlogin: "Петров",
  "itemnumber": "472"
 }
]
/*  "itemtype": "line",
/*  "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0",
/*  "itemlinenumber": "17004"



<<< getpbxnumbers

Запрос из CRM в Oktell на возврат всех внутренних номеров системы. Не требует указания авторизованного пользователя, так как может исполняться по инициативе сервера WebCRM. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.

[
 "getpbxnumbers",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "mode": "simple"
 }
]
//* mode: simple, full (простой вид, полный вид).


>>> getpbxnumbersresult

Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в простом виде.

[
 "getpbxnumbersresult",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "mode": "simple",
  "numbers": [
   "401",
   "402",
   "403",
   "404",
   "405",
   "471",
   "472",
   "473"
  ]
 }
]


В следующем примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.

[
 "getpbxnumbersresult",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "mode": "full",
  "numbers": [
   {
    "id": "9079E514-FECF-4DFD-BF48-5EDE4241E3A1",
    "number": "472",
    "type": 0,
    "typestr": "intRule",
    "isgroup": false,
    "caption": "Петров",
    "state": 5,
    "statestr": "usFullbusy",
    "department": "Руководство"
   },
   {...},
   {...}
  ]
 }
]
/* number:type - intRule(0), intFast(2), intIVR(3), intEmergency(4)
/* number:state - usDisconnected(0), usReady(1), usLunch(2), usOff(3), usFullbusy(5),
				usReserved(6), usWOPhone(7), usError(100), usRinging(201)



<<< getallusernumbers

Запрос из CRM в Oktell на возврат списка всех пользователей, содержащего актуальную информацию по их прямым, основным и групповым номерам.

[
 "getallusernumbers",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B"
 }
]


>>> getallusernumbersresult

Ответ из Oktell в CRM. Возвращает список всех пользователей, содержащий актуальную информацию по их прямым, основным и групповым номерам.

[
 "getallusernumbersresult",
 {
  "qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "users": [
   {"id": "47A8B3A0-0B33-41BB-9D08-1D9EB0D6F09B",
    "name: "Петров",
    "main: "14",
    "nums": "14, 625, 773"
   },
   {"id": "5A84368D-5ED3-434B-8EB2-41AE86E1566A",
    "name: "Иванов"
   },
   ...
  ]
 }
]
/*  users:main - основной прямой номер,
/*  users:nums - перечень номеров, в которых участвует пользователь или его текущая линия. 
			Порядок следования от главного к групповым, затем от главного к групповым с участием линии.



Преобразования


<<< getuserbyline

Запрос из CRM в Oktell на возврат информации о связанном пользователе по ключу линии. Ключом линии традиционно является идентификатор или номер линии.

[
 "getuserbyline",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "linekey": "17002"
	}
 }
]


>>> getuserbylineresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "getuserbylineresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "founduser": {
   "userid": "BE6A252A-D7E7-4D15-8D75-385A210DF997",
   "userlogin": "john",
   "username": "John Smith"
  }
 }
]
//* founduser - информация о связанном с указанной линии пользователе - его идентификатор, логин, имя.
		Если линия указана неверно или к ней в данный момент не привязан пользователь - null.



<<< getlinebyuser

Запрос из CRM в Oktell на возврат информации о связанной линии по ключу пользователя. Ключом пользователя традиционно является идентификатор, логин или имя.

[
 "getlinebyuser",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "userkey": "ivanov"
	}
 }
]


>>> getlinebyuserresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "getlinebyuserresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "foundline": {
   "lineid": "FA86E75A-6383-42B7-873C-37A0654B18EF",
   "linenum": "17002"
  }
 }
]
//* foundline - информация о связанной с указанным авторизованным пользователем линии - ее идентификатор, номер.
		Если пользователь указана неверно, или не авторизован - null.
		''Пользователь по умолчанию'' считается авторизованным.



Служебные методы


<<< getversionresult

Запрос из CRM в Oktell на возврат информации о версии сервера Oktell.

[
 "getversion",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "showalloweddbstoredprocs": 1
 }
]
//* showalloweddbstoredprocs: true|false. Отображать ли список доступных хранимых процедур БД.


>>> getversionresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "getversionresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "version": {
   "text": "Версия программы: 2.7.110808(4237.32979). Версия БД: 110713.",
   "dated": "110808",
   "build": "2.7.4237.32979",
   "datedhal": "110808",
   "buildhal": "2.15.3.2871",
   "webserverport": 4067
  }
  "alloweddbstoredprocs": {
   "w_favoritegetbyuser": 1,
   "w_favoritesavebyuser": 1,
   "w_favoritedeletebyuser": 1,
   "w_clientsget": 1,
   "w_clientgroupsget": 1
  }
 }
]
//* version - информация о версии сервера логики и HAL.
//* version:webserverport - номер порта [[Серверный_HTTP_интерфейс|HTTP веб-сервера oktell]].
//* alloweddbstoredprocs - перечень хранимых процедур, доступных для исполнения в БД Oktell 
				посредством метода <span style="color:green">''execpredefineddbstoredproc''</span>	



<<< gettemphttppass

Запрос из CRM в Oktell. Генерирует и возвращает временный пароль на доступ к HTTP веб-серверу без авторизации. Временный пароль живет не более 10 секунд до первого обращения к HTTP с указанием этого пароля среди параметров запроса. Пароль привязывается к IP адресу дополнительно. После этого вне зависимости от способа авторизации, установленного для HTTP веб-сервера Oktell, однократный вызов любого метода серверного веб-интерфейса возможен без авторизации с указанием среди параметров дополнительного служебного параметра temppass=A, где A - выданный временный пароль.

Доступно для схемы интеграции 2.

[
 "gettemphttppass",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "responsetowebsock": true
 }
]


>>> gettemphttppassresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "gettemphttppassresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "password": "6f3200ac"
 }
]
//* password - временный пароль для подстановки в качестве значения параметра temppass 
		при осуществлении GET или POST запроса к HTTP веб-серверу Oktell.
		Следует иметь в виду, что даже в случае POST запроса со специальным контентом
		указание параметра-пароля возможно в теле самой страницы (по аналогии с GET запросом).



<<< triggercustomevent

Запрос из CRM в Oktell на генерацию пользовательского произвольного события всем или только указанным пользователям. Может быть использовано в схеме интеграции 2. Производит массовую рассылку указанного события. Точно также как и все остальные события требует подписки.

[
 "triggercustomevent",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "eventname": "newClientCategoryAdded",
  "eventparam": "строка"
  "sendback": 1, // отправлять мне самому или нет
 }
]
[
 "triggercustomevent",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "eventname": "newClientCategoryAdded",
  "eventparam": "строка",
  "recipients": [
   "Петров",
   "Сидоров"
  ]
 }
]
[
 "triggercustomevent",
 {
  "qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "eventname": "newClientCategoryAdded",
  "eventparam": { "param1": "123", "p2": { "asdfasd": "sdfgsdf" } , ... },
  "recipients": [
   "C45D4911-BDE2-40C0-8D11-A4AFF1F160CC",
   "BA2C4BAC-7A7C-4959-B1A7-2F63C248DF3D"
  ]
 }
]
//* recipients - список идентификаторов/логинов получателей сообщений. 
			Может не быть указанным, тогда отправка производится всем.
//* sendback - генерировать ли событие для самого отправителя. Имеет смысл, поскольку
			в случае использования нескольких вкладок в браузере, каждое из подключений
			получит событие независимо.
//* eventname - название пользовательского события.
//* eventparam - параметр пользовательского события. Переходит в сгенерированное сообщение без изменений.
			Может содержать строку, набор, массив, словарь - все что угодно.


>>> gettemphttppassresult

Событие из Oktell пользователям CRM. Отправляется всем пользователям, указанным при запросе на рассылку события.

[
 "customevent",
 {
  "qid":"aaa3f5c9-bcd5-4bf9-aef9-0b4ee735170d",
  "userlogin": "Петров",
  "userid": "C45D4911-BDE2-40C0-8D11-A4AFF1F160CC",
  "eventname": "newClientCategoryAdded",
  "triggereduserid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "triggereduserlogin": "Иванов",
  "eventparam": { "param1": "123", "p2": { "asdfasd": "sdfgsdf" } , ... }
 }
]
//* eventname - название пользовательского события.
//* eventparam - параметр пользовательского события в неизменном виде, как в запросе.
//* triggereduserid - идентификатор пользователя-рассыльщика.
//* triggereduserlogin - логин пользователя-рассыльщика.



<<< gettotalqueue

Запрос из CRM в Oktell на возврат информации обо всех очередях. Может использоваться без указания пользователя. Не рекомендуется к частому использованию, так как требует значительных вычислительных ресурсов.

[
 "gettotalqueue",
 {
  "qid": "DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D",
  "skipempty": true
 }
]


>>> gettotalqueueresultresult

Ответ из Oktell в CRM. Возвращает список всех очередей и их абонентов

[
 "gettotalqueueresult",
 {
  "qid": "DDDB5BCA-A200-448C-93C7-EFEAE5AFE48D",
  "result": [
   {
    "numid": "507db30b-f8f7-46cf-b3c7-6b8ba7b696a8",
    "numprefix": "12",
    "ruleid": "6ffab1ac-7b9b-4ba2-8547-233175368b6d",
    "rulename": "Денис"
    "queue": [
     {
      "objectid": "928efda2-a3b3-423b-9d49-d2e76879c718",
      "chainid": "d1c2b337-6293-4ea0-a355-f59caaeff54b",
      "srcelementid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
      "objecttype": 0,
      "objecttypestr": "qotQueueLogic",
      "queuesource": 1,
      "queuesourcestr": "qsLineLogic",
      "callerid": "14",
      "calledid": "12",
      "isuser": true,
      "userid": "da803f01-ea77-40fa-bc9d-e2efb36fd5a8",
      "userlogin": "Peter",
      "username": "Петр Александрович",  
      "department": "Программисты",
      "managedlineid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
      "managedlinenumber": "16001",
      "srclineid": "38d8b6ad-a68b-4075-a1a3-038510f20a54",
      "srclinenumber": "16001",  
      "queuepriority": 9,
      "startqueuetime": "2012-06-07 12:58:44",
      "lenqueue": 1.4375,
      "istask": false
      }
    ]
   },
   ...
   {}
  ]
 }
]
//* result - содержит список всех очередей. Очередь при этом содержится в словаре.
//*  result:numid - идентификатор стандартного внутреннего номера, при котором данная очередь.
//*  result:numprefix - стандартный внутреннего номер, при котором данная очередь.
//*  result:ruleid - идентификатор номерного правила, при котором данная очередь.
//*  result:rulename - название номерного правила, при котором данная очередь.
//*  result:queue - список абонентов очереди в порядке убывания. Каждый абонент содержится в словаре.



whoareyou

Двунаправленный запрос на возврат информации об удаленной стороне. Служит для выстраивания взаимоотношений на основе типа подключения, а также дает возможность получить имя системы для указания администратору. Ответом является сообщение iam.

Применяется в схеме интеграции 1.

[
 "whoareyou",
 {
  "qid": "4FEEB8EF-DF4B-47AE-8EFE-4BDA577A6FF8",
  "type": "ws-server",
  "name": "Iris CRM",
  "version": 10.5
 }
]
//* type - собственный тип сервера, осуществляющего запрос. 
			Oktell при запросе указывает значение ''commserver''.
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.
//* name - собственное название службы. 
//* version - собственная версия службы. 


iam

Двунаправленный ответ на запрос whoareyou. Возвращает информацию об удаленной стороне.

[
 "iam",
 {
  "qid": "080C0DF2-442B-410E-9204-4ADB3399FCC0",
  "type": "commserver",
  "name": "Oktell",
  "version": 100425,
  "build": "2.5.3928.8022"
 }
]
//* type - тип удаленного сервера. 
			Oktell при запросе указывает значение ''commserver''.
			WebCRM может указывать что либо отличное, например ''ws-server'' или ''crm-server''.
//* name - название службы на удаленнм сервере.
//* version - версия службы на удаленном сервере. 



<<< execpredefineddbstoredproc

Запрос из CRM в Oktell. Исполняет указанную хранимую процедуру в БД Oktell и возвращает данные всех сформированных в ходе выполнения наборов. Доступные для исполнения процедуры содержатся в конфигурационном файле websocket.config, а также могут быть возвращены методом getversion.

Не требует указания пользователя.

Доступно для схемы интеграции 2.

[
 "execpredefineddbstoredproc",
 {
  "qid": "7198D943-7BA9-443D-B283-55812BC82AFB",
  "procedure": "T_GetFavorites",
  "inputparams": {
	 "param1": "XXX", 
	 "param2": 10
	}
 }
]
//* procedure - название процедуры из разрешенного списка. 
//* inputparams - значения параметров процедуры. Имена параметров могут содержать в начале символ ''@'',
		В случае его отсутствия он добавляется автоматически.
		Если в списке присутствует параметр ''authorizeduserid'', его значение будет принудительно заменено
			на идентификатор текущего авторизованного пользователя в Oktell. Этим можно пользоваться для
			создания в БД процедур, учитывающих инициатора исполнения.


>>> execpredefineddbstoredprocresult

Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.

[
 "execpredefineddbstoredprocresult",
 {
  "qid": "7198D943-7BA9-443D-B283-55812BC82AFB",
  "result": 1,
  "errorcode": 0,
  "errorstr": "",
  "dataset": [
   [
    ["column1", "column2", "column3"],
    ["row1val1", "row1val2", "row1val3" ],
    ["row2val1", "row2val2", "row2val3" ],
    ...
   ],
   [
    ["column1", "column2"]
   ],
   ...
  ]
 }
]
//* result - 1 или 0. Успешно или неудачно проведена операция.
//* errorcode - код ошибки. 50044 - служебное значение, в случае запрета или исключения при исполнении, 
			не связанного с ошибкой SQL
//* errorstr - описание ошибки. 
//* dataset - наборы данных по порядку выдачи в ходе исполнения хранимой процедуры.
		Набор - это список строк, каждая из которых - список значений по ячейкам.
		Первая строка в наборе - всегда содержит названия столбцов набора.



<<< exectmcall

Запрос из CRM в Oktell. Осуществляет размещение короткого задания на дозвон и соединение с указанным оператором (пользователем). Дозвониться до одного из указанных абонентов-номеров группы A, соединить с одним из указанных абонентов-номеров группы B. Результатом выполнения является одна коммутация.

Не требует указания пользователя.

[
 "exectmcall",
 {
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
  "taskid": "qud82039lsdfmnasd",
  "a_abonents": [
   "7931289",
   "83959279394",
   "425",
   "688C1DD6-7429-4B47-819D-C15827654A53",
   { 
    "type": 11,
	"key": "84951435565"
   }
  ],
  "b_abonents": [
   "1211F58F-93AE-470C-895D-E3A163E8FF5F",
   "ivanov",
   "2BC51D79-BA63-47D7-93CA-1F283029C529",
   {
    "type": 12,
    "key": "1211F58F-93AE-470C-895D-E3A163E8FF5F"
   }
  ]
  "mode": 0
 }
]
[
 "exectmcall",
 {
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
  "taskid": "qud82039lsdfmnasd",
  "taskcode": "xxxxx",
  "a_abonents": ["4952172020"],
  "b_abonents": ["417"],
  "mode": 0,
  "ownertext": "Задача соединения",
  "sessionid": "FB232E90-524A-453C-95BA-1B42251F5A14",
  "projectid": "F95BA34E-2CE2-49FA-B3C2-4344199F5B42",
  "a_callerid": "4959261589",
  "a_music": "Фоновое воспроизведение для оператора",
  "a_usequeue": false,
  "a_queuepriority": 10,
  "a_timeoutsec": 40,
  "b_callerid": "4952172020",
  "b_music": "?**ivr?Фоновое воспроизведение",
  "b_usequeue": true,
  "b_queuepriority": 5,
  "b_timeoutsec": 40,
 }
]
Обязательными параметрами являются только a_abonents и b_abonents. Остальные имеют значения по умолчанию.
			
//* taskid - уникальный строковый идентификатор задания. 
				Может быть не указан, тогда генерируется автоматически.
//* taskcode - пользовательский код задачи, передается в сценарии, обслуживающие дозвоны.
//* a_abonents - набор из одного или нескольких абонентов, относящихся к группе A.
//* b_abonents - набор из одного или нескольких абонентов, относящихся к группе B.
		abonent:type - типы представления о конкретном абоненте
			Undefined	  = 0, //Не определен, определить автоматически.
			External	  = 11,//Внешний номер	
			InternalItem	  = 12,//Внутренний элемент - пользователь или линия, 
						задаются ключами (идентификатор, номер, логин, имя).
			InternalRule	  = 13,//Стандартный внутренний номер
			InternalFast	  = 14,//Быстрый номер
			InternalEmergency = 15,//Экстренный номер
			InternalIVR	  = 16,//Сценарий IVR
//* mode: 
		0 - вызывает сначала группу A (достает первого ответившего), 
			потом абонентов группы B (достает первого ответившего)
		1 - вызывает сначала группу B (достает первого ответившего), 
			потом абонентов группы A (достает первого ответившего)
		2 - вызывает одновременно всех, достает первого ответившего из группы A 
			и первого ответившего из группы B.
//* a_music, b_music - мелодия ожидания для абонентов группы A и B. Задается с помощью строки:
	- ''?**ivr?scriptname'', где scriptname - название фонового медиа сценария IVR.
	- ''?**ff?filepath'', где filepath - абсолютный путь к звуковому файлу (*.mp3 или *.wav).
	- ''?**ff?folderpath'', где folderpath - абсолютный путь к каталогу со звуковыми файлами, выбираются рандомно.
	- ''?**ff?filename'', где filename - название файла с расширением (*.mp3 или *.wav) в стандартном каталоге Snd.
	- абсолютный путь к каталогу cо звуковыми файлами 
	- абсолютный путь к файлу 
	- название файла с расширением в стандартном каталоге Snd
	- название фонового медиа-сценария IVR
	- если не указывать, указывать неверно или указывать пустоту - играется 
		[[Музыкальное сопровождение#Alternative|альтернативная мелодия ожидания]] (возможно сценарий) из общих настроек
//* sessionid - генерируемый идентификатор цепочки коммутаций/сессии.
//* ownertext - название владельца служебного сценария набора номеров.
//* projectid - привязанный идентификатор проекта (участвует в поиске сценариев).
//* a_usequeue, b_usequeue: true|false. Использовать ли очередь ожидания при вызове внутренних абонентов.
//* a_queuepriority, b_queuepriority: числовой приоритет при размещении в очередях. 
		Традиционно чем меньше значение - тем больше приоритет. 
		Значения по умолчанию определены в [[Настройки менеджера очередей|общих настройках]]
//* a_timeoutsec, b_timeoutsec: таймаут в секундах для вызова абонентов соответствующей группы.
		Режим использования таймаута задается в разделе [[Настройки менеджера очередей|настроек менеджера очередей]].


>>> exectmcallresult

Ответ из Oktell в CRM. Возвращает результат исполнения хранимой процедуры в БД Oktell. Перечисляет все выходные наборы данных.

[
 "exectmcallresult",
 {
  "qid": "BE06A1E4-759A-4BFA-8D15-5FCF756EEE53",
  "taskid": "qud82039lsdfmnasd"
 }
]
//* taskid - возвращает идентификатор запущенного задания.
		В дальнейшем с помощью него можно будет отменить задание (если оно еще не будет к тому времени исполнено)



<<< stoptmcall

Запрос из CRM в Oktell. Отменяет ранее запущенное методом exectmcall задание, если оно еще не завершило исполнение.

Не требует указания пользователя.

[
 "stoptmcall",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859",
  "taskid": "qud82039lsdfmnasd"
 }
]


>>> stoptmcallresult

Ответ от Oktell в CRM. Возвращает результат отмены задания.

[
 "stoptmcallresult",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859",
  "taskid": "qud82039lsdfmnasd",
  "success": false,
  "errortext": "task not found"
 }
]



<<< ping

Запрос из CRM в Oktell. Периодически пробивает канал связи, напоминая о жизнеспособности подключения. Необязательно

Не требует указания пользователя.

[
 "ping",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 }
]


>>> pong

Ответ от Oktell в CRM на запрос ping.

[
 "pong",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
 }
]



<<< subscribeevent, unsubscribeevent

Запрос из CRM в Oktell. Производит соответсвенно подписку и отписку на указанные события.

Доступно и требуется только для схемы интеграции 2. В схеме интеграции 1 события поступают в полном объеме, часть из них объединяются и отправляются на сервер WebCRM без привязки к пользователю; ожидается, что сервер WebCRM самостоятельно размножит их. К таким событиям относятся, например pbxnumberstatechanged, conflistchanged и им подобные.

[
 "subscribeevent",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
  "eventmethod": "userstatechanged",  
 }
]
[
 "subscribeevent",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
  "eventmethod": [
   "userstatechanged",
   "pbxnumberstatechanged"
  ]
 }
]
[
 "unsubscribeevent",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
  "eventmethod": "userstatechanged",  
 }
]

События, требующие подписки:

  • pbxnumberstatechanged
  • pbxnumberlistmodified
  • shownotifymessage
  • usertextmessagereceived
  • usertextmessageviewed
  • voicemailreceived
  • userstatechanged
  • phoneevent_acmcallstarted
  • phoneevent_acmcallstopped
  • phoneevent_ringstarted
  • phoneevent_ringstopped
  • phoneevent_ivrstarted
  • phoneevent_ivrstopped
  • phoneevent_commstarted
  • phoneevent_commstopped
  • phoneevent_faxstarted
  • phoneevent_faxstopped
  • phoneevent_faxreceived
  • linestatechanged
  • chainstatechanged
  • flashstatechanged
  • conferenceevent
  • conflistchanged
  • confparamschanged
  • confcompositionchanged
  • confcompetitorstatechanged
  • confentrancedenied
  • confentrancepermitted
  • confentrancerequest
  • confnotifyinvite
  • confpossiblecompetitorstatechanged
  • customevent
  • executemethod (список доступных динамических методов содержится в файле websock.config)
  • cancelmethod
  • showform (список доступных динамических форм содержится в файле websock.config)
  • closeform


>>> subscribeeventresult, unsubscribeeventresult

Ответ от Oktell в CRM на запросы subscribeeventresult и unsubscribeeventresult соответственно.

[
 "subscribeeventresult",
 {
  "qid": "DDA55585-F598-4F8C-B605-E6E186E6D859"
  "result": 1
 }
]