Встраивание приложений
Разработчику приложений для Маркетплейса Битрикс24 доступен простой механизм встраивания приложения в интерфейс Битрикс24. В разделе приведены справочные данные по методам и местам встраивания. Детальное описание примеров работы представлено в курсе Приложения Битрикс24.
Встраиваемые приложения, к которым пользователь доступа не имеет, не будут отображаться в списках, пунктах меню или в других местах, где могут быть видны приложения. Исключение - встройка через тип пользовательского поля. Но в фрейм не будет передаваться авторизация, и разработчик приложения должен это учитывать.
Доступны следующие места для встраивания:
- scope CRM
- scope intranet
- scope telephony
- scope landing
- scope worgroups
- scope task
- scope calendar
- scope contact_center
- scope im
- произвольное место
- Стандартный скоуп для встроек placement
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 | Кнопка в слайдере с роботами. |
Профиль пользователя | |
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#/, где Встройка может принимать любое количество параметров в 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, например: |
PAGE_BACKGROUND_WORKER |
На каждом портале каждому приложению позволяется зарегистрировать только одну встройку методом placement.bind.
Пример регистрации: 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', ] ] ] ); Данное место встройки поддерживает:
|
стандартный scope для встроек placement | |
Код | Меню |
LEFT_MENU | Левое меню |
Дополнительно
Сообщение не промодерировано, возможны ошибки и неточности.
|
А почему нет CRM_QUOTE_DETAIL_TAB?
|
Сообщение не промодерировано, возможны ошибки и неточности.
|
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 🙆🙆 |
Сообщение не промодерировано, возможны ошибки и неточности.
|
В \Bitrix\Crm\Integration\Rest\AppPlacement определено еще
|
Сообщение не промодерировано, возможны ошибки и неточности.
|
Добрый день, а есть более подробная документация по встраиванию приложений в Контакт центр?
|
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.