Документация для разработчиков
Темная тема

Встраивание приложений

Разработчику приложений для Маркетплейса Битрикс24 доступен простой механизм встраивания приложения в интерфейс Битрикс24. В разделе приведены справочные данные по методам и местам встраивания. Детальное описание примеров работы представлено в курсе Приложения Битрикс24.

Встраиваемые приложения, к которым пользователь доступа не имеет, не будут отображаться в списках, пунктах меню или в других местах, где могут быть видны приложения. Исключение - встройка через тип пользовательского поля. Но в фрейм не будет передаваться авторизация, и разработчик приложения должен это учитывать.

Доступны следующие места для встраивания:

scope CRM
Код Лиды
CRM_LEAD_LIST_MENU Контекстное меню лидов
CRM_LEAD_DETAIL_TAB Пункт в верхнем меню в карточке лида
CRM_LEAD_DETAIL_ACTIVITY Пункт в меню таймлайна лида
CRM_LEAD_DETAIL_TOOLBAR Пункт в списке приложений карточки лида
Код Сделки
CRM_DEAL_LIST_MENU Контекстное меню сделок
CRM_DEAL_DETAIL_TAB Пункт в верхнем меню в карточке сделки
CRM_DEAL_DETAIL_ACTIVITY Пункт в меню таймлайна сделки
CRM_DEAL_DETAIL_TOOLBAR Пункт в списке приложений карточки сделки.
Код Контакты
CRM_CONTACT_LIST_MENU Контекстное меню контактов
CRM_CONTACT_DETAIL_TAB Пункт в верхнем меню в карточке контакта
CRM_CONTACT_DETAIL_ACTIVITY Пункт в меню таймлайна контакта
CRM_CONTACT_DETAIL_TOOLBAR Пункт в списке приложений карточки контакта.
Код Компании
CRM_COMPANY_LIST_MENU Контекстное меню компаний
CRM_COMPANY_DETAIL_TAB Пункт в верхнем меню в карточке компании
CRM_COMPANY_DETAIL_ACTIVITY Пункт в меню таймлайна компании
CRM_COMPANY_DETAIL_TOOLBAR Пункт в списке приложений карточки компании.
Код Счета
CRM_INVOICE_LIST_MENU Контекстное меню счетов
Код Предложения
CRM_QUOTE_LIST_MENU Контекстное меню предложений
Код Дела
CRM_ACTIVITY_LIST_MENU Контекстное меню дел
Код CRM-аналитика
CRM_ANALYTICS_MENU Меню CRM-аналитики
Код Смарт-процессы
Коды аналогичны кодам для любых сущностей CRM. Необходимо только добавить DYNAMIC. Например:
CRM_DYNAMIC_185_LIST_MENU
CRM_DYNAMIC_185_DETAIL_TAB
CRM_DYNAMIC_185_DETAIL_ACTIVITY
185 - ID конкретной сущности.
scope intranet
Код Встраивание Базы знаний
CRM
CRM_FUNNELS_TOOLBAR Кнопка в тулбаре Тунелей продаж
CRM_ANALYTICS_TOOLBAR Кнопка в тулбаре CRM-аналитики
CRM_*_LIST_TOOLBAR Кнопка около Роботов. Допустимые объекты: DEAL, LEAD, CONTACT, COMPANY, INVOICE, QUOTE.
CRM_*_DETAIL_TOOLBAR Кнопка в карточке сверху. Допустимые объекты: DEAL, LEAD, CONTACT, COMPANY, INVOICE, QUOTE
CRM_*_ACTIVITY_TIMELINE_MENU Кнопка в контекстном меню объекта (Только для объектов DEAL, LEAD).
CRM_*_DOCUMENTGENERATOR_BUTTON Кнопка в документах. Допустимые объекты: DEAL, LEAD, CONTACT, COMPANY, INVOICE, QUOTE
CRM_*_ROBOT_DESIGNER_TOOLBAR Кнопка в слайдере с роботами (Только для объектов DEAL, LEAD).
Задачи
TASK_USER_LIST_TOOLBAR Кнопка около Роботов.
TASK_GROUP_LIST_TOOLBAR Кнопка около Роботов.
TASK_ROBOT_DESIGNER_TOOLBAR Кнопка в слайдере с роботами.
Рабочие группы
SONET_GROUP_ROBOT_DESIGNER_TOOLBAR Кнопка у роботов в группе.
SONET_GROUP_TOOLBAR Кнопка на вкладке Основное в группе.
Профиль пользователя
USER_PROFILE_MENU Кнопка в главном меню портала. Также доступно в скоупах user, user_brief и user_basic.
USER_PROFILE_TOOLBAR Кнопка в профиле . Также доступно в скоупах user, user_brief и user_basic.
scope telephony
Код Карточка звонка
CALL_CARD Карточка звонка
Код Статистика звонков
TELEPHONY_ANALYTICS_MENU Меню статистики звонков
scope landing
Код Настройки
LANDING_SETTINGS Меню настроек (Страницы / Сайта)
Код Редактирование
LANDING_BLOCK Пункт редактирования любого блока.
scope worgroups
Код Настройки
SONET_GROUP_DETAIL_TAB Закладка рабочей группы.
scope task
Код Настройки
TASK_LIST_CONTEXT_MENU Контекстное меню списка задач.
TASK_VIEW_TAB Вкладка в форме просмотра задачи
TASK_VIEW_SIDEBAR Боковая панель формы просмотра задачи
TASK_VIEW_TOP_PANEL Пункт в верхнем меню формы просмотра задачи
scope calendar
Код Настройки
CALENDAR_GRIDVIEW Список видов отображения календаря
scope contact_center
Код Настройки
CONTACT_CENTER "Квадратик" в списке Контакт центра.
scope im
Код Приложения в Новом чате
IM_NAVIGATION Приложение для левого меню навигации (по сути, это приложение внутри окружения чата без встраивания непосредственно в чат).
IM_TEXTAREA Приложение для панели над полем ввода (генерация контента в момент написания сообщения).
IM_SIDEBAR Приложение для сайдбара (можно создавать приложения, добавляющие дополнительные сценарии для чата – например, отдельный диск для чата или базу знаний).
IM_CONTEXT_MENU Приложение для открытия контекстного меню сообщения внутри чата, встраивание в пункт "Создать контент на основании" (аналогом является "Создать задачу” или "Создать встречу" на основании сообщения).
IM_SMILES_SELECTOR Приложение для расширения возможностей смайлов и giphy (тут могут быть свои источники картинок или смайлов).
Произвольное место
Код Настройки
REST_APP_URI На каждом портале каждому приложению позволяется зарегистрировать только одну встройку методом placement.bind.

Эта встройка не имеет в интерфейсе кнопки, которая позволяет пользователю открыть её самостоятельно. Приложение может отправить ссылку на свою встройку. Для использования данной встройки ссылка должна быть в формате /marketplace/view/#APP_CODE#/, где #APP_CODE# - код вашего приложения.

Встройка может принимать любое количество параметров в get ключе params, например: /marketplace/view/#APP_CODE#/?params[test]=y. В этом случае в PLACEMENT_OPTIONS будет равен:

[
'test' = 'y'
]
Пример: как с помощью BBCode вставить данную ссылку в чат:
[url=/marketplace/view/'.$myApp['CODE'].'/?params[test]=y]uri[/url]

<?
$placement = 'REST_APP_URI';
$url = 'https://example.com/placement.php';
CRest::call(
	'placement.bind',
	[
		'PLACEMENT' => $placement,
		'HANDLER' => $url
	]
);
?>

Пример выше регистрирует на вашем портале встройку. Для данного PLACEMENT можно на портале зарегистрировать её только один раз, после этого она становится доступна для вызова. В вашем приложении вы можете разместить вашу встройку:

<a href="/marketplace/view/<?=$myApp['CODE']?>/">uri</a>

И разместить её в посте живой ленты:

<?
	CRest::call('log.blogpost.add',
		[
			'POST_TITLE' => 'Post Title',
			'POST_MESSAGE' => 'use this [url=/marketplace/view/'.$myApp['CODE'].'/?params[test]=y]uri[/url]',
			'DEST' => [ 'UA' ]
		]);
?>

И отправить её с помощью бота в чат пользователю методом:

<?
CRest::call(
	'imbot.message.add',
	[
		'DIALOG_ID' => 1,
		'MESSAGE' => 'use this [url=/marketplace/view/'.$myApp['CODE'].'/?params[test]=y]uri[/url]',

	]
);
?>

Ссылку можно вставить в любое текстовое поле, которое поддерживает BBCode или внутри ваших других встроек как обычную ссылку. А с помощью GET параметра params вы можете изменять отображаемые данные во встройке и использовать эту возможность в абсолютно разных сценариях, передавая любое количество параметров в GET ключе params, например: ?params[test]=yy.

PAGE_BACKGROUND_WORKER На каждом портале каждому приложению позволяется зарегистрировать только одну встройку методом placement.bind.
  • errorHandlerUrl - обязательное поле с URL обработчика ошибки. Если встройка долго грузится (дольше 3-5 сек), на этот URL приходит событие с текстом и кодом ошибки, а сама встройка удаляется.

Пример регистрации:

CRest::call(
	'placement.bind',
	[
		'PLACEMENT' => 'PAGE_BACKGROUND_WORKER',
		'HANDLER' => 'http://portal.vlads.bx/vlads/placement/?ty=1',
		'OPTIONS' => [
			'errorHandlerUrl' => 'http://portal.vlads.bx/vlads/logg.php?ty=1',
		],
		'LANG_ALL' => [
			'ru' => [
				'TITLE' => 'test',
			]
		]
	]
);

Данное место встройки поддерживает:

  • специальные JS-методы и события для встройки внешнего WebRTC-клиента, подробности читайте здесь,
  • регистрацию для отдельных пользователей.

стандартный scope для встроек placement
Код Меню
LEFT_MENU Левое меню

Дополнительно



Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Антон Бармашов
Сообщение не промодерировано, возможны ошибки и неточности.
А почему нет CRM_QUOTE_DETAIL_TAB?
0
koba gogoberidze
Сообщение не промодерировано, возможны ошибки и неточности.
Hello everyone 🙌

I have just started working on and studing application embeding, saw some examples from official documentation and have lot questions, cant answer myself.

How to authenticate portal/client, how to identify he is authorized to get some data.
Anyone can send post request on my endpoint, it doesnt mean i should always answer them, i need some kind of middleware to controll it.

About getting and storing token. As i understood when application sends request, it also gives token. Is the token always new? Do i need to replace on every request in database and is mysql right choice for it? Dont want to have performace issues later, if i get lot clients.

My first goal is to build some integrations that will be used by multiple clients, but without publishing in marketplace.


Thanks in advance 🙆🙆
1
Игорь Шевчик
Сообщение не промодерировано, возможны ошибки и неточности.
В \Bitrix\Crm\Integration\Rest\AppPlacement определено еще
  • CRM_REQUISITE_EDIT_FORM
  • 1C_PAGE
  • CRM_DETAIL_SEAR
  • CHCRM_REQUISITE_AUTOCOMPLETE
4
Ярославна Ходырева
Сообщение не промодерировано, возможны ошибки и неточности.
Добрый день, а есть более подробная документация по встраиванию приложений в Контакт центр?
© «Битрикс», 2001-2024, «1С-Битрикс», 2024