Перейти к основному содержанию

Обзор

Ваше приложение может начать и продолжить разговоры во входящей рабочей области, где они также пообщаются с помощником Twenty. Сообщение может заканчиваться вопросом, формой или изменением для утверждения, кто из членов группы отвечает из чата, прежде чем разговор продолжится с ассистентом. Входящие помощники экспортируются из twenty-sdk/logic-function и twenty-sdk/front-component, так что запланированный запуск и кнопка в вашем приложении будут размещены одинаково.

Отправка сообщения

sendInboxMessage() отправляет сообщение из вашего приложения в чаты одного или нескольких членов рабочей области и возвращает разговор в «threadId».
src/logic-functions/notify-first-recording.ts
Ключевые очки:
  • workspaceMemberIds перечисляет участников, которые получают разговор, по крайней мере один. Первый член нового разговора владеет им, а другие следуют за ним как участникам. Позднее послать под тем же ключом, в котором добавляются новые участники; участники оставляют разговор.
  • threadKey выбирает разговор для этого приложения, который разделяет каждый участник, к которому он прислал. Новый ключ запускает разговор под названием «title»; ключ, который вы использовали перед добавлением сообщения в этот разговор.
  • idempotencyKey идентифицирует сообщение в разговоре. Отправка одних и тех же ключей ничего не записывает новых, поэтому повтор и одновременный запуск никогда не дублирует сообщение.
  • text является markdown, и может нести упоминания и ссылки на запись.
  • toolCall (опционально) заканчивает сообщение одним из:
    • звоните в члены ответы, которые приостанавливают разговор: ask_question (один вопрос multiple-choice), request_form (поля для заполнения) или propose_tool_call (звонок для утверждения). Его input принимает toolName, arguments, который вы бы назовете инструмент с одним предложением summary. Инструмент должен быть одной из ролей вашего приложения по умолчанию может запускаться сама, например, create_one_person или update_one_opportunity (с записью id); email (send_email или draft_email, с recipients, subject и body в HTML) не требует разрешения вашего приложения. Член проверяет звонок по той же карточке, что и звонок по предложениям ассистента, редактирует его, если они хотят, и утвержденный звонок запускается с их собственным доступом;
    • один из собственных инструментов вашего приложения с помощью logicFunctionUniversalIdentifier визуализируется его фронтальным компонентом с проходящими input и output. Он не приостанавливает разговор.
  • Только один вызов ответы члена могут подождать в разговоре одновременно: отправка еще одного вызова не удалась с помощью THREAD_AWAITING_ANSWER. Обычные сообщения и вызовы инструментов приложения все еще принимаются.
  • Только участник, у которого есть беседа, может удалить ее, и удалённый разговор ушел для каждого участника: он не воссоздается, и к нему ничего не добавлено. Остальные участники могут отписаться от рассылки, чтобы доставить её из своего ящика.
  • Каждый участник должен иметь разрешение «AI», и звонок не выполняется без написания сообщения, когда один из них не может иметь разговор. роль ваше приложение должно предоставить SystemPermissionFlag.AI.

Кто отправляет сообщение

Сообщение всегда пишется вашим приложением, независимо от того, вызвал звонок. Сам вызов выполняется как API clients:
  • В логической функции он действует как человек, который вызвал запуск, или как ваше приложение, когда никто не сделал, например, в расписании cron.
  • В передней части он выступает в качестве члена, глядя на страницу. По истечении срока действия токена звонок обновляет его один раз через Twenty и извлекает.
Человеку, стоящему за звонком, также требуется разрешение «AI», как и каждому получателю. Для отправки из фронт-компонента импортируйте те же вспомогательные из twenty-sdk/front-component. Отправка в почту показывает, как затем открыть разговор.

Упоминания и запись ссылок

В поле “Входящие” ссылки отображаются в “текст” как фишки. Напишите их с помощью этих помощников, а не вручную:
src/logic-functions/flag-idle-deal.ts
  • inboxMention({ workspaceMemberId }) записывает упоминание члена рабочей области, а inboxReferenceRecord({ objectNameSingular, recordId }) чип, который ссылается на любую запись.
  • Оба читают метку, отображаемую микросхемой, как это делает композитор: полное имя пользователя, или их электронной почты, когда имя пустое и идентификатор ярлыка записи, например, название компании. Коробки становятся скобками и разрывы строк становятся пробелами, поэтому чип всегда отображается.
  • Они читают с тем же доступом, что и остальная часть звонка, чтобы доступ был обеспечен для доступа к члену или записи. Запись содержит два запроса, один для поля с меткой объекта и один для записи.
  • Упоминание только рендеров. Он не добавляет участника в разговор или не уведомляет их, поэтому перечислите всех, кто должен получить сообщение в разделе workspaceMemberIds.
  • INBOX_ASSISTANT_MENTION - это текст, в котором автор пишет, когда член упоминает помощника (@Ada), так что ваше имя сообщения совпадает.