Описание интеграционного протокола Oktell web-soсket protocol — различия между версиями
Peter (обсуждение | вклад) |
Peter (обсуждение | вклад) |
||
| Строка 148: | Строка 148: | ||
На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров: | На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров: | ||
| − | + | <pre>[ "messagecode", {"var1":"value1", "var2":"value2", ...} ]</pre> | |
В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари): | В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари): | ||
| − | + | <pre>"var1":["a", "b", "c"] или "var2":{"a":1, "b":2, "c":3}</pre> | |
В каждом сообщении присутствует параметр "qid", содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида запрос-ответ. | В каждом сообщении присутствует параметр "qid", содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида запрос-ответ. | ||
| Строка 163: | Строка 163: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> getactiveusers | + | -> getactiveusers<br> |
| − | + | Запрос из Октелла в CRM на возврат текущих активных (авторизованных) пользователей. Применяется при старте одной из систем в момент организации подключения. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "getactiveusers", | |
| − | + | { | |
| − | + | "qid": "9C44D978-E380-4405-B1B9-C4894BF188A7" | |
| − | + | } | |
| + | ] | ||
| + | </pre> | ||
| − | -> activeusers | + | -> activeusers<br> |
| − | + | Ответное сообщение из CRM в Октелл со списком активных авторизованных пользователей CRM. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "activeusers", | |
| − | + | { | |
| − | + | "qid": "9C44D978-E380-4405-B1B9-C4894BF188A7", | |
| − | + | "users": [ | |
| − | + | {"userlogin": "ivanov", "userid": "20394857203948752345"}, | |
| − | + | {"userlogin": "petrov", "userid": "kasjdfhlaksjdfhlaks"}, | |
| − | + | {"userlogin": "sidorov", "userid": "987495873948573945"} | |
| − | + | ] | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- login | + | <- login<br> |
| − | + | Сообщение из CRM в Октелл об авторизации пользователя. Запрос кросс-авторизации в Октелле. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "login", | |
| − | + | { | |
| − | + | "qid": "9D484E0E-BE08-47B5-ABBD-490936881056", | |
| − | + | "userlogin": "ivanov", | |
| − | + | "userid": "29834234234" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> loginresult | + | -> loginresult<br> |
| − | + | Сообщение из Oktell в CRM о результате кросс-авторизации пользователя. Может быть отправлено в ответ на запрос кросс-авторизации в Октелле, а может быть отправлено самостоятельно по результатам обработки сообщения activeusers. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "loginresult", | |
| − | + | { | |
| − | + | "qid": "939AA33E-011F-4FEC-B60A-8BC1B4888B5A", | |
| − | + | "userlogin": "ivanov", | |
| − | + | "userid": "29834234234", | |
| − | + | "result": 0, | |
| − | + | "error": 50093, | |
| − | + | "errormsg": "Пользователь уже зарегистрирован" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- logout | + | <- logout<br> |
| − | + | Сообщение из CRM в Октелл о выходе (логауте) пользователя. Команда на кросс-логаут в Октелле. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "logout", | |
| − | + | { | |
| − | + | "qid": "9D484E0E-BE08-47B5-ABBD-490936881056", | |
| − | + | "userlogin": "ivanov", | |
| − | + | "userid": "29834234234" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> logoutresult | + | -> logoutresult<br> |
| − | + | Сообщение из Oktell в CRM о результате кросс-логаута пользователя. Может быть отправлено в ответ на запрос кросс-логаута в Октелле, а может быть отправлено самостоятельно в случае длительного отсутствия откликов от пользователя (не задействовано). | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "logoutresult", | |
| − | + | { | |
| − | + | "qid": "4B25E210-2D67-4675-A5AE-46DC9CBC32F9", | |
| − | + | "userlogin": "ivanov", | |
| − | + | "userid": "29834234234", | |
| − | + | "result": 1 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> pbxnumberstatechanged | + | -> pbxnumberstatechanged<br> |
| − | + | Сообщение из Октелл о смене состояния внутреннего номера (или группы внутренних номеров) | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxnumberstatechanged", | |
| − | + | { | |
| − | + | "qid": "5B9508DF-565B-44E1-A122-6FEB70ADA0B9", | |
| − | + | "numbers": [ | |
| − | + | {"num": "425", "numstateid": 3}, | |
| − | + | {"num": "427", "numstateid": 2}, | |
| − | + | {"num": "#82", "numstateid": 3} | |
| − | + | ] | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| Строка 265: | Строка 276: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> userstatechanged | + | -> userstatechanged<br> |
| − | + | Сообщение из Октелла в CRM о смене состояния пользователя в Октелле. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "userstatechanged", | |
| − | + | { | |
| − | + | "qid": "66F8D479-0234-47DF-B043-3A065FF464A7", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "userstateid": 2, | |
| − | + | "onredirect": true, | |
| − | + | "onlunch": false, | |
| − | + | "oncallcenter": false | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- setuserstate | + | <- setuserstate<br> |
| − | + | Запрос из CRM к Октеллу на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение 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> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- entercallcenter | + | <- entercallcenter<br> |
| − | + | Запрос из CRM на вход в режим коллцентра. При проведении изменений в ответ отправляется сообщение userstatechanged. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "entercallcenter", | |
| − | + | { | |
| − | + | "qid": "7DD2ED7A-B6BF-4988-A780-99719C65CA5D", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | <- exitcallcenter | + | <- exitcallcenter<br> |
| − | + | Запрос из CRM на выход из режима коллцентра. При проведении изменений в ответ отправляется сообщение userstatechanged. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "exitcallcenter", | |
| − | + | { | |
| − | + | "qid": "6E899456-C373-48EB-949E-E2C0D79D45EA", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| + | ] | ||
| + | </pre> | ||
| Строка 330: | Строка 349: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> usertextmessagereceived | + | -> usertextmessagereceived<br> |
| − | + | Сообщение-событие из Oktell в CRM о новом входящем текстовом сообщении чата. | |
| − | + | ||
<pre> | <pre> | ||
| − | + | [ | |
| − | + | "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", | |
| − | + | } | |
| − | + | ] | |
</pre> | </pre> | ||
| − | |||
| − | |||
| + | -> usertextmessageviewed<br> | ||
| + | Сообщение-событие из Oktell в CRM о прочитанности отправленного сообщения. | ||
<pre> | <pre> | ||
[ | [ | ||
| Строка 369: | Строка 387: | ||
</pre> | </pre> | ||
| − | |||
| − | |||
| + | <- sendusertextmessage<br> | ||
| + | Запрос из CRM в Oktell на отправку текстового сообщения в рамках чата другому пользователю. | ||
<pre> | <pre> | ||
| − | + | [ | |
| − | + | "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": "раз два три четыре пять вышел зайчик погулять", | |
| − | + | } | |
| − | + | ] | |
</pre> | </pre> | ||
| − | |||
| − | |||
| + | <- setusermessageviewed<br> | ||
| + | Запрос из CRM в Oktell на выставление признака прочитанности текстового сообщения пользователем. В ответ возвращается количество реально отмеченных сообщений. Может быть больше или меньше указанного. Событие о прочитанности отправляется пользователю, указанному в поле senderuserid. | ||
<pre> | <pre> | ||
[ | [ | ||
| Строка 405: | Строка 423: | ||
] | ] | ||
</pre> | </pre> | ||
| + | |||
| Строка 410: | Строка 429: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> voicemailreceived | + | -> voicemailreceived<br> |
| − | + | Сообщение из Октелла в CRM о факте поступления голосовой почты на ящик пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "voicemailreceived", | |
| − | + | { | |
| − | + | "qid": "080C0DF2-442B-410E-9204-4ADB3399FCC0", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| Строка 427: | Строка 447: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> shownotifymessage | + | -> shownotifymessage<br> |
| − | + | Сообщение(запрос) из Октелла об уведомлении пользователя по аналогии с всплывающими Октелловскими уведомлениями | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "shownotifymessage", | |
| − | + | { | |
| − | + | "qid": "99CC8C57-1793-486A-AFB1-6E5CA3E6855E", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "sender": "0263C7BF-DEB3-406F-9CF9-6F56D828C755", | |
| − | + | "text": "Петров", | |
| − | + | "autohide": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002", | |
| − | + | "type": 262144, | |
| − | + | "backcolor": "00FF0000", | |
| − | + | "uniquekey": "E7899B61-55C3-4007-91EE-DDB348913AA8", | |
| − | + | } | |
| − | + | ] | |
| − | + | </pre> | |
| − | + | <pre> | |
| − | + | //* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это) | |
| − | + | //* backcolor - hex AARRGGBB | |
| − | + | //* type - тип сообщения из флагового списка кратных двойке кодов | |
| + | </pre> | ||
| Строка 454: | Строка 475: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_ringstarted | + | -> phoneevent_ringstarted<br> |
| − | + | Сообщение из Октелла в CRM о входящем звонке. Не имеет отношения к постановке звонка в очередь. Фактически когда телефон пользователя начал звенеть. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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": "Входящие в коллцентр" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | <pre> | ||
| + | //* Частично могут отсутстовать параметры, описывающие абонента. | ||
| + | // Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec | ||
| + | // Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid | ||
| + | // Если isconference=false, то отсутствует confid, confname, confroom | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_ringstopped | + | -> phoneevent_ringstopped<br> |
| − | + | Сообщение из Октелла в CRM о прекращении входящего вызова. Если пользователь не снял трубку, а вызов прекратился. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "phoneevent_ringstopped", | |
| − | + | { | |
| − | + | "qid": "BEB91146-BA27-4236-9CAC-EF562719E7E5", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_commstarted | + | -> phoneevent_commstarted<br> |
| − | + | Сообщение из Октелла в CRM о коммутации | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | <pre> | ||
| + | //* Частично могут отсутстовать параметры, описывающие абонента. | ||
| + | // Если istask=false, то остутствуют taskid, taskname, tasktalklimitsec, taskfromhandlesec | ||
| + | // Если звонок не от другого пользователя, то отсутствуют calleruserlogin, calleruserid | ||
| + | // Если isconference=false, то отсутствует confid, confname, confroom | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_commstopped | + | -> phoneevent_commstopped<br> |
| − | + | Сообщение из Октелла в CRM о завершении коммутации. Не путать со звонком. Коммутаций в рамках обработки звонка может быть много. | |
| + | <pre> | ||
| + | [ | ||
| + | "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" | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_ivrstarted | + | -> phoneevent_ivrstarted<br> |
| − | + | Сообщение из Октелла в CRM о соединении с IVR-сценарием. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_ivrstopped | + | -> phoneevent_ivrstopped<br> |
| − | + | Сообщение из Октелла в CRM о завершении соединения с IVR сценарием. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "phoneevent_ivrstopped", | |
| − | + | { | |
| − | + | "qid": "FC9DD78C-1A5F-4E06-9AB5-A9CEDE025F6A", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_acmcallstarted | + | -> phoneevent_acmcallstarted<br> |
| − | + | Сообщение из Октелла в CRM о запуске автодозвона. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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": "Сигизмунд Львович Кац", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_acmcallstopped | + | -> phoneevent_acmcallstopped<br> |
| − | + | Сообщение из Октелла в CRM об остановке автодозвона. | |
| − | + | <pre> | |
[ | [ | ||
"phoneevent_acmcallstopped", | "phoneevent_acmcallstopped", | ||
| Строка 627: | Строка 664: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_faxstarted | + | -> phoneevent_faxstarted<br> |
| − | + | Сообщение из Октелла о начале факс-сеанса на оппозитном канале. | |
| − | + | <pre> | |
[ | [ | ||
"phoneevent_faxstarted", | "phoneevent_faxstarted", | ||
| Строка 644: | Строка 683: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_faxstopped | + | -> phoneevent_faxstopped<br> |
| − | + | Сообщение из Октелла о завершении факс-сеанса на оппозитном канале (следом возврат в коммутацию, если трубку не положили там). | |
| − | + | <pre> | |
[ | [ | ||
"phoneevent_faxstopped", | "phoneevent_faxstopped", | ||
| Строка 661: | Строка 702: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | -> phoneevent_faxreceived | + | -> phoneevent_faxreceived<br> |
| − | + | Cообщение из Октелла о завершении приема факса со ссылками на файлы. | |
| − | + | <pre> | |
[ | [ | ||
"phoneevent_faxreceived", | "phoneevent_faxreceived", | ||
| Строка 685: | Строка 728: | ||
} | } | ||
] | ] | ||
| − | + | </pre> | |
| + | <pre> | ||
//* Даже если result=0, могут быть частично полученные файлы. | //* Даже если result=0, могут быть частично полученные файлы. | ||
| − | + | </pre> | |
| Строка 694: | Строка 738: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- pbxautocallstart | + | <- pbxautocallstart<br> |
| − | + | Запрос из CRM к Октеллу на совершение звонка. В зависимости от текущего состояния линии - запускается автодозвон или нет, звонок на внешнюю линию, во внутрений номерной план, или автоопределение, сначала вызываться сам пользователь будет, а потом звонок абоненту, или сначала дозвон до абонента, а потом вызов пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxautocallstart", | |
| − | + | { | |
| − | + | "qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "number": "425", | |
| − | + | "direction": "int", | |
| − | + | "sequence": "abonent" | |
| − | + | } | |
| − | + | ] | |
| − | + | </pre> | |
| − | + | <pre> | |
| − | + | //* direction: int, ext, undefined, - | |
| + | //* sequence: abonent, user, - | ||
| + | </pre> | ||
| − | -> pbxautocallstartresult | + | -> pbxautocallstartresult<br> |
| − | + | Ответ из Октелла в CRM на запрос звонка. | |
| + | <pre> | ||
| + | [ | ||
| + | "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" | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| + | <pre> | ||
| + | //* error, errormsg: EACMAnswer: | ||
| + | //* cntStartedSuccessfully = 0, //Звонок успешно взят в реализацию | ||
| + | //* cntUserNotReady = 1, //У осуществляющего вызов пользователя не найдены линии, готовые линии, или состояние кривое | ||
| + | //* cntBusy = 2, //При звонке на внутренний номер - признак занятости. В очереди и сам повисеть может (в дальнейшем реализуем как раз ожидание в очереди...) | ||
| + | //* cntExtLineNotFound = 3, //Не найдены готовые внешние линии (если будем на это замес делать.. возможно просто будет стоять и ждать.. ) | ||
| + | //* cntError = 4, //Прочие ошибки, исключения. | ||
| + | //* cntControlNotReady = 5, //Режим не доделан. | ||
| + | //* cntNumberNotFound = 6 //Внутренний номер не найден (по факту, если сервак сам будет определять направление звонка, это вообще не будет задействовано) | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- pbxautocallabort | + | <- pbxautocallabort<br> |
| − | + | Запрос из CRM к Октеллу на прекращение автодозвона | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxautocallabort", | |
| − | + | { | |
| − | + | "qid": "28BF3E8F-1F97-47AB-BD42-92D174D4A705", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ------------------------------------------------- | ||
| + | <- pbxtransfercall<br> | ||
| + | Аналогично запросу из CRM на совершение звонка - запрос на совершение переключения. Если линия свободна - действует аналогично полностью запросу на звонок. Если пользователь в разговоре - через флэш набирает указанный номер. | ||
| + | <pre> | ||
| + | [ | ||
| + | "pbxtransfercall", | ||
| + | { | ||
| + | "qid": "81FBE5C2-E81B-4D0D-8AC0-72C22ACCD4E2", | ||
| + | "userlogin": "Иванов", | ||
| + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | ||
| + | "number": "425", | ||
| + | "direction": "int", | ||
| + | "sequence": "abonent" | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| − | -> pbxtransfercallresult | + | |
| − | + | -> pbxtransfercallresult<br> | |
| − | + | И аналогичный ответ из Oktell в CRM. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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" | |
| − | + | } | |
| + | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | + | -> pbxdeclinecall<br> | |
| − | + | Запрос из CRM к Октеллу на отклонение звонка. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxdeclinecall", | |
| − | + | { | |
| − | + | "qid": "0AFB2B0C-A68F-448B-9B4B-AB42096D4E95", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| + | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- pbxabortcall | + | <- pbxabortcall<br> |
| − | + | Запрос из CRM к Октеллу на обрыв текущего существующего сеанса связи. Не путать с DeclineCall. Прекращает коммутацию, если существует, прекращает автодозвон, если запущен. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxabortcall", | |
| − | + | { | |
| − | + | "qid": "53F2EE86-46AF-4A37-8C60-2F27EADD10DE", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- pbxmakeflash | + | <- pbxmakeflash<br> |
| − | + | Запрос из CRM в Октелл на программную эмуляцию флэш. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "pbxmakeflash", | |
| − | + | { | |
| − | + | "qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| Строка 832: | Строка 891: | ||
------------------------------------------------- | ------------------------------------------------- | ||
| − | <- startsvcscript | + | <- startsvcscript<br> |
| − | + | Запрос из CRM в Октелл на запуск служебного сценария. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> startsvcscriptresult | + | -> startsvcscriptresult<br> |
| − | + | Ответ Октелла на запрос запуска служебного сценария. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "startsvcscriptresult", | |
| − | + | { | |
| − | + | "qid": "244E3867-470E-4A56-904D-D435D57CFBFE", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "scriptname": "Служебный сценарий получения почты", | |
| − | + | "result": 0, | |
| − | + | "returnvalue": "присвоенный в сценарии результат", | |
| − | + | "error": 10 | |
| − | + | } | |
| − | + | ] | |
| − | + | </pre> | |
| − | + | <pre> | |
| + | //* error: 10 - файл не найден, 11 - исключение, 12 - таймаут | ||
| + | </pre> | ||
| Строка 875: | Строка 937: | ||
''' ДИНАМИЧЕСКОЕ ВЗАИМОДЕЙСТВИЕ.''' | ''' ДИНАМИЧЕСКОЕ ВЗАИМОДЕЙСТВИЕ.''' | ||
| − | + | ||
| + | Информация от CRM о поддерживаемых методах, доступных Октеллу для инициации исполнения. | ||
| − | + | Общая идея: | |
| − | + | В момент создания сценариев в Октелле администратор имеет возможность настроить взаимодействие с CRM. | |
| − | + | Взаимодействие представляет собой вызов определенного метода с передачей в него входных параметров, и возможно ожидание его исполнения с возвратом [нескольких] выходных значений. | |
| − | + | При организации подключения Октелл-сервера к CRM-серверу, Октеллом производится запрос доступных в CRM методов. | |
| − | + | По каждому методу дополнительно описывается перечень входных и выходных параметров, их типы, способ исполнения метода (по организованному каналу или отдельным http-подключением), возможность его отмены (для длительных операций, например метод "открыть диалоговую форму" может быть отменен обратным методом "закрыть диалоговую форму", а может быть прерван с тем же результатом). | |
| − | + | В интеграционном интерфейсе отсутствует таким образом необходимость конкретизировать методы CRM. В момент настройки сценария администратор уже имеет о них информацию и настраивает конкретный сценарий под место. | |
| − | + | Для примера: в момент поступления вызова Октелл определил номер абонента. Производит синхронное исполнение динамического метода CRM "вернуть ид компании по номеру телефона", дожидается ответа и принимает в сценарий значение. Далее исполняет динамический метод "Ответственный сотрудник", дожидается ответа и принимает в сценарий значение. Все это время абоненту проигрывается приветствие. Когда воспроизведение завершается, Октелл производит маршрутизацию в соответствии с вернувшимися значениями, а также в момент поступления звонка сотруднику исполняет динамический метод "открыть карточку компании" с передачей в качестве параметра идентификатора, вернувшегося на первом шаге. В случае, если сотрудник не снимает трубку, Октелл отменяет исполнение метода, тем самым отдавая команду на закрытие карточки компании. | |
| − | + | Ни об одном из перечисленных в примере методов CRM Октелл не знает, зато знает администратор, настраивающий систему на работу совместно с CRM. | |
| − | + | Серия методов forms - частный случай методов, позволяющий выделить в отдельную категорию работу с карточками. Смысл и способ работы тот же самый. Тем не менее карточки могут быть представлены как методы. | |
---------------------------------------------- | ---------------------------------------------- | ||
| − | -> getavailablemethods | + | -> getavailablemethods<br> |
| − | <- availablemethods | + | <- availablemethods<br> |
| − | -> executemethod | + | -> executemethod<br> |
| − | -> cancelmethod | + | -> cancelmethod<br> |
| − | <- methodresult | + | <- methodresult<br> |
| − | -> getavailableforms | + | -> getavailableforms<br> |
| − | <- availableforms | + | <- availableforms<br> |
| − | -> showform | + | -> showform<br> |
| − | -> closeform | + | -> closeform<br> |
| − | <- formresult | + | <- formresult<br> |
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> getavailablemethods | + | -> getavailablemethods<br> |
| − | + | Отправляет из Oktell в CRM сообщение-запрос на возврат доступных динамических методов CRM. | |
| + | <pre> | ||
| + | [ | ||
| + | "getavailablemethods", | ||
| + | { | ||
| + | "qid": "76EF6E46-23DA-47B6-B3BD-A7076FEDE170" | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| + | |||
| − | + | <- availablemethods<br> | |
| − | + | Сообщение-ответ из CRM в Oktell со списком доступных динамических методов CRM. | |
| + | <pre> | ||
| + | [ | ||
| + | "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" | |
| − | + | }, | |
| − | + | {...}, | |
| − | + | {...} | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
] | ] | ||
| + | }, | ||
| + | {...}, | ||
| + | {...} | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> executemethod | + | -> executemethod<br> |
| − | + | Сообщение-команда из Октелл в CRM на выполнение динамического метода (возможно у конкретного пользователя). | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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" | |
| − | + | } | |
| − | + | } | |
| − | + | ] | |
| − | + | </pre> | |
| + | |||
| + | |||
| + | <- methodresult<br> | ||
| + | Сообщение-результат выполнения динамического метода из CRM в Октелл с возвратом выходных значений. Не отправляется, если исполнение прерывается командой CancelMethod. | ||
| + | <pre> | ||
| + | [ | ||
| + | "methodresult", | ||
| + | { | ||
| + | "qid": "A238110C-6B74-4980-AA23-41402B1E9B0E", | ||
| + | "methodkey": "createrecord", | ||
| + | "executionid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86", | ||
| + | "outputparameters": { | ||
| + | "recordid": "ADCB1376-BA66-496C-A56E-AB7A7D5A9193" | ||
| + | } | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> cancelmethod | + | -> cancelmethod<br> |
| − | + | Сообщение-команда из Октелл на прекращение выполнения ранее запущенного динамического метода. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> getavailableforms | + | -> getavailableforms<br> |
| − | + | Отправляет из Oktell в CRM сообщение-запрос на возврат доступных карточек CRM. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "getavailableforms", | |
| − | + | { | |
| − | + | "qid": "7A1FF57A-ED91-4033-A42F-1D2AE630450E" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | <- availableforms | + | <- availableforms<br> |
| − | + | Cообщение-ответ из CRM в Oktell со списком доступных карточек CRM. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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: "Комментарии" | |
| − | + | } | |
| − | + | ] | |
| − | + | {...}, | |
| − | + | {...} | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
] | ] | ||
| + | }, | ||
| + | {...}, | ||
| + | {...} | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> showform | + | -> showform<br> |
| − | + | Сообщение-команда из Октелл в CRM на открытие карточки у конкретного пользователя. | |
| + | <pre> | ||
| + | [ | ||
| + | "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" | ||
| + | } | ||
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| + | |||
| − | + | <- formresult<br> | |
| − | + | Сообщение-результат из CRM в Октелл при закрытии карточки пользователем с возвратом выходных значений. Не отправляется, если отображение прерывается командой CloseForm | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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": "блаблабла" | |
| − | + | } | |
| + | } | ||
| + | ] | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
| − | -> closeform | + | -> closeform<br> |
| − | + | Сообщение-команда из Октелл на закрытие карточки у конкретного пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "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 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| Строка 1192: | Строка 1270: | ||
''' КОНФЕРЕНЦ-СВЯЗЬ''' | ''' КОНФЕРЕНЦ-СВЯЗЬ''' | ||
| − | + | Запросы из CRM, ответы от Октелла, события из Октелла | |
--------------------------------------------- | --------------------------------------------- | ||
| − | <- confhandleevent | + | <- confhandleevent<br> |
| − | + | Подписка/отписка на указанную категорию событий сервера конференций. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "confhandleevent", | |
| − | + | { | |
| − | + | "qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "conferenceid": "519C0DDA-8DDF-4212-9AE1-9E4047AB4BE3", | |
| − | + | "eventtype": "competitors", | |
| − | + | "handle": true | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | <pre> | ||
| + | //* eventtype - уровень глубины получаемых сообщений. conferences|competitors|userstates | ||
| + | // предполагается, что в общем случае инфа идет только о списке конференций (conferences) | ||
| + | // когда юзер находится в конференции - дополнительно о внутреннем состоянии конференции (competitors) | ||
| + | // когда юзер настраивает конференцию и выбирает из списка участников для автоматического приглашения - о состояниях всех пользователей (userstates) | ||
| + | // Подписками управляет сам внешний модуль. Когда потребность уходит - необходимо отписываться, чтобы не заваливать канал порожняком. | ||
| + | //* handle - true|false - подписаться/отписаться | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- checkcanconnecttogathertoconference | + | <- checkcanconnecttogathertoconference<br> |
| − | + | Запрос из CRM к oktell. В момент коммутации, в случае если во флеш-буфере находится абонент, определяет, существует ли возможность переключиться всем вместе в конференцию единой командой. Это возможно, если один из абонентов - конференция, а другой - линия/пользователь. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "checkcanconnecttogathertoconference", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> confcheckcanconnecttogatherresult | + | -> confcheckcanconnecttogatherresult<br> |
| − | + | Ответ из Oktell в CRM на запрос возможности совместного переключения в конференцию. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "confcheckcanconnecttogatherresult", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "canconnecttogather": true, | |
| − | + | "inconference": false, | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- connecttogathertoconference | + | <- connecttogathertoconference<br> |
| − | + | Запрос из CRM к oktell. Производит совместное переключение текущего онлайн-абонента и флеш-абонента в существующую конференцию. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "connecttogathertoconference", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- buildconferencefromcommutation | + | <- buildconferencefromcommutation<br> |
| − | + | Запрос из CRM к oktell. Производит преобразование текущей коммутации в конференцию с двумя участниками. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "buildconferencefromcommutation", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- attachasghost | + | <- attachasghost<br> |
| − | + | Запрос из CRM к Oktell. Производит подключение к указанному каналу/пользователю на прослушку/помощь. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "attachasghost", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "ghostedid": "FE9D6B52-C267-4D39-AC9F-81A0F44713FF", | |
| − | + | "ghostedlogin": "Петров" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> attachasghostresult | + | -> attachasghostresult<br> |
| − | + | Ответ из Oktell в CRM на запрос о подключении к каналу на прослушку. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "attachasghostresult", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B", | |
| − | + | "result": 0, | |
| − | + | "error": 52703 | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| + | <pre> | ||
| + | //* ghostedid - ид пользователя или линии, к которому подцепляться для прослушки | ||
| + | //* ghostedlogin - логин пользователя, к которому подцепляться для прослушки | ||
| + | </pre> | ||
| − | |||
| − | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- getconferences | + | <- getconferences<br> |
| − | + | Запрос из CRM в Oktell на возврат текущих активных конференц-сессий. | |
| − | + | <pre> | |
| − | + | [ | |
| − | + | "getconferences", | |
| − | + | { | |
| − | + | "qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B", | |
| − | + | "userlogin": "Иванов", | |
| − | + | "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B" | |
| − | + | } | |
| − | + | ] | |
| + | </pre> | ||
| − | -> getconferencesresult | + | -> getconferencesresult<br> |
| − | + | Ответ из Oktell в CRM со списком текущих активных конференц-сессий. | |
| − | + | <pre> | |
[ | [ | ||
"getconferencesresult", | "getconferencesresult", | ||
| Строка 1358: | Строка 1450: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- getconferencecompetitors | + | <- getconferencecompetitors<br> |
| − | + | Запрос из CRM в Oktell на возврат текущих участников указанной конференции. | |
| − | + | <pre> | |
[ | [ | ||
"getconferencecompetitors", | "getconferencecompetitors", | ||
| Строка 1372: | Строка 1466: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getconferencecompetitorsresult | + | -> getconferencecompetitorsresult<br> |
| − | + | Ответ из Oktell в CRM со списком текущих участников указанной в запросе конференции. | |
| − | + | <pre> | |
[ | [ | ||
"getconferencecompetitorsresult", | "getconferencecompetitorsresult", | ||
| Строка 1411: | Строка 1506: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- getusersforconferenceinvitelist | + | <- getusersforconferenceinvitelist<br> |
| − | + | Запрос из CRM в Oktell на возврат возможных участников конференции (учетных записей всех пользователей системы с указанием их состояний и присутствия в других конференциях). | |
| − | + | <pre> | |
[ | [ | ||
"getusersforconferenceinvitelist", | "getusersforconferenceinvitelist", | ||
| Строка 1424: | Строка 1521: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getusersforconferenceinvitelistresult | + | |
| − | + | -> getusersforconferenceinvitelistresult<br> | |
| − | + | Ответ из Oktell в CRM со списком учетных записей, доступных для приглашения в конференцию с их текущими состояниями и присутствием в других конференциях. | |
| + | <pre> | ||
[ | [ | ||
"getusersforconferenceinvitelistresult", | "getusersforconferenceinvitelistresult", | ||
| Строка 1456: | Строка 1555: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- createnewconference | + | <- createnewconference<br> |
| − | + | Запрос из CRM в Oktell на создание новой конференции. Указывает параметры самой конференц-сессии, список участников для приглашения на старте. | |
| − | + | <pre> | |
[ | [ | ||
"createnewconference", | "createnewconference", | ||
| Строка 1501: | Строка 1602: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> createnewconferenceresult | + | -> createnewconferenceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом исполнения команды на создание конференции. | |
| − | + | <pre> | |
[ | [ | ||
"createnewconferenceresult", | "createnewconferenceresult", | ||
| Строка 1517: | Строка 1619: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | <pre> | ||
| + | //* conference:accessmode - free|shared|closed | ||
| + | //* conference:recordrights - director|competitors|selected | ||
| + | //* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один параметр из набора {userid|userlogin, lineid, intnumber, extnumber} | ||
| + | //* список recordusers имеет смысл только когда conference:recordrights=selected. | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- setupexistingconference | + | <- setupexistingconference<br> |
| − | + | Запрос из CRM в Oktell от имени управляющего конференции на изменение параметров указанной конференции. | |
| − | + | <pre> | |
[ | [ | ||
"setupexistingconference", | "setupexistingconference", | ||
| Строка 1555: | Строка 1660: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> setupexistingconferenceresult | + | -> setupexistingconferenceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом исполнения команды на изменение параметров конференции. | |
| − | + | <pre> | |
[ | [ | ||
"setupexistingconferenceresult", | "setupexistingconferenceresult", | ||
| Строка 1571: | Строка 1677: | ||
} | } | ||
] | ] | ||
| − | + | </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> | ||
| − | |||
| − | |||
| − | |||
| + | --------------------------------------------- | ||
| + | <- getconferenceinfo<br> | ||
| + | Запрос из CRM в Oktell на возврат текущих параметров указанной конференции. | ||
| + | <pre> | ||
[ | [ | ||
"getconferenceinfo", | "getconferenceinfo", | ||
| Строка 1590: | Строка 1699: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getconferenceinforesult | + | -> getconferenceinforesult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает текущие настройки указанной в запросе конференции, текущих ее участников и их состояния. | |
| − | + | <pre> | |
[ | [ | ||
"getconferenceinforesult", | "getconferenceinforesult", | ||
| Строка 1648: | Строка 1758: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| + | --------------------------------------------- | ||
| + | <- stopconference<br> | ||
| + | Запрос из CRM в Oktell от имени управляющего конференции на прекращение указанной конференции. | ||
| + | <pre> | ||
[ | [ | ||
"stopconference", | "stopconference", | ||
| Строка 1662: | Строка 1774: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> stopconferenceresult | + | -> stopconferenceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на прекращение указанной конференции. | |
| − | + | <pre> | |
[ | [ | ||
"stopconferenceresult", | "stopconferenceresult", | ||
| Строка 1679: | Строка 1792: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- confsetvoiceparams | + | <- confsetvoiceparams<br> |
| − | + | Запрос из CRM в Oktell от имени управляющего конференции на изменение голосовых свойств канала указанного участника указанной конференции. | |
| − | + | <pre> | |
[ | [ | ||
"confsetvoiceparams", | "confsetvoiceparams", | ||
| Строка 1702: | Строка 1817: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> confsetvoiceparamsresult | + | -> confsetvoiceparamsresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на изменение голосовых свойств канала. | |
| − | + | <pre> | |
[ | [ | ||
"confsetvoiceparamsresult", | "confsetvoiceparamsresult", | ||
| Строка 1719: | Строка 1835: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | <pre> | ||
| + | //* competitor:cantalk - может ли говорить | ||
| + | //* competitor:canlisten - может ли слышать | ||
| + | //* competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов - может ли слышать подключившегося супервизора | ||
| + | //* достаточно/следует указывать только один из набора определяющих участника идентификаторов {competitorid, userid|userlogin, lineid} | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| − | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- confsetwanttalk | + | <- confsetwanttalk<br> |
| − | + | Запрос из CRM в Oktell от имени простого бесправного участника селекторного совещания на взятие голоса (сообщение для управляющего). | |
| − | + | <pre> | |
[ | [ | ||
"confsetwanttalk", | "confsetwanttalk", | ||
| Строка 1739: | Строка 1858: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> confsetwanttalkresult | + | -> confsetwanttalkresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на взятие голоса. | |
| − | + | <pre> | |
[ | [ | ||
"confsetwanttalkresult", | "confsetwanttalkresult", | ||
| Строка 1754: | Строка 1874: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | |||
| − | |||
| − | |||
| + | --------------------------------------------- | ||
| + | <- confsetghostmode<br> | ||
| + | Запрос из CRM в Oktell от имени прослушивающего супервизора на изменение режима конференц-помощи. | ||
| + | <pre> | ||
[ | [ | ||
"confsetghostmode", | "confsetghostmode", | ||
| Строка 1769: | Строка 1891: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> confsetghostmoderesult | + | -> confsetghostmoderesult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на изменение режима конференц-помощи. | |
| − | + | <pre> | |
[ | [ | ||
"confsetghostmoderesult", | "confsetghostmoderesult", | ||
| Строка 1784: | Строка 1907: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | <- exitconference | + | <- exitconference<br> |
| − | + | Запрос из CRM в Oktell от имени любого участника на выход из конференции. В канал подается отбой. Альтернативой является положение трубки на телефоне. | |
| − | + | <pre> | |
[ | [ | ||
"exitconference", | "exitconference", | ||
| Строка 1798: | Строка 1923: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> exitconferenceresult | + | -> exitconferenceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на выход из конференции. | |
| − | + | <pre> | |
[ | [ | ||
"exitconferenceresult", | "exitconferenceresult", | ||
| Строка 1813: | Строка 1939: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | + | <- confdisconnectcompetitor<br> | |
| − | + | Запрос из CRM в Oktell от имени управляющего конференцией на вывод из конференции указанного участника. | |
| − | + | <pre> | |
| − | + | [ | |
"confdisconnectcompetitor", | "confdisconnectcompetitor", | ||
{ | { | ||
| Строка 1833: | Строка 1961: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> confdisconnectcompetitorresult | + | -> confdisconnectcompetitorresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на вывод указанного в запросе участника. | |
| − | + | <pre> | |
[ | [ | ||
"confdisconnectcompetitorresult", | "confdisconnectcompetitorresult", | ||
| Строка 1848: | Строка 1977: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | + | <- enterconference<br> | |
| − | + | Запрос из CRM в Oktell на вход в конференцию. При необходимости осуществляет запрос на вход у управляющего. Прерывание может производиться командой exitconference | |
| − | + | <pre> | |
| − | + | [ | |
"enterconference", | "enterconference", | ||
{ | { | ||
| Строка 1862: | Строка 1993: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> enterconferenceresult | + | -> enterconferenceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на вход в конференцию. | |
| − | + | <pre> | |
[ | [ | ||
"enterconferenceresult", | "enterconferenceresult", | ||
| Строка 1877: | Строка 2009: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | + | <- confdisconnectcompetitor<br> | |
| − | + | Запрос-команда из CRM в Oktell от имени управляющего конференцией на разрешение/запрет входа в конференцию указанному участнику, ранее запросившему право входа. | |
| − | + | <pre> | |
[ | [ | ||
"confpermitdenyentrance", | "confpermitdenyentrance", | ||
| Строка 1898: | Строка 2032: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> confpermitdenyentranceresult | + | -> confpermitdenyentranceresult<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на разрешение/запрет входа в конференцию участнику. | |
| − | + | <pre> | |
[ | [ | ||
"confpermitdenyentranceresult", | "confpermitdenyentranceresult", | ||
| Строка 1913: | Строка 2048: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
--------------------------------------------- | --------------------------------------------- | ||
| − | + | <- invitetoconference<br> | |
| − | + | Запрос из CRM в Oktell от имени управляющего конференцией или любого другого участника на приглашение в конференцию стороннего абонента (пользователя, линию, абонента по внутреннему/внешнему номеру). | |
| − | + | <pre> | |
[ | [ | ||
"invitetoconference", | "invitetoconference", | ||
| Строка 1939: | Строка 2076: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> invitetoconference | + | -> invitetoconference<br> |
| − | + | Ответ из Oktell в CRM с результатом выполнения запроса на приглашение нового участника конференции. | |
| − | + | <pre> | |
[ | [ | ||
"invitetoconference", | "invitetoconference", | ||
| Строка 1954: | Строка 2092: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | <pre> | ||
| + | //* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один параметр из набора {userid|userlogin, lineid, intnumber, extnumber} | ||
| + | </pre> | ||
| + | |||
| − | |||
''' События из Октелла по теме конференций.''' | ''' События из Октелла по теме конференций.''' | ||
--------------------------------------------- | --------------------------------------------- | ||
| − | -> conflistchanged | + | -> conflistchanged<br> |
| − | + | Событие из Oktell в CRM об изменении списка текущих активных конференций. | |
| − | + | <pre> | |
[ | [ | ||
"conflistchanged", | "conflistchanged", | ||
| Строка 1997: | Строка 2139: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
--------------------------------------------- | --------------------------------------------- | ||
| − | -> "conf***" | + | -> "conf***"<br> |
| − | + | Другие событие из Oktell в CRM об изменениях на сервере конференций. Общий список возможных событий приведен ниже. | |
| − | + | <pre> | |
[ | [ | ||
"conf***", | "conf***", | ||
| Строка 2014: | Строка 2157: | ||
} | } | ||
] | ] | ||
| − | + | </pre> | |
| + | <pre> | ||
//* confparamschanged, | //* confparamschanged, | ||
//* confcompositionchanged, | //* confcompositionchanged, | ||
| Строка 2023: | Строка 2167: | ||
//* confnotifyinvite, | //* confnotifyinvite, | ||
//* confpossiblecompetitorstatechanged | //* confpossiblecompetitorstatechanged | ||
| − | + | </pre> | |
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getuserstate | + | <- getuserstate<br> |
| − | + | Запрос из CRM в Oktell состояния указанного пользователя системы. | |
| − | + | <pre> | |
[ | [ | ||
"getuserstate", | "getuserstate", | ||
| Строка 2038: | Строка 2182: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getuserstateresult | + | -> getuserstateresult<br> |
| − | + | Ответ из Oktell в CRM с полным состоянием указанного в запросе пользователя системы. | |
| − | + | <pre> | |
[ | [ | ||
"getuserstateresult", | "getuserstateresult", | ||
| Строка 2057: | Строка 2202: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- checkuserintask | + | <- checkuserintask<br> |
| − | + | Запрос из CRM в Oktell о присутствии указанного пользователя в задачах коллцентра. | |
| − | + | <pre> | |
| − | [ | + | [ |
"checkuserintask", | "checkuserintask", | ||
{ | { | ||
| Строка 2070: | Строка 2217: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> checkuserintaskresult | + | -> checkuserintaskresult<br> |
| − | + | Ответ из Oktell в CRM с ответом на запрос присутствия указанного в запросе пользователя в задачах коллчентра. Описание задачи в случае положительного ответа. | |
| − | + | <pre> | |
[ | [ | ||
"checkuserintaskresult", | "checkuserintaskresult", | ||
| Строка 2093: | Строка 2241: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getcurrentlinestate | + | <- getcurrentlinestate<br> |
| − | + | Запрос из CRM в Oktell состояния телефонной линии указанного пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getcurrentlinestate", | "getcurrentlinestate", | ||
| Строка 2106: | Строка 2256: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getcurrentlinestateresult | + | -> getcurrentlinestateresult<br> |
| − | + | Ответ из Oktell в CRM с полным состоянием телефонной линии указанного в запросе пользователя системы. | |
| − | + | <pre> | |
[ | [ | ||
"getcurrentlinestateresult", | "getcurrentlinestateresult", | ||
| Строка 2126: | Строка 2277: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getcurrentlinestate | + | <- getcurrentlinestate<br> |
| − | + | Запрос из CRM в Oktell состояния очереди указанного пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
"getcurrentqueue", | "getcurrentqueue", | ||
{ | { | ||
| Строка 2139: | Строка 2292: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getcurrentlinestateresult | + | -> getcurrentlinestateresult<br> |
| − | + | Ответ из Oktell в CRM с состоянием очереди указанного в запросе пользователя системы. | |
| − | + | <pre> | |
[ | [ | ||
"getcurrentqueueresult", | "getcurrentqueueresult", | ||
| Строка 2192: | Строка 2346: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getchaincontent | + | <- getchaincontent<br> |
| − | + | Запрос из CRM в Oktell на возврат контента текущей сессии, в которой участвует линия указанного пользователя. Кто инициировал звонок, когда, с кем коммутировался, кто переключал, куда, на кого, когда, были ли комментарии какие-то установлены в контент... | |
| − | + | <pre> | |
| − | + | [ | |
"getchaincontent", | "getchaincontent", | ||
{ | { | ||
| Строка 2205: | Строка 2361: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getchaincontentresult | + | -> getchaincontentresult<br> |
| − | + | Ответ из Oktell в CRM с контентом текущей сессии указанного в запросе пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getchaincontentresult", | "getchaincontentresult", | ||
| Строка 2290: | Строка 2447: | ||
} | } | ||
] | ] | ||
| − | + | </pre> | |
| + | <pre> | ||
* trace:contentelementtype: | * trace:contentelementtype: | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- setchaincontentcustomfield | + | <- setchaincontentcustomfield<br> |
| − | + | Запрос из CRM в Oktell на установку комментария в контент текущей сессии, в которой участвует канал указанного пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"setchaincontentcustomfield", | "setchaincontentcustomfield", | ||
| Строка 2306: | Строка 2466: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> setchaincontentcustomfieldresult | + | -> setchaincontentcustomfieldresult<br> |
| − | + | Ответ из Oktell в CRM с результатом установки комментария в контент текущей сессии, в которой участвует канал указанного в запросе пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"setchaincontentcustomfieldresult", | "setchaincontentcustomfieldresult", | ||
| Строка 2321: | Строка 2482: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- setchaincontentcustomfield | + | <- setchaincontentcustomfield<br> |
| − | + | Запрос из CRM в Oktell на возврат комментария из контента текущей сессии, в которой участвует канал указанного пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getchaincontentcustomfield", | "getchaincontentcustomfield", | ||
| Строка 2334: | Строка 2497: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getchaincontentcustomfieldresult | + | -> getchaincontentcustomfieldresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает комментарий из контента текущей сессии, в которой участвует канал указанного в запросе пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getchaincontentcustomfieldresult", | "getchaincontentcustomfieldresult", | ||
| Строка 2350: | Строка 2514: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getcallingoutabonentinfo | + | <- getcallingoutabonentinfo<br> |
| − | + | Запрос из CRM в Oktell на возврат информации об абоненте, которому осуществляется исходящий вызов от имени указанного пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getcallingoutabonentinfo", | "getcallingoutabonentinfo", | ||
| Строка 2363: | Строка 2529: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getcallingoutabonentinforesult | + | -> getcallingoutabonentinforesult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает информацию об абоненте, которому осуществляется исходящий вызов от имени указанного в запросе пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getcallingoutabonentinforesult", | "getcallingoutabonentinforesult", | ||
| Строка 2381: | Строка 2548: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getusersbynumbers | + | <- getusersbynumbers<br> |
| − | + | Запрос из CRM в Oktell на возврат информации о пользователях системы по указанным внутренним номерам от имени указанного пользователя. | |
| − | + | <pre> | |
| − | [ | + | [ |
"getusersbynumbers", | "getusersbynumbers", | ||
{ | { | ||
| Строка 2400: | Строка 2569: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getusersbynumbersresult | + | -> getusersbynumbersresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает информацию о пользователях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров. | |
| − | + | <pre> | |
[ | [ | ||
"getusersbynumbersresult", | "getusersbynumbersresult", | ||
| Строка 2426: | Строка 2596: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getitemsbynumbers | + | <- getitemsbynumbers<br> |
| − | + | Запрос из CRM в Oktell на возврат информации о пользователях и линиях системы по указанным внутренним номерам от имени указанного пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
"getitemsbynumbers", | "getitemsbynumbers", | ||
{ | { | ||
| Строка 2445: | Строка 2617: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getitemsbynumbersresult | + | -> getitemsbynumbersresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает информацию о пользователях и линиях, которые обнаруживаются системой при парсинге указанных в запросе внутренних номеров. | |
| − | + | <pre> | |
[ | [ | ||
"getitemsbynumbersresult", | "getitemsbynumbersresult", | ||
| Строка 2478: | Строка 2651: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getsystemnumberbyuser | + | <- getsystemnumberbyuser<br> |
| − | + | Запрос из CRM в Oktell на возврат системного внутреннего номера, по которому может быть произведен вызов указанного в суб-параметре пользователя от имени указанного пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getsystemnumberbyuser", | "getsystemnumberbyuser", | ||
| Строка 2495: | Строка 2670: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getsystemnumberbyuserresult | + | -> getsystemnumberbyuserresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя. | |
| − | + | <pre> | |
[ | [ | ||
"getsystemnumberbyuserresult", | "getsystemnumberbyuserresult", | ||
| Строка 2511: | Строка 2687: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getpbxnumbersforitem | + | <- getpbxnumbersforitem<br> |
| − | + | Запрос из CRM в Oktell на возврат текстового списка внутренних номеров указанного в суб-параметре пользователя. | |
| − | + | <pre> | |
| − | + | [ | |
"getpbxnumbersforitem", | "getpbxnumbersforitem", | ||
{ | { | ||
| Строка 2527: | Строка 2705: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getpbxnumbersforitemresult | + | -> getpbxnumbersforitemresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает список несистемных внутренних номеров через запятую, по которым возможен вызов пользователя, указанного в суб-параметре запроса. | |
| − | + | <pre> | |
[ | [ | ||
"getpbxnumbersforitemresult", | "getpbxnumbersforitemresult", | ||
| Строка 2544: | Строка 2723: | ||
} | } | ||
] | ] | ||
| − | + | </pre> | |
| + | <pre> | ||
/* "itemtype": "line", | /* "itemtype": "line", | ||
/* "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0", | /* "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0", | ||
/* "itemlinenumber": "17004" | /* "itemlinenumber": "17004" | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getmainpbxnumberforitem | + | <- getmainpbxnumberforitem<br> |
| − | + | Запрос из CRM в Oktell на возврат основного несистемного внутреннего номера, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре. | |
| − | + | <pre> | |
| − | + | [ | |
"getmainpbxnumberforitem", | "getmainpbxnumberforitem", | ||
{ | { | ||
| Строка 2564: | Строка 2746: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getmainpbxnumberforitemresult | + | -> getmainpbxnumberforitemresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает основной несистемный внутренний номер, по которому возможен вызов объекта системы (пользователя/линии), указанного в суб-параметре запроса. | |
| − | + | <pre> | |
[ | [ | ||
"getmainpbxnumberforitemresult", | "getmainpbxnumberforitemresult", | ||
| Строка 2581: | Строка 2764: | ||
} | } | ||
] | ] | ||
| − | + | </pre> | |
| + | <pre> | ||
/* "itemtype": "line", | /* "itemtype": "line", | ||
/* "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0", | /* "itemlineid": "9F93FE9C-0B80-4242-BD24-D338BE8E4FC0", | ||
/* "itemlinenumber": "17004" | /* "itemlinenumber": "17004" | ||
| + | </pre> | ||
| + | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
| − | <- getpbxnumbers | + | <- getpbxnumbers<br> |
| − | + | Запрос из CRM в Oktell на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде. | |
| − | + | <pre> | |
| − | + | [ | |
"getpbxnumbers", | "getpbxnumbers", | ||
{ | { | ||
| Строка 2596: | Строка 2782: | ||
"mode": "simple" | "mode": "simple" | ||
} | } | ||
| − | + | ] | |
| + | </pre> | ||
| − | <- getpbxnumbers | + | |
| − | + | <- getpbxnumbers<br> | |
| − | + | Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде. | |
| + | <pre> | ||
[ | [ | ||
"getpbxnumbers", | "getpbxnumbers", | ||
| Строка 2610: | Строка 2798: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getpbxnumbersresult | + | -> getpbxnumbersresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в простом виде. | |
| − | + | <pre> | |
[ | [ | ||
"getpbxnumbersresult", | "getpbxnumbersresult", | ||
| Строка 2634: | Строка 2823: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | <- getpbxnumbers | + | <- getpbxnumbers<br> |
| − | + | Запрос из CRM в Oktell на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде. | |
| − | + | <pre> | |
[ | [ | ||
"getpbxnumbers", | "getpbxnumbers", | ||
| Строка 2646: | Строка 2836: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| + | |||
| − | <- getpbxnumbers | + | <- getpbxnumbers<br> |
Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде. | Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде. | ||
| − | + | <pre> | |
[ | [ | ||
"getpbxnumbers", | "getpbxnumbers", | ||
| Строка 2659: | Строка 2851: | ||
} | } | ||
] | ] | ||
| + | </pre> | ||
| − | -> getpbxnumbersresult | + | -> getpbxnumbersresult<br> |
| − | + | Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями. | |
| − | + | <pre> | |
[ | [ | ||
"getpbxnumbersresult", | "getpbxnumbersresult", | ||
| Строка 2688: | Строка 2881: | ||
} | } | ||
] | ] | ||
| − | + | </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> | ||
Версия 13:37, 18 апреля 2012
В рамках настоящей статьи рассматриваются вопросы интеграции web-системы и коммуникационной системы. Web система на рабочем месте сотрудника используется через браузер. Телефон, находящийся на рабочем месте сотрудника подключен к серверу (узлу коммутаций) Oktell. Задача: объединить две системы функционально, предоставив возможности приема и совершения звонков и управления телефоном из интерфейсов WEB системы.
КРАТКОЕ ОПИСАНИЕ ВОЗМОЖНОСТЕЙ ТЕЛЕФОНИИ ОКТЕЛ
Стандартный функционал октелла предоставляет пользователям:
- доступ к управлению телефонами (позвонить, переключить, отклонить звонок, организовать конференцию, пригласить других участников в конференцию, подключиться к разговору в режиме прослушивания, помощи и т.д.).
- доступ к управлению состояниями пользователей (перерыв - чтобы поток входящих звонков не поступал, занят - чтобы отметить факт обработки звонка, переадресация - чтобы все звонки на #пользователя перенаправлялись в соответствии с настроенными правилами, готов - чтобы вернуться к обычному режиму).
- информацию о текущем состоянии телефонов, внутренних номеров, пользователей с т.з. занятости в операциях телефонии.
- информацию о поступающем звонке, абоненте
- доступ к статистике разговоров (по правам).
- доступ к записям разговоров (по правам).
- доступ к информации об ожидающей очереди абонентов в реальном времени.
- доступ к управлению режимом переадресации.
и т.д.
В рамках настройки сценариев октелла, имеется возможность отправлять синхронные и асинхронные запросы в веб-систему (фактически исполнять методы по событиям в октелле)и получать ответы и применять их в рамках проведения маршрутизации или любых других действий, реализуемых в сценариях. Например:
- Выяснить, какому клиенту/контакту принадлежит определившийся номер телефона или введенный им вручную с помощью DTMF-набора номер договора, отфильтровать по черному списку, переключить вызов на ответственного за работу с этим контактом пользователя, если пользователя нет в системе - переключить на секретаря, а если контакт новый - соединить с отделом продаж. Если ответственный пользователь занят, предложить оставить голосовое сообщение для VIP клиентов.
- В момент поступления звонка открыть карточку у пользователя, которому звонок поступает. Закрыть ее автоматически, если пользователь так и не снял трубку (а снял кто-то другой, или звонок потерялся).
- Выполнить какое-то важное с т.з. веб-системы действие в случае, например, если пользователь оставил заказ на встречный звонок, занести его в список задач.
Именно сценарии придают жизнь и востребованность октеллу и его сервисов Среди событий октелла, отрабатываемых в сценариях^
- поступление внешнего звонка.
- завершение звонка.
- переключение абонента на пользователя, группу пользователей, задачу коллцентра.
- любое из интересующих явлений в ходе обработки звонка (от преобразования номера абонента в нужный формат и сверки времени поступления звонка до обработки контента звонка после завершения и выявления там факта состоявшейся конференции).
- наступление определенного времени.
- периодический запуск по таймеру.
- поступление/отправка e-mail.
- поступление/отправка sms/icq/jabber.
- контрольные события коллцентра (оператор первым положил трубку, оператор слишком долго находится в перерыве или поствызывной обработке, число операторов в задаче меньше минимально допустимого, число абонентов в очереди задачи больше допустимого и т.д.)
- ручной запуск сценария по инициативе пользователя или веб-системы.
- исходящий звонок от пользователя
- поступление голосовой почты
- появление где-то в базе данных интересующего события (например появление новой записи в таблице абонентов)
- появление где-то на веб-ресурсе интересующего события (например температура на улице опустилась ниже нуля)
и т.д.
ПРЕДЛАГАЕМАЯ СХЕМА ИНТЕГРАЦИИ
рис.1
Сервер октелл взаимодействует с телефонами и с веб-сервером CRM.
Веб-сервер CRM взаимодействует ответно с сервером Октелл и с браузерами.
Первая проблема, предшествующая проведению обмену функционалом - сопоставление конкретных пользователей с конкретными телефонными устройствами. Почему это проблема: элементы управления устройством находятся в браузере, а влияют они на поведение конкретного телефона. Например, простейшая задача перевода звонка из браузера на врача Михайлова. Звонок должен поступить на телефон, находящийся в кабинете 103, за компьютером в котором сейчас сидит Михайлов (в браузере открыта веб-система и авторизован Михайлов)
Пользователи могут работать - стационарно каждый за своим компьютером. - перемещаться с одного рабочего место за другое. - работать посменно за одним рабочим местом. (Рабочее место = компьютер + телефон)
Необходимо в каждый момент времени знать, около какого телефона какой пользователь сидит.
Существуют два подхода к решению.
1. Жесткая привязка пользователя к телефонной учетной записи.
+: При взаимодействии октелла и веб-системы используются одни и те же идентификаторы (например логины пользователей), соответственно отсутствует проблема привязки как таковая.
-: Пользователь вынужден перемещаться с одного компьютера на другой вместе со своим телефоном, или переназначая учетную запись в телефонном аппарате.
2. Телефон привязывается к компьютеру, а в момент логина пользователя сопоставление производится через этот компьютер.
+: Кто бы ни залогинился с этого компьютера, приобретает управление телефоном, все звонки пользователю попадают на этот телефон.
-: Требует указания одного из постоянных идентификаторов компьютера в октелле, а также передачи его из веб-системы в момент логина для привязки. Это может быть айпи адрес, хостнейм или любой другой постоянный идентификатор.
Логин в октелл нужен для приведения состояния пользователя в готовность. Без этого звонки на пользователя не поступают, а обрабатываются как и в случае, когда он недоступен. Логофф - обратная операция. В ходе взаимодействия пользователю доступны команды управления своим состоянием. Он может отлучиться, выставить перерыв, переадресацию, занятость и т.д. Все это нужно для того, чтобы изменить направление маршрутизации звонков и режим работы коллцентра.
Ограничение: Октелл не позволяет пользователям логиниться с разных рабочих мест одновременно. Делается это для того, чтобы каждому пользователю соответствовало не более одного телефона.
рис.4
Все взаимодействие между октеллом и веб системой идет по общему каналу путем обмена сообщениями. В каждом из сообщений должен присутствовать идентификатор, позволяющий различать одинаковые, но направляемые от разных пользователей команды из веб-системы в октелл и наоборот соответственно. В качестве идентификатора в зависимости от реализуемой схемы привязки могут выступать пользователь (например его логин) или рабочее место (его постоянный идентификатор).
Октелл генерирует события. Октелл производит запросы к веб-системе. Веб-система отправляет ответы на получаемые запросы.
Веб-система производит запросы к октеллу. В том числе и команды. Октелл отправляет ответы на запросы.
Взаимодействие на транспортном уровне происходит по websocket ([rfc6455 v13], [v8], [v7], [75] или [76]). Но может также происходить по http или udp. Формат представления сообщений json или xml. Формат самих сообщений определяется непосредственно протоколом интеграции. Например вот так выглядит сообщение из октелла в веб-систему о факте входящего вызова в формате json:
рис.5
Для исполнения динамических методов в веб-срм по событиям в октелле существует запрос, в ответ на который веб-система перечисляет список действий, инициативу исполнения которых она готова отдать наружу в октелл. При описании метода упоминаются человеческое название, краткий код метода, описание для администратора, настраивающего октелл, список входных параметров с упоминанием типов (и возможных значений для перечислений), список выходных параметров, если метод возвращает данные и призван влиять на алгоритм сценария в октелле, признак того, нужно ли исполнять метод с привязкой к конкретному пользователю, или это обращение к серверу вообще, разрешено ли отменять исполнение (например для метода «открыть карточку такую-то» возможна отмена, означающая «закрыть карточку такую-то»), куда октеллу гнать запрос - через сокет (стандартный для взаимодействия канал) или по http на альтернативный url веб-сервера.
Соответственно, когда настраивается сценарий в октелле, администратором определяется одно или несколько из доступных действий, определяется момент исполнения, определяются входные параметры или способ их вычисления, а также режим ожидания или асинхронного выполнения.
В рантайм октеллом отправляется команда на исполнение в соответствии с определенными админом настройками. Если метод призван исполняться синхронно и возвращать некие значения, то сценарий приостанавливается, а после получения ответа сохраняет результаты в переменных сценария и продолжает выполнение.
WEB-SOCKET ПРОТОКОЛ
Между октеллом и веб-сервером CRM-системы существует один канал для обмена сообщениями. Все сообщения имеют идентификаторы для организации серий типа “запрос-ответ”. Сообщения могут адресоваться конкретному пользователю или относиться к общим. В первом случае указывается идентификатор/логин пользователя. Касается обоих направлений пересылки.
Установка соединения может производиться как октеллом, так и веб-сервером CRM-системы. В случае разрыва соединения сторона-инициатор вновь организует подключение. Рукопожатие на установление web-socket соединения предлагается также стороной-инициатором. Подробнее http://ru.wikipedia.org/wiki/WebSocket.
Каждое сообщение представляет из себя строку XML или JSON в кодировке UTF8. Сообщения в общем потоке данных в канале отделяются друг от друга байтами 0 и 255. 0 - в начале сообщений, 255 в конце. Форматы XML и JSON представления данных в текстовом виде гарантируют отсутствие байтов 0 и 255 в теле сообщений.
Сообщения длиной более 64К упаковываются в Base64 и разбиваются на несколько сообщений длиной до 64К. Формат multipart сообщения определен отдельно.
После установки соединения системы обмениваются данными друг о друге, об авторизованных пользователях, о динамических методах.
Структура каждого сообщения - это список из двух объектов, первый из которых - тип сообщения, второй - словарь параметров. В словаре обязательно присутствует идентификатор запроса (любое текстовое уникальное значение). В случае, когда сообщение производится от имени пользователя, присутствуют его идентификаторы (userid, userlogin).
Среди параметров находятся и индивидуальные параметры сообщения. Поддерживается произвольная вложенность объектов: строк, чисел, дат, словарей, списков.
СПИСОК МЕТОДОВ ИНТЕРФЕЙСА
Взаимодействие происходит путем обмена сообщениями по установившемуся между серверами транспортному каналу. Часть сообщений носят вид событий, часть - вид запросов (команд), часть - вид ответов на запросы. Каждое сообщение представляет собой байтовое представление текста с escape-последовательностями, описывающего объект в виде структуры JSON (возможен вариант XML), преобразованного через кодировку UTF8.
На первом уровне объекта - массив из двух значений: строковый кодовый идентификатор сообщения, именованный список параметров:
[ "messagecode", {"var1":"value1", "var2":"value2", ...} ]
В общем случае среди параметров могут присутствовать сложные объекты (массивы и словари):
"var1":["a", "b", "c"] или "var2":{"a":1, "b":2, "c":3}
В каждом сообщении присутствует параметр "qid", содержащий уникальный строковый идентификатор сообщения, обеспечивающий возможность построения из сообщений серий вида запрос-ответ. В случае, когда сообщение относится к конкретному пользователю (отправляется от его имени), в нем присутствуют параметры "userlogin" и "userid". По умолчанию синхронизация учетных записей пользователей происходит по их уникальным логинам (так проще).
Если транспортный канал единый (например websock), то сообщения разделяются последовательностью байтов 255 и 0, то есть 0 добавляется к сообщению в начало, 255 в конец. При необходимости длинные сообщения разбиваются на несколько более мелких, каждое из которых не превышает 64кБ.
ОБМЕН ДАННЫМИ ОБ АКТИВНЫХ ПОЛЬЗОВАТЕЛЯХ.
-> getactiveusers
Запрос из Октелла в CRM на возврат текущих активных (авторизованных) пользователей. Применяется при старте одной из систем в момент организации подключения.
[
"getactiveusers",
{
"qid": "9C44D978-E380-4405-B1B9-C4894BF188A7"
}
]
-> activeusers
Ответное сообщение из CRM в Октелл со списком активных авторизованных пользователей CRM.
[
"activeusers",
{
"qid": "9C44D978-E380-4405-B1B9-C4894BF188A7",
"users": [
{"userlogin": "ivanov", "userid": "20394857203948752345"},
{"userlogin": "petrov", "userid": "kasjdfhlaksjdfhlaks"},
{"userlogin": "sidorov", "userid": "987495873948573945"}
]
}
]
<- login
Сообщение из CRM в Октелл об авторизации пользователя. Запрос кросс-авторизации в Октелле.
[
"login",
{
"qid": "9D484E0E-BE08-47B5-ABBD-490936881056",
"userlogin": "ivanov",
"userid": "29834234234"
}
]
-> loginresult
Сообщение из Oktell в CRM о результате кросс-авторизации пользователя. Может быть отправлено в ответ на запрос кросс-авторизации в Октелле, а может быть отправлено самостоятельно по результатам обработки сообщения activeusers.
[
"loginresult",
{
"qid": "939AA33E-011F-4FEC-B60A-8BC1B4888B5A",
"userlogin": "ivanov",
"userid": "29834234234",
"result": 0,
"error": 50093,
"errormsg": "Пользователь уже зарегистрирован"
}
]
<- logout
Сообщение из CRM в Октелл о выходе (логауте) пользователя. Команда на кросс-логаут в Октелле.
[
"logout",
{
"qid": "9D484E0E-BE08-47B5-ABBD-490936881056",
"userlogin": "ivanov",
"userid": "29834234234"
}
]
-> logoutresult
Сообщение из Oktell в CRM о результате кросс-логаута пользователя. Может быть отправлено в ответ на запрос кросс-логаута в Октелле, а может быть отправлено самостоятельно в случае длительного отсутствия откликов от пользователя (не задействовано).
[
"logoutresult",
{
"qid": "4B25E210-2D67-4675-A5AE-46DC9CBC32F9",
"userlogin": "ivanov",
"userid": "29834234234",
"result": 1
}
]
-> pbxnumberstatechanged
Сообщение из Октелл о смене состояния внутреннего номера (или группы внутренних номеров)
[
"pbxnumberstatechanged",
{
"qid": "5B9508DF-565B-44E1-A122-6FEB70ADA0B9",
"numbers": [
{"num": "425", "numstateid": 3},
{"num": "427", "numstateid": 2},
{"num": "#82", "numstateid": 3}
]
}
]
ОБМЕН СОСТОЯНИЯМИ ПОЛЬЗОВАТЕЛЕЙ
-> userstatechanged
Сообщение из Октелла в CRM о смене состояния пользователя в Октелле. Отправляется на имя пользователя, чье состояние сменилось. Отправляется как результат запроса на смену состояния или независимо.
[
"userstatechanged",
{
"qid": "66F8D479-0234-47DF-B043-3A065FF464A7",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"userstateid": 2,
"onredirect": true,
"onlunch": false,
"oncallcenter": false
}
]
<- setuserstate
Запрос из CRM к Октеллу на смену состояния пользователя от его имени. При проведении изменений в ответ отправляется сообщение 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 - если что-то уникальное юзер ввел.
<- 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
Сообщение из Октелла в CRM о факте поступления голосовой почты на ящик пользователя.
[
"voicemailreceived",
{
"qid": "080C0DF2-442B-410E-9204-4ADB3399FCC0",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
ВСПЛЫВАЮЩИЕ УВЕДОМЛЕНИЯ
-> shownotifymessage
Сообщение(запрос) из Октелла об уведомлении пользователя по аналогии с всплывающими Октелловскими уведомлениями
[
"shownotifymessage",
{
"qid": "99CC8C57-1793-486A-AFB1-6E5CA3E6855E",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"sender": "0263C7BF-DEB3-406F-9CF9-6F56D828C755",
"text": "Петров",
"autohide": "8232C52D-ACFF-4DC9-B33A-C2A3CD2FC002",
"type": 262144,
"backcolor": "00FF0000",
"uniquekey": "E7899B61-55C3-4007-91EE-DDB348913AA8",
}
]
//* uniquekey - код сообщения. Может отсутствовать. Но если есть - допускается одновременное отображение только одного уведомления с таким кодом (либо закрывать автоматически предыдущее, либо не отображать это) //* backcolor - hex AARRGGBB //* type - тип сообщения из флагового списка кратных двойке кодов
СООБЩЕНИЯ ОТ АТС
-> phoneevent_ringstarted
Сообщение из Октелла в 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
Сообщение из Октелла в CRM о прекращении входящего вызова. Если пользователь не снял трубку, а вызов прекратился.
[
"phoneevent_ringstopped",
{
"qid": "BEB91146-BA27-4236-9CAC-EF562719E7E5",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718"
}
]
-> phoneevent_commstarted
Сообщение из Октелла в 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
Сообщение из Октелла в 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
Сообщение из Октелла в 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
Сообщение из Октелла в CRM о завершении соединения с IVR сценарием.
[
"phoneevent_ivrstopped",
{
"qid": "FC9DD78C-1A5F-4E06-9AB5-A9CEDE025F6A",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
-> phoneevent_acmcallstarted
Сообщение из Октелла в 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
Сообщение из Октелла в CRM об остановке автодозвона.
[
"phoneevent_acmcallstopped",
{
"qid": "410B1930-423E-4632-B3DE-54EC48C0E8A0",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"chainid": "D6C8232D-4E4A-48BB-954E-C719582A4718",
}
]
-> phoneevent_faxstarted
Сообщение из Октелла о начале факс-сеанса на оппозитном канале.
[
"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
Сообщение из Октелла о завершении факс-сеанса на оппозитном канале (следом возврат в коммутацию, если трубку не положили там).
[
"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"
}
]
-> phoneevent_faxreceived
Cообщение из Октелла о завершении приема факса со ссылками на файлы.
[
"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 к Октеллу на совершение звонка. В зависимости от текущего состояния линии - запускается автодозвон или нет, звонок на внешнюю линию, во внутрений номерной план, или автоопределение, сначала вызываться сам пользователь будет, а потом звонок абоненту, или сначала дозвон до абонента, а потом вызов пользователя.
[
"pbxautocallstart",
{
"qid": "0423AABC-F20D-4A94-BF2B-94EEEAB1FE40",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"number": "425",
"direction": "int",
"sequence": "abonent"
}
]
//* direction: int, ext, undefined, - //* sequence: abonent, user, -
-> pbxautocallstartresult
Ответ из Октелла в 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 к Октеллу на прекращение автодозвона
[
"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"
}
]
-> 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 к Октеллу на отклонение звонка.
[
"pbxdeclinecall",
{
"qid": "0AFB2B0C-A68F-448B-9B4B-AB42096D4E95",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
<- pbxabortcall
Запрос из CRM к Октеллу на обрыв текущего существующего сеанса связи. Не путать с DeclineCall. Прекращает коммутацию, если существует, прекращает автодозвон, если запущен.
[
"pbxabortcall",
{
"qid": "53F2EE86-46AF-4A37-8C60-2F27EADD10DE",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
<- pbxmakeflash
Запрос из CRM в Октелл на программную эмуляцию флэш.
[
"pbxmakeflash",
{
"qid": "DD836C5D-4F3E-4FD2-9B60-24E330B03FC6",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
ЗАПУСК СЛУЖЕБНОГО СЦЕНАРИЯ
<- startsvcscript
Запрос из CRM в Октелл на запуск служебного сценария.
[
"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
}
]
-> startsvcscriptresult
Ответ Октелла на запрос запуска служебного сценария.
[
"startsvcscriptresult",
{
"qid": "244E3867-470E-4A56-904D-D435D57CFBFE",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"scriptname": "Служебный сценарий получения почты",
"result": 0,
"returnvalue": "присвоенный в сценарии результат",
"error": 10
}
]
//* error: 10 - файл не найден, 11 - исключение, 12 - таймаут
ДИНАМИЧЕСКОЕ ВЗАИМОДЕЙСТВИЕ.
Информация от CRM о поддерживаемых методах, доступных Октеллу для инициации исполнения.
Общая идея: В момент создания сценариев в Октелле администратор имеет возможность настроить взаимодействие с CRM. Взаимодействие представляет собой вызов определенного метода с передачей в него входных параметров, и возможно ожидание его исполнения с возвратом [нескольких] выходных значений. При организации подключения Октелл-сервера к CRM-серверу, Октеллом производится запрос доступных в CRM методов. По каждому методу дополнительно описывается перечень входных и выходных параметров, их типы, способ исполнения метода (по организованному каналу или отдельным http-подключением), возможность его отмены (для длительных операций, например метод "открыть диалоговую форму" может быть отменен обратным методом "закрыть диалоговую форму", а может быть прерван с тем же результатом). В интеграционном интерфейсе отсутствует таким образом необходимость конкретизировать методы CRM. В момент настройки сценария администратор уже имеет о них информацию и настраивает конкретный сценарий под место.
Для примера: в момент поступления вызова Октелл определил номер абонента. Производит синхронное исполнение динамического метода CRM "вернуть ид компании по номеру телефона", дожидается ответа и принимает в сценарий значение. Далее исполняет динамический метод "Ответственный сотрудник", дожидается ответа и принимает в сценарий значение. Все это время абоненту проигрывается приветствие. Когда воспроизведение завершается, Октелл производит маршрутизацию в соответствии с вернувшимися значениями, а также в момент поступления звонка сотруднику исполняет динамический метод "открыть карточку компании" с передачей в качестве параметра идентификатора, вернувшегося на первом шаге. В случае, если сотрудник не снимает трубку, Октелл отменяет исполнение метода, тем самым отдавая команду на закрытие карточки компании. Ни об одном из перечисленных в примере методов CRM Октелл не знает, зато знает администратор, настраивающий систему на работу совместно с CRM.
Серия методов forms - частный случай методов, позволяющий выделить в отдельную категорию работу с карточками. Смысл и способ работы тот же самый. Тем не менее карточки могут быть представлены как методы.
-> getavailablemethods
<- availablemethods
-> executemethod
-> cancelmethod
<- methodresult
-> getavailableforms
<- availableforms
-> showform
-> closeform
<- 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
Сообщение-команда из Октелл в 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 в Октелл с возвратом выходных значений. Не отправляется, если исполнение прерывается командой CancelMethod.
[
"methodresult",
{
"qid": "A238110C-6B74-4980-AA23-41402B1E9B0E",
"methodkey": "createrecord",
"executionid": "25FC81FC-C5D0-40FB-B4E0-882352E12D86",
"outputparameters": {
"recordid": "ADCB1376-BA66-496C-A56E-AB7A7D5A9193"
}
}
]
-> cancelmethod
Сообщение-команда из Октелл на прекращение выполнения ранее запущенного динамического метода.
[
"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
Сообщение-команда из Октелл в 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 в Октелл при закрытии карточки пользователем с возвратом выходных значений. Не отправляется, если отображение прерывается командой 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
Сообщение-команда из Октелл на закрытие карточки у конкретного пользователя.
[
"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, ответы от Октелла, события из Октелла
<- confhandleevent
Подписка/отписка на указанную категорию событий сервера конференций.
[
"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": "Петров",
},
{...},
{...}
]
}
]
-> createnewconferenceresult
Ответ из Oktell в CRM с результатом исполнения команды на создание конференции.
[
"createnewconferenceresult",
{
"qid": "4F78270D-B35F-48A9-B88A-557B1AA97A1B",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"result": 0,
"error": 1,
"errormsg": "alreadyexists",
}
]
//* conference:accessmode - free|shared|closed
//* conference:recordrights - director|competitors|selected
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
//* список recordusers имеет смысл только когда conference:recordrights=selected.
<- 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
}
}
]
-> 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"
}
]
//* competitor:cantalk - может ли говорить
//* competitor:canlisten - может ли слышать
//* competitor:ghosthelp - в режиме прослушки:помощи для одного из подслушиваемых каналов - может ли слышать подключившегося супервизора
//* достаточно/следует указывать только один из набора определяющих участника идентификаторов {competitorid, userid|userlogin, lineid}
<- 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",
}
]
-> 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",
}
}
]
-> 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
}
}
]
-> 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
},
{...},
{...}
]
}
]
-> 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
}
]
//* competitors - список автоматически приглашаемых участников. Допускается/следует указывать только один параметр из набора {userid|userlogin, lineid, intnumber, extnumber}
События из Октелла по теме конференций.
-> 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
<- 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"
}
}
]
<- 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"
}
]
<- getcurrentlinestate
Запрос из CRM в Oktell состояния очереди указанного пользователя.
[
"getcurrentqueue",
{
"qid": "C13CE714-A502-4699-BE1A-9C4DB28BB70A",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
}
]
-> getcurrentlinestateresult
Ответ из 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": "ООО МДГХ"
},
{...},
{...}
]
},
{...},
{...}
]
}
]
<- 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
}
]
<- 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"
}
]
<- 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 на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.
[
"getpbxnumbers",
{
"qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
"mode": "simple"
}
]
<- getpbxnumbers
Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в простом виде.
[
"getpbxnumbers",
{
"qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"mode": "simple"
}
]
-> 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"
]
}
]
<- getpbxnumbers
Запрос из CRM в Oktell на возврат всех внутренних номеров системы. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде.
[
"getpbxnumbers",
{
"qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
"mode": "full"
}
]
<- getpbxnumbers
Запрос из CRM в Oktell на возврат всех внутренних номеров системы от имени указанного пользователя. В примере приведен запрос для формирования ответа с перечнем номеров в полном виде.
[
"getpbxnumbers",
{
"qid": "F19E223C-3EF3-4002-B1D6-B756DF8E978F",
"userlogin": "Иванов",
"userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
"mode": "full"
}
]
-> getpbxnumbersresult
Ответ из Oktell в CRM. Возвращает список всех внутренних номеров системы. В примере приведен ответ на запрос с перечнем номеров в полном виде со всеми описаниями и состояниями.
[
"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)


