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

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

Материал из Платформа Эра. Документации
Нет описания правки
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
[[Файл:Настройка канала интеграции.png|мини|Настройка канала интеграции]]
Обзор API платформы можно найти на [https://vendor.era-platform.ru/docs/era/latest/api/index.html ресурсе vendor][[Файл:Настройка канала интеграции.png|мини|Настройка канала интеграции]]


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

Текущая версия от 10:51, 6 января 2025

Обзор API платформы можно найти на ресурсе vendor

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

Как сделать первый 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":"привет"
            }
         }
}