Files
site_aegisone/other/1c_webhook.md
T
angel 72b6879f4b v1.7.0: refactor max_bot to flat structure, add VCF+UserModel+NLP history context, portal pages and proxy fixes
- Refactored max_bot from nested packages to flat module structure
- Q2: Extended BotUser model (patronymic, email, org, address, vcf_raw, contact_hash, phone_verified, email_verified, last_interaction, total_conversations, total_tickets)
- Q2: VCF parser (FN, N, TEL, EMAIL, ORG, ADR), upsert on re-contact, NLP history context (_get_user_history_context -> YandexGPT)
- Q1: Broadcast preview modal with 10s confirmation timer
- Q3: CSS var(--white)->var(--bg-card), var(--text)->var(--text-primary)
- Q4: bot_settings showNotification(), editable max_bot_id
- Q5: Webhook secret passthrough via X-Max-Bot-Api-Secret
- Masking sensitive keys, dialog_cleared handler, migrate via _add_column_if_not_exists()
- Rate limit (asyncio.sleep 0.5 per 10), dead code removed, conv.intent context in contact.py
- Portal pages: bot_consent, bot_kb (edit), bot_settings, bot_test, bot_tickets, portal_settings
- Tests: 21/21 passing, added test_yandex_gpt.py, test_email_sender.py
- Deploy: deploy_full.sh, schema.sql, seed_knowledge_base.sql
2026-05-29 02:30:30 +03:00

31 KiB
Raw Blame History

29.5.4. Использование webhook 29.5.4.1. Схема использования webhook Как было сказано ранее, при использовании вебхуков, интеграция работает только в одну сторону: сообщения передаются со стороны внешней системы в систему взаимодействия и, затем, в прикладное решение.

Пользователь, который будет олицетворять систему, которая отправляет сообщения в прикладное решение, будет называться пользователем интеграции. Для того, чтобы внешняя система могла пользоваться вебхуком, ей необходимо сообщить адрес точки подключения, который можно получить с помощью метода ИнтеграцияСистемыВзаимодействия.НавигационнаяСсылкаТочкиПодключения(). Этот адрес следует использовать при настройки системы, которая будет отправлять сообщения.

После того, как сообщение от внешней системы попадает в точку подключения, выполняются следующие действия:

● Тело сообщения разбирается.

● Создается пользователь интеграции, если он еще не создан.

В качестве имени пользователя интеграции выступает:

● Имя пользователя, переданное в сообщении createUser.

● Имя экземпляра интеграции, если в сообщении внешней системы не указан пользователь (автор сообщения).

● Создается обсуждение системы взаимодействия, если оно еще не создано.

● В качестве участников обсуждения выступают:

● Пользователь интеграции.

● Пользователи, заданные при настройке интеграции как участники по умолчанию.

● Если необходимо, чтобы сообщения попадали в заранее созданное обсуждение с выбранным составом участников, то следует:

● Предварительно создать обсуждение с помощью встроенного языка.

● Передать идентификатор созданного обсуждения внешней системе, чтобы эта система использовала этот идентификатор в своих сообщениях. Строковое представление идентификатора обсуждения можно получить с помощью функции Строка(), параметром которой выступает объект типа ОбсуждениеСистемыВзаимодействия.Идентификатор.

● В обсуждение добавляется сообщение, автором которого является пользователь интеграции и содержимое определено сообщением внешней системы.

29.5.4.2. Поддерживаемые команды 29.5.4.2.1. Общая информация В качестве команды выступает POST-запроса внешней системы. Этот запрос должен удовлетворять следующим требованиям:

● Тело запроса формируется в кодировке UTF-8 без BOM.

● Тело запроса представляет собой JSON-документ.

● Тело запроса, в общем, имеет следующий вид:

Копировать в буфер обмена { "command" : { "param1": value1, … "paramN": valueN } } Если в команде допускается текст в формате HTML, то в этом случае поддерживаются следующие возможности оформления:

● Поддерживаемые элементы: a, b, big, font, i, li, ol, s, small, span, strike, strong, u, ul.

● Атрибут элемента style: background-color, color, font-family, font-size, font-style, font-weight, text-decoration.

Результат выполнения команды отражается кодом возврата:

● 200 OK ‑ команда выполнена успешно.

● 404 No active integration ‑ интеграция не найдена или не активна.

● 409 Conflict ‑ при вызове команды create… для уже существующего объекта.

● 500 <Текст ошибки> ‑ при обработке команды произошла ошибка.

Далее в разделе будет описаны форматы команд.

29.5.4.2.2. createConversation Описание:

Создает новое обсуждение.

Синтаксис:

Копировать в буфер обмена { "createConversation": { "extConversationId": "1", "title": "Заголовок обсуждения", "extUserId": "1", "members": [ "1" ] } } Параметры:

● extConversationId ‑ внешний идентификатор создаваемого обсуждения.

● title ‑ заголовок создаваемого обсуждения (в виде строки).

● extUserId ‑ внешний идентификатор пользователя, от имени которого создается обсуждение.

Если не задан, то будет создан пользователь системы взаимодействия с именем, совпадающим с именем интеграции, и он будет добавлен в обсуждение. В этом случае во всех запросах, относящихся к этому обсуждению, не должны быть указаны параметры extUserId, members, addMembers, removeMembers.

Необязательный параметр.

● members ‑ массив внешних идентификаторов пользователей, которые являются участниками обсуждения со стороны внешней системы.

Необязательный параметр.

29.5.4.2.3. createMessage Описание:

Создает новое сообщение в обсуждении.

Синтаксис:

Копировать в буфер обмена { "createMessage": { "extId": "1", "text": "Тест сообщения", "textFormat": "text/plain", "extUserId": "1", "extConversationId": "1" } } Параметры:

● extId ‑ внешний идентификатор создаваемого сообщения.

● text ‑ текст сообщения.

● textFormat ‑ формат текста сообщения. Возможные значения: text/plain, text/html.

Необязательный параметр. Значение по умолчанию ‑ text/plain.

● extUserId ‑ внешний идентификатор пользователя-автора сообщения.

Если не задан, то будет создан пользователь системы взаимодействия с именем, совпадающим с именем интеграции, и он будет добавлен в обсуждение. В этом случае во всех запросах, относящихся к этому обсуждению, не должны быть указаны параметры extUserId, members, addMembers, removeMembers.

Необязательный параметр.

● extConversationId ‑ внешний идентификатор обсуждения, в котором создается сообщение.

29.5.4.2.4. createUser Описание:

Создает пользователя интеграции в системе взаимодействия.

Синтаксис:

Копировать в буфер обмена { "createUser" : { "extUserId": , "name": , "fullName": , "picture": } } Параметры:

● extUserId ‑ внешний идентификатор внешнего пользователя.

● name ‑ короткое имя внешнего пользователя (в виде строки).

● fullName ‑ полное имя внешнего пользователя (в виде строки). Может быть пустой строкой.

● picture ‑ картинка пользователя в виде строки в формате base64. Необязательный параметр.

29.5.4.2.5. updateConversation Описание:

Изменяет параметры обсуждения. Позволяет изменить заголовок обсуждения, а также добавить или удалить пользователей обсуждения.

Синтаксис:

Копировать в буфер обмена { "updateConversation": { "extConversationId": "1", "title": "Новый заголовок обсуждения", "extUserId": "5", "addMembers": [ "5" ], "removeMembers": [ "1" ] } } Параметры:

● extConversationId ‑ внешний идентификатор изменяемого обсуждения.

● title ‑ заголовок обсуждения.

Необязательный параметр.

● extUserId ‑ внешний идентификатор пользователя, от имени которого изменяется обсуждение.

Если не задан, то будет создан пользователь системы взаимодействия с именем, совпадающим с именем интеграции, и он будет добавлен в обсуждение. В этом случае во всех запросах, относящихся к этому обсуждению, не должны быть указаны параметры extUserId, members, addMembers, removeMembers.

Необязательный пользователь.

● addMembers ‑ массив внешних идентификаторов пользователей, которые будут добавлены к участникам обсуждения.

Необязательный параметр.

● removeMembers ‑ массив внешних идентификаторов пользователей, которые будут удалены из участников обсуждения.

Необязательный параметр.

29.5.4.2.6. updateMessage Описание:

Изменяет существующее сообщение.

Синтаксис:

Копировать в буфер обмена { "updateMessage": { "extId": "1", "text": "Тест сообщения", "textFormat": "text/plain", "extUserId": "1", "extConversationId": "1" } } Параметры:

● extId ‑ внешний идентификатор изменяемого сообщения.

● text ‑ текст сообщения.

● textFormat ‑ формат текста сообщения. Возможные значения: text/plain, text/html.

Необязательный параметр. Значение по умолчанию ‑ text/plain.

● extUserId ‑ внешний идентификатор пользователя-автора сообщения.

Если не задан, то будет создан пользователь системы взаимодействия с именем, совпадающим с именем интеграции, и он будет добавлен в обсуждение. В этом случае во всех запросах, относящихся к этому обсуждению, не должны быть указаны параметры extUserId, members, addMembers, removeMembers.

Необязательный параметр.

● extConversationId ‑ внешний идентификатор обсуждения, в котором изменяется сообщение.

29.5.4.2.7. updateUser Описание:

Обновляет параметры пользователя интеграции в системе взаимодействия.

Синтаксис:

Копировать в буфер обмена { "updateUser" : { "extUserId": , "name": , "fullName": , "picture": } } Параметры:

● extUserId ‑ внешний идентификатор внешнего пользователя.

● name ‑ новое короткое имя внешнего пользователя (в виде строки). Необязательный параметр.

● fullName ‑ новое полное имя внешнего пользователя (в виде строки). Необязательный параметр.

● picture ‑ новая картинка пользователя в виде строки в формате base64. Необязательный параметр.

29.5.5. Чат на сайте 29.5.5.1. Общая информация Данный способ интеграции предназначен для решения следующей задачи: необходимо обеспечить возможность для пользователя некоторого сайта общаться с компанией, которая использует этот сайт для выполнения своей деятельности. На сайте может быть интернет-магазин, витрина с примерами продукции и т. д.

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

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

  2. Создать нужный тип интеграции в системе «1С:Предприятие».

  3. Реализовать на встроенном языке системы «1С:Предприятие» требуемое взаимодействие с чатом, если необходимо. Если чат используется только в режиме мессенджера (т. е. только для интерактивного обмена текстовыми сообщениями) ‑ никаких дополнительных действий выполнять не требуется.

29.5.5.2. Интерфейс чата Для того, чтобы подключить чат к веб-сайту, необходимо в код веб-сайта вставить следующий фрагмент кода:

Копировать в буфер обмена

<script src="" async></script>

URL точки подключения можно получить или при создании интеграции (в стандартной обработке управления системой взаимодействия) или с помощью метода НавигационнаяСсылкаТочкиПодключения() объекта типа ИнтеграцияСистемыВзаимодействия.

После загрузки интерфейса чата, в глобальном контексте сайта становится доступен объект CollaborationSystemWebChat1CE (типа CollaborationSystemWebChat1CEClass). Через этот объект возможно взаимодействие с чатом.

Объект CollaborationSystemWebChat1CE предоставляет следующие методы:

open()

Описание:

Разворачивает окно чата.

Возвращаемое значение:

void.

close()

Описание:

Сворачивает окно чата.

Возвращаемое значение:

void.

setContactInfo()

Описание:

Устанавливает контактные данные пользователя.

Параметры:

contactInfo­обязательный

Тип: Object.

Объект, содержащий значения полей контактных данных пользователя. Объект содержит следующие свойства:

● name ‑ тип String ‑ содержит имя пользователя.

● fullName тип String ‑ содержит полное имя пользователя.

● email ‑ тип String ‑ содержит адрес электронной почты пользователя.

● phone ‑ тип String ‑ содержит номер телефона пользователя.

Возвращаемое значение:

void.

getContactInfo()

Описание:

Возвращает поданные пользователем в форме представления контактные данные.

Возвращаемое значение:

Promise