> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Входящие

> Размещайте сообщения из вашего приложения в папке "Входящие" участников с логической функции или фронтального компонента.

## Обзор

Ваше приложение может начать и продолжить разговоры во входящей рабочей области, где они также пообщаются с помощником Twenty. Сообщение может заканчиваться вопросом, формой или изменением для утверждения, кто из членов группы отвечает из чата, прежде чем разговор продолжится с ассистентом.

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

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

`sendInboxMessage()` отправляет сообщение из вашего приложения в чаты одного или нескольких членов рабочей области и возвращает разговор в «threadId».

```ts src/logic-functions/notify-first-recording.ts theme={null}
import { sendInboxMessage } from 'twenty-sdk/logic-function';

const { threadId } = await sendInboxMessage({
  workspaceMemberIds: [workspaceMemberId],
  threadKey: 'first-call-recording',
  idempotencyKey: 'first-call-recording',
  title: 'Your first call recording is ready',
  text: 'Your first call was recorded: **Weekly sync**.',
  toolCall: {
    toolName: 'ask_question',
    input: {
      header: 'Share',
      question: 'Do you want to share it with the other attendees?',
      options: [{ label: 'Draft a recap email' }, { label: 'Not now' }],
    },
  },
});
```

Ключевые очки:

* `workspaceMemberIds` перечисляет участников, которые получают разговор, по крайней мере один. Первый член нового разговора владеет им, а другие следуют за ним как участникам. Позднее послать под тем же ключом, в котором добавляются новые участники; участники оставляют разговор.
* `threadKey` выбирает разговор для этого приложения, который разделяет каждый участник, к которому он прислал. Новый ключ запускает разговор под названием «title»; ключ, который вы использовали перед добавлением сообщения в этот разговор.
* `idempotencyKey` идентифицирует сообщение в разговоре. Отправка одних и тех же ключей ничего не записывает новых, поэтому повтор и одновременный запуск никогда не дублирует сообщение.
* `text` является markdown, и может нести [упоминания и ссылки на запись](#mentions-and-record-references).
* `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», и звонок не выполняется без написания сообщения, когда один из них не может иметь разговор. [роль](https://docs.twenty.com/ru/developers/extend/apps/config/roles.md) ваше приложение должно предоставить `SystemPermissionFlag.AI`.

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

Сообщение всегда пишется вашим приложением, независимо от того, вызвал звонок. Сам вызов выполняется как [API clients](https://docs.twenty.com/ru/developers/extend/apps/logic/logic-functions.md#whose-access-a-call-uses):

* В логической функции он действует как человек, который вызвал запуск, или как ваше приложение, когда никто не сделал, например, в расписании cron.
* В передней части он выступает в качестве члена, глядя на страницу. По истечении срока действия токена звонок обновляет его один раз через Twenty и извлекает.

Человеку, стоящему за звонком, также требуется разрешение «AI», как и каждому получателю.

Для отправки из фронт-компонента импортируйте те же вспомогательные из `twenty-sdk/front-component`. [Отправка в почту](https://docs.twenty.com/ru/developers/extend/apps/layout/front-components.md#posting-to-the-inbox) показывает, как затем открыть разговор.

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

В поле "Входящие" ссылки отображаются в "текст" как фишки. Напишите их с помощью этих помощников, а не вручную:

```ts src/logic-functions/flag-idle-deal.ts theme={null}
import {
  inboxMention,
  inboxReferenceRecord,
  sendInboxMessage,
} from 'twenty-sdk/logic-function';

const ownerMention = await inboxMention({ workspaceMemberId: owner.id });

const dealReference = await inboxReferenceRecord({
  objectNameSingular: 'opportunity',
  recordId: opportunity.id,
});

await sendInboxMessage({
  workspaceMemberIds: [owner.id],
  threadKey: `idle-deal-${opportunity.id}`,
  idempotencyKey: `idle-deal-${opportunity.id}-${weekNumber}`,
  title: `${opportunity.name} is idle`,
  text: `${ownerMention}, ${dealReference} has had no activity for two weeks.`,
});
```

* `inboxMention({ workspaceMemberId })` записывает упоминание члена рабочей области, а `inboxReferenceRecord({ objectNameSingular, recordId })` чип, который ссылается на любую запись.
* Оба читают метку, отображаемую микросхемой, как это делает композитор: полное имя пользователя, или их электронной почты, когда имя пустое и идентификатор ярлыка записи, например, название компании. Коробки становятся скобками и разрывы строк становятся пробелами, поэтому чип всегда отображается.
* Они читают с тем же доступом, что и остальная часть звонка, чтобы доступ был обеспечен для доступа к члену или записи. Запись содержит два запроса, один для поля с меткой объекта и один для записи.
* Упоминание только рендеров. Он не добавляет участника в разговор или не уведомляет их, поэтому перечислите всех, кто должен получить сообщение в разделе `workspaceMemberIds`.
* `INBOX_ASSISTANT_MENTION` - это текст, в котором автор пишет, когда член упоминает помощника (`@Ada`), так что ваше имя сообщения совпадает.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.