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

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

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

lcard, cucard, ccard, comcard
Карточки сделок, покупателей, контактов и компаний

llist, culist, clist, tlist
Списки сделок, покупателей, контактов и задач

settings
Cтраница установки и настройки виджетов

card_sdk
SDK карточки (требует lcard, ccard, comcard для работы в карточках соответствующих сущностей)

digital_pipeline
Digital воронка

lead_sources
Источники сделок (пока только для чатов)

everywhere
Виджет будет инициализироваться везде

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

Например, данный виджет будет инициализироваться на странице настроек, в 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.   ]

Кроме того, указание 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.