Области подключения

Области подключения виджетов

Подключение виджетов по сути представляет собой подключение JS-скриптов на определенных страницах (интерфейсах) amoCRM. Сделать это можно не на всех, а только на определенном списке экранов.

Названия всех областей перечислены ниже:

Параметр Описание
lcard, cucard, ccard, comcard Карточки сделок, покупателей, контактов и компаний
llist, culist, clist, tlist Списки сделок, покупателей, контактов и задач
settings Cтраница установки и настройки виджетов
advanced_settings Страница расширенных настроек виджета
card_sdk SDK карточки
(требует lcard, ccard, comcard для работы в карточках соответствующих сущностей)
catalogs SDK списков
digital_pipeline Digital воронка
lead_sources Источники сделок
everywhere Виджет будет инициализироваться везде

Нашей системе необходимо сообщить информацию о том, в каких областях отображается виджет, и где он будет использовать правую колонку. Для этого в блоке "locations" файла manifest.json следует перечислить нужные области с указанием 1 или 0 после названия в качестве параметра использования правой колонки (по умолчанию он равен 1). Следует учесть, что область "everywhere" не принимает данный параметр (для этой области он всегда равен 0).

Например, данный виджет будет инициализироваться на странице настроек, в digital воронке, в карточках и списках контактов и сделок, но использовать правую колонку будет только в указанных карточках:

  1. "locations":[
  2.     "lcard-1",
  3.     "llist-0",
  4.     "ccard-1",
  5.     "clist-0",
  6.     "comcard-0",
  7.     "card_sdk",
  8.     "settings",
  9.     "digital_pipeline",
  10.     "lead_sources",
  11.     "catalogs",
  12.     "advanced_settings"
  13.   ]

Кроме того, указание true или false в блоке "init_once" файла manifest.json регулирует возможность каждый раз при переходе из области в область вызывать функции init() и bind_actions(), или вызвать их только один раз. К примеру, виджеты телефоний постоянно удерживают WebSocket соединение и его обрыва происходить не должно, поэтому init_once должно иметь значение true. Если же общего для всех страниц контекста нет, то лучше ставить в false.

Обратите внимание, что JS код виджета может быть "навешен" на определенные события. Есть определенная специфика по работе с событиями в карточках и в списках.

При подгрузке JS в любом интерфейсе сработает функция обратного вызова render(), а затем init() и bind_actions(). При инициализации виджета в областях ccard или lcard правая колонка виджетов с виджетом появляется сразу, а при работе со списком, правая колонка и виджет добавляются на страницу по событию selected — срабатывает соответствующая функция обратного вызова в script.js. Эта фукция вызывается при выборе пользователем нужных строк таблицы, используя checkbox, с последующим выбором виджета в контекстном меню. Контекстное меню появляется при использовании хотя бы одного checkbox.

В случае, если вы указываете в locations область видимости digital_pipeline, в виджете необходим логотип logo_dp.png с разрешением 174x109.

Так же, для работы виджета в digital воронке, необходима php-часть виджета с endpoint'ом digital_pipeline.

Если ваш виджет имеет область видимости lead_sources, то вы можете проверить, к какой воронке аккаунта он привязан с помощью HTTP-запроса или в script.js вашего виджета:

  1. http://myaccount.amocrm.ru/private/api/v2/json/widgets/list?filter[widget_code]=my_widget_code

Для работы с SDK списков необходимо указать специальную область видимости "catalogs", id списка, с которым будет рабоать виджет, а также реализовать специальный callback loadCatalogElement. Подробнее о SDK каталогов.

Для создания собственной страницы в разделе "Настройки" необходимо указать область видимости advanced_settings, а также добавить в maniifest.json блок advanced и реализовать специальный callback advancedSettings. Подробнее о расширенной странице настройки виджета.