Открыть меню
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

REST API: различия между версиями

Материал из Платформа Эра. Документации
Новая страница: «== Как сделать первый API запрос == Создайте токен авторизации в Приложении Настройка — Каналы интеграции (/service/integration_points). Укажите тип Subscriber, назначьте пользователя. Используйте метод авторизации Bearer для выполнения запроса и поле локальный токен. Выпо...»
 
Нет описания правки
Строка 1: Строка 1:
[[Файл:Настройка канала интеграции.png|мини|Настройка канала интеграции]]
== Как сделать первый API запрос ==
== Как сделать первый API запрос ==
Создайте токен авторизации в Приложении Настройка — Каналы интеграции (/service/integration_points).
Создайте токен авторизации в Приложении Настройка — Каналы интеграции (/service/integration_points).
Строка 5: Строка 7:


Используйте метод авторизации Bearer для выполнения запроса и поле локальный токен.
Используйте метод авторизации Bearer для выполнения запроса и поле локальный токен.
 
[[Файл:Postman. Авторизация Bearer.png|мини|Настройка авторизации в Postman]]
Выполните POST запрос. Обратите внимание на кодировку пробела %20
Выполните POST запрос. Обратите внимание на кодировку пробела %20


Строка 11: Строка 13:


== Работа с колл-листом через REST API ==
== Работа с колл-листом через REST API ==
[[Файл:Пример запроса Postman.png|мини|Пример запроса Postman]]
Разберем примеры управления колл-листом на примерах. Создайте канал интеграции для REST API и укажите пользователя.
Разберем примеры управления колл-листом на примерах. Создайте канал интеграции для REST API и укажите пользователя.


Строка 26: Строка 29:
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents</nowiki>
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents</nowiki>


{   "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",   "ext": null,   "fio": "Никита Леонидович Небывалый",   "id": "e6d03318-ad64-4ba8-b8ee-dac91edee5ad",   "increment": null,   "notes": "Задолженность: 466681 руб.",   "personalAgent_id": null,   "phoneNumbers": [     {       "kind": "mobile",       "phoneNumber": "89902355924"      }    ],   "result": null,   "scheduledNumber": null,   "scheduledTime": null,   "scheduledTimeMax": null,   "state": null,   "timeZone": null,   "tryCount": null }
  {
    "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",
    "ext": null,
    "fio": "Никита Леонидович Небывалый",
    "id": "e6d03318-ad64-4ba8-b8ee-dac91edee5ad",
    "increment": null,
    "notes": "Задолженность: 466681 руб.",
    "personalAgent_id": null,
    "phoneNumbers": [
      {
        "kind": "mobile",
        "phoneNumber": "89902355924"
      }
     ],
    "result": null,
    "scheduledNumber": null,
    "scheduledTime": null,
    "scheduledTimeMax": null,
    "state": null,
    "timeZone": null,
    "tryCount": null
  }
''Обратите внимание, что даже указано поле id, платформа изменит значение на собственное.''  
''Обратите внимание, что даже указано поле id, платформа изменит значение на собственное.''  


Строка 32: Строка 56:
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633</nowiki>  
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633</nowiki>  


  {   "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",   "fio": "Никита Леонидович Бывалый",   "id": "e480b13d-0191-d748-ae42-960002bdc633",   "increment": 266,   "notes": "Задолженность: 466681 руб.",   "phoneNumbers": [       {           "kind": "mobile",           "phoneNumber": "89902355924"       }   ] }
  {
    "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",
    "fio": "Никита Леонидович Бывалый",
    "id": "e480b13d-0191-d748-ae42-960002bdc633",
    "increment": 266,
    "notes": "Задолженность: 466681 руб.",
    "phoneNumbers": [
        {
            "kind": "mobile",
            "phoneNumber": "89902355924"
        }
    ]
}
''Обратите внимание, что в этом запросе необходимо передать все поля. Поля, которые не будут указаны, будут иметь пустое значение.''  
''Обратите внимание, что в этом запросе необходимо передать все поля. Поля, которые не будут указаны, будут иметь пустое значение.''  


Строка 43: Строка 79:
Для удаления записи с id = e480b13d-0191-d748-ae42-960002bdc633 используйте DELETE запрос:
Для удаления записи с id = e480b13d-0191-d748-ae42-960002bdc633 используйте DELETE запрос:
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633</nowiki>
  <nowiki>https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633</nowiki>
Полная документация для управления при помощи REST API.
[https://vendor.era-platform.ru/docs/era/latest/api/rest/rest_api_approach.html Полная документация для управления при помощи REST API.]


== Управление исходящей кампанией через REST API ==
== Управление исходящей кампанией через REST API ==
Строка 52: Строка 88:
Для остановки кампании
Для остановки кампании
  {  "method":"Campaign_stop",  "request": {    "id": "12d425a3-a69e-4b83-9527-2d23af2cecb6"  } }
  {  "method":"Campaign_stop",  "request": {    "id": "12d425a3-a69e-4b83-9527-2d23af2cecb6"  } }
Пример:
Пример на скриншоте.
[[Файл:Пример управления исходящей кампанией.png|мини|Пример управления исходящей кампанией]]


Получить ID кампании вы можете через REST API запрос списка кампаний (/rest/v1/model/callcenter/outbound/Campaigns) или вывести колонку ИД в интерфейсе приложения «Исходящие кампании».
Получить ID кампании вы можете через REST API запрос списка кампаний (/rest/v1/model/callcenter/outbound/Campaigns) или вывести колонку ИД в интерфейсе приложения «Исходящие кампании».
Строка 58: Строка 95:
== Как повторить любой клиентский функционал при помощи API ==
== Как повторить любой клиентский функционал при помощи API ==
Повторим функцию отправки внутреннего сообщения в канал.
Повторим функцию отправки внутреннего сообщения в канал.
 
[[Файл:Сообщения WebSocket.png|мини|Сообщения WebSocket]]
Откройте приложения «Оператор», вкладку «Внутренние чаты». Нажмите F12 и обновите страницу. На вкладке Network найдите сервис ws с типом websocket. Очистите сообщения для удобства. Отправьте сообщение в канал. Найдите событие send, которое отвечает за отправку сообщения.
Откройте приложения «Оператор», вкладку «Внутренние чаты». Нажмите F12 и обновите страницу. На вкладке Network найдите сервис ws с типом websocket. Очистите сообщения для удобства. Отправьте сообщение в канал. Найдите событие send, которое отвечает за отправку сообщения.
  [   "rest",   {     "operation":"replace",     "classpath":"/rest/v1/model/platform/services/Invocations",     "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",     "content":{         "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",         "timeToLive":600,         "from":"315e1a82-9076-4c8a-94ff-d857a7798aae",         "to":"im.HolderService",         "method":"InnerDialog_sendText",         "request":{           "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",           "user_id":"0ce07813-018f-7be9-2969-960002bdc633",           "parameters":{               "text":"привет"           }         }     },     "qid":"be8e8315-5b51-49af-bd6b-3626cdac7cc3"   } ]
  [
    "rest",
    {
      "operation":"replace",
      "classpath":"/rest/v1/model/platform/services/Invocations",
      "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",
      "content":{
          "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",
          "timeToLive":600,
          "from":"315e1a82-9076-4c8a-94ff-d857a7798aae",
          "to":"im.HolderService",
          "method":"InnerDialog_sendText",
          "request":{
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
                "text":"привет"
            }
          }
      },
      "qid":"be8e8315-5b51-49af-bd6b-3626cdac7cc3"
    }
]
Сообщение содержит все необходимые поля для повтора функционала как изнутри платформы, так и при помощи REST API. Существенные параметры:
Сообщение содержит все необходимые поля для повтора функционала как изнутри платформы, так и при помощи REST API. Существенные параметры:


"to":"im.HolderService" - микросервис платформы, ответственный за операцию,
* "to":"im.HolderService" - микросервис платформы, ответственный за операцию,
 
* "method":"InnerDialog_sendText" - метод микросервиса,
"method":"InnerDialog_sendText" - метод микросервиса,
* "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a" - id чата или канала,
 
* "user_id":"0ce07813-018f-7be9-2969-960002bdc633" - id пользователя платформы,
"id":"428a8cd0-94a9-48be-806e-ac2c7240f76a" - id чата или канала,
* "parameters":{"text":"привет"} - передаваемый контент.
 
"user_id":"0ce07813-018f-7be9-2969-960002bdc633" - id пользователя платформы,
 
"parameters":{"text":"привет"} - передаваемый контент.


1. Способ. Вызов микросервиса из сценария
1. Способ. Вызов микросервиса из сценария
Строка 82: Строка 137:


Способ задания параметров - произвольный и передайте в качестве параметра текст:
Способ задания параметров - произвольный и передайте в качестве параметра текст:
  {           "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",           "user_id":"0ce07813-018f-7be9-2969-960002bdc633",           "parameters":{               "text":"привет"} }
  {
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
                "text":"привет"}
}
2. Способ. Вызов при помощи REST API
2. Способ. Вызов при помощи REST API


Строка 90: Строка 150:


Передайте в качестве параметра JSON
Передайте в качестве параметра JSON
  {         "method":"InnerDialog_sendText",         "request":{           "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",           "user_id":"0ce07813-018f-7be9-2969-960002bdc633",           "parameters":{               "text":"привет"           }         } }
  {
          "method":"InnerDialog_sendText",
          "request":{
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
                "text":"привет"
            }
          }
}
[[Категория:Продуктовый слой]]
[[Категория:Продуктовый слой]]

Версия от 10:25, 11 декабря 2024

Настройка канала интеграции

Как сделать первый API запрос

Создайте токен авторизации в Приложении Настройка — Каналы интеграции (/service/integration_points).

Укажите тип Subscriber, назначьте пользователя.

Используйте метод авторизации Bearer для выполнения запроса и поле локальный токен.

Настройка авторизации в Postman

Выполните POST запрос. Обратите внимание на кодировку пробела %20

Подробная документация REST API

Работа с колл-листом через REST API

Пример запроса Postman

Разберем примеры управления колл-листом на примерах. Создайте канал интеграции для REST API и укажите пользователя.

Получите всё содержимое (в формате JSON) класса GET запросом:

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents

Получите конкретную запись по id, например e480b13d-0191-d748-ae42-960002bdc633 при помощи GET-запроса:

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633

Получите список записей класса при помощи фильтра. В примере вы получите список контрагентов, ФИО которых содержит подстроку «Бывал» (регистр важен):

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents?filter=["like",["property","fio"],["const","*Бывал*"]]

Получите список записей из колл-листа по id исходящей кампании

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents?filter=["==",["property","campaign_id"],["const","12d425a3-a69e-4b83-9527-2d23af2cecb6"]]

Для построения более сложных фильтров, сортировок и группировок используйте приложение Builder — Sandbox REST API.

Для добавления записи используйте POST запрос и передайте необходимую JSON структуру записи:

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents
 {
    "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",
    "ext": null,
    "fio": "Никита Леонидович Небывалый",
    "id": "e6d03318-ad64-4ba8-b8ee-dac91edee5ad",
    "increment": null,
    "notes": "Задолженность: 466681 руб.",
    "personalAgent_id": null,
    "phoneNumbers": [
      {
        "kind": "mobile",
        "phoneNumber": "89902355924"
      }
    ],
    "result": null,
    "scheduledNumber": null,
    "scheduledTime": null,
    "scheduledTimeMax": null,
    "state": null,
    "timeZone": null,
    "tryCount": null
  }

Обратите внимание, что даже указано поле id, платформа изменит значение на собственное.

Для полного изменения записи используйте запрос PUT

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633 
{
    "campaign_id": "c1692593-23e2-410a-bf8f-f3a2c27cd863",
    "fio": "Никита Леонидович Бывалый",
    "id": "e480b13d-0191-d748-ae42-960002bdc633",
    "increment": 266,
    "notes": "Задолженность: 466681 руб.",
    "phoneNumbers": [
        {
            "kind": "mobile",
            "phoneNumber": "89902355924"
        }
    ]
}

Обратите внимание, что в этом запросе необходимо передать все поля. Поля, которые не будут указаны, будут иметь пустое значение.

Для частично изменения записи используйте запрос PATCH.

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633
{    "fio": "Никита Леонидович Небывалый", }

Обратите внимание, что достаточно передать поля, необходимые к замене. Id записи изменить невозможно.

Для удаления записи с id = e480b13d-0191-d748-ae42-960002bdc633 используйте DELETE запрос:

https://{{ERAURL}}/rest/v1/model/callcenter/outbound/SimpleContragents/e480b13d-0191-d748-ae42-960002bdc633

Полная документация для управления при помощи REST API.

Управление исходящей кампанией через REST API

Для запуска и остановки исходящей кампании воспользуйтесь POST запросом

[https://Шаблон:ERAURL/rest/v1/domain/nservices/callcenter.HolderService https://{ERAURL}/rest/v1/domain/nservices/callcenter.HolderService]

Для старта кампании

{  "method":"Campaign_start",  "request": {    "id": "12d425a3-a69e-4b83-9527-2d23af2cecb6"  } }

Для остановки кампании

{  "method":"Campaign_stop",  "request": {    "id": "12d425a3-a69e-4b83-9527-2d23af2cecb6"  } }

Пример на скриншоте.

Пример управления исходящей кампанией

Получить ID кампании вы можете через REST API запрос списка кампаний (/rest/v1/model/callcenter/outbound/Campaigns) или вывести колонку ИД в интерфейсе приложения «Исходящие кампании».

Как повторить любой клиентский функционал при помощи API

Повторим функцию отправки внутреннего сообщения в канал.

Сообщения WebSocket

Откройте приложения «Оператор», вкладку «Внутренние чаты». Нажмите F12 и обновите страницу. На вкладке Network найдите сервис ws с типом websocket. Очистите сообщения для удобства. Отправьте сообщение в канал. Найдите событие send, которое отвечает за отправку сообщения.

[
   "rest",
   {
      "operation":"replace",
      "classpath":"/rest/v1/model/platform/services/Invocations",
      "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",
      "content":{
         "id":"92b4f40e-ddf8-4b4d-aae8-c9d6fb9765c0",
         "timeToLive":600,
         "from":"315e1a82-9076-4c8a-94ff-d857a7798aae",
         "to":"im.HolderService",
         "method":"InnerDialog_sendText",
         "request":{
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
               "text":"привет"
            }
         }
      },
      "qid":"be8e8315-5b51-49af-bd6b-3626cdac7cc3"
   }
]

Сообщение содержит все необходимые поля для повтора функционала как изнутри платформы, так и при помощи REST API. Существенные параметры:

  • "to":"im.HolderService" - микросервис платформы, ответственный за операцию,
  • "method":"InnerDialog_sendText" - метод микросервиса,
  • "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a" - id чата или канала,
  • "user_id":"0ce07813-018f-7be9-2969-960002bdc633" - id пользователя платформы,
  • "parameters":{"text":"привет"} - передаваемый контент.

1. Способ. Вызов микросервиса из сценария

Воспользуйтесь компонентом SVC или IVR сценария “Вызов микросервиса продуктового слоя”:

Микросервис - im.HolderService,

Метод - InnerDialog_sendText,

Способ задания параметров - произвольный и передайте в качестве параметра текст:

{
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
               "text":"привет"}
}

2. Способ. Вызов при помощи REST API

Выполните POST запрос

[https://Шаблон:ERAURL/rest/v1/domain/nservices/im.HolderService https://{ERAURL}/rest/v1/domain/nservices/im.HolderService]

Передайте в качестве параметра JSON

{
         "method":"InnerDialog_sendText",
         "request":{
            "id":"428a8cd0-94a9-48be-806e-ac2c7240f76a",
            "user_id":"0ce07813-018f-7be9-2969-960002bdc633",
            "parameters":{
               "text":"привет"
            }
         }
}