Переменные окружения

Для работы с аккаунтом на клиенте доступен глобальный объект AMOCRM, через который можно получить некоторые данные в зависимости от интерфейса, в котором находится пользователь.

Список доступных методов:

  • AMOCRM.getBaseEntity()
    вернет строку с указанием сущности, в которой мы сейчас находимся (например, leads для сделок или customers для покупателей и тд)
  • AMOCRM.isCard()
    вернет булевое значение (true/false), находимся ли мы в данный момент в карточке
  • AMOCRM.constant(key, [value])
    может хратить данные в оперативной памяти до обновления страницы, если вызвать без value, то проверит есть ли такой ключ, если есть, то вернет значение, если нет, то false

Также в этом глобальном объекте есть переменные, через которые можно обратиться к данным на странице.

Основная часть системы реализована на фреймворке Backbone.js, поэтому для работы с переменными окружения можно почитать документацию данного фреймворка.

В любом интерфейсе системы (кроме карточек) есть объект AMOCRM.data.current_view, который хранит корневой DOM-элемент текущего интерфейса, в котором находится пользователь (AMOCRM.data.current_view.$el).

Если пользователь находится в любом интерфейсе списков (сделки, контакты/компании, покупатели, задачи) в объекте AMOCRM есть свойство AMOCRM.data.current_list это коллекция текущих элементов списка с данными из выведенных колонок. Среди этих данных всегда есть id и name (название сущности), также свойство checked (отвечает за то выделен элемент в списке или нет).

Если пользователь находится в любой карточке, то можно обращаться к свойству AMOCRM.data.current_card, через него можно получить данные по текущей карточке, в которой находится пользователь. При доступе к этому свойству нужно обязательно проверять его наличие, так как если пользователь находится не в карточке, то в свойсте будет false и при прямом доступе к какому-то дочернему значению вы получите ошибку.

Через AMOCRM.data.current_card можно получить следующие данные:

  • AMOCRM.data.current_card.id
    id текущей карточки, для новой карточки там будет 0
  • AMOCRM.data.current_card.model
    backbone-модель для доступа к заполненным данным в карточке, хранит актуальные данные на момент ввода, то есть если пользователь изменил значение поля, но еще не сохранил его, то там будет значение, которое ввел пользователь

При выкатке обновлений в amoCRM есть механизм обновления страницы, если у вашего виджета есть потребность временно остановить данное поведение, например, для телефонии такое нужно, когда пользователь находится в звонке, чтобы не прервать таким обновлением звонок пользователю, то можно воспользоваться следующим методом:

AMOCRM.sdk.setCallingStatus(true/false);

Если виджету необходимо проверить находится ли пользователь аккаунта онлайн, то можно воспользоваться методом showUserStatus:

AMOCRM.sdk.showUserStatus();

В ответ метод возвращает объект вида:

{
  "281868": {
    "id": "281868",
    "online": true
  },
  "3732339": {
    "id": "3732339",
    "online": false
  },
  "5789550": {
    "id": "5789550",
    "online": false
  }
}