Входящие и каналы
Подключаем Matrix, Telegram, Slack, Mattermost и вебхуки — агент получает задачи из чата вашей команды.
Temporality умеет принимать задачи из мессенджеров: вы пишете в командный
чат — intake-конвейер разбирает сообщение и заводит работу нужному агенту.
Страницы: Входящие (/inbound) — конвейер и статусы; Каналы
(Настройки → Каналы доставки) — транспорты.
#Каналы доставки
Вопросы агента (ask_human) доставляются получателю в его предпочтительный
канал; настраиваются в профиле пользователя. Встроенный канал — почта
вопросов в приложении (Runs → вопросы). Внешние транспорты:
| Канал | Направление | Настройка |
|---|---|---|
| Matrix | доставка вопроса | homeserver + токен бота; адрес — ID комнаты |
| Telegram | доставка вопроса | токен бота; адрес — chat ID |
| Mattermost | доставка + входящие (WebSocket) | base URL + токен бота |
| Slack | доставка + входящие (Events API) | bot token + signing secret |
| Webhook | входящие | секрет подписи |
Каналы редактируются в UI без перезапуска (значения из БД перекрывают env);
секреты обратно не возвращаются — только признак «установлен». Доставка не
блокирует ран: сбой транспорта фиксируется событием, вопрос остаётся в UI.
Ответы на ask_human можно давать прямо в чате: реплай в двустороннем
канале (Matrix, Mattermost, Slack) маршрутизируется в ждущий ран; для
командных вопросов побеждает первый ответ. Решения по подтверждениям
операций — в интерфейсе.
#Intake-конвейер
Сообщение пользователя по собственной инициативе проходит классификацию:
| Класс | Что происходит |
|---|---|
task |
Новая задача: резолв проекта (по упоминанию, search_projects, уточняющий вопрос) → start_task |
amendment |
Поправка: run_status показывает ваши прошлые раны, интейк уточняет, к какому относить, и запускает продолжение |
status |
Вопрос о прогрессе — отвечается по данным без запуска работы |
cancel |
Отмена ранее запущенного рана отправителя |
chatter |
Без работы — вежливый ответ |
reply |
Ответ на вопрос агента — доставляется в ждущий ран |
Конвейер включается по проекту тумблером «Принимать задачи из каналов»
и ограничен политиками оргструктуры, лимитом отправителя
(KERNEL_INTAKE_MAX_PER_HOUR) и сроком хранения тел
(KERNEL_INTAKE_RETENTION_DAYS). Аудит цепочки «сообщение → intake-ран →
ран задачи» — без тел сообщений.
#Файлы и альбомы
Сообщение с несколькими вложениями доходит как одна задача со всеми файлами, а не россыпь отдельных ранов. В Matrix несколько файлов плюс текст — это несколько независимых событий протокола: клиент шлёт каждое после загрузки своего файла, поэтому они приходят разными порциями. Конвейер собирает сообщения одного отправителя в комнате за короткое окно (пара секунд тишины) и склеивает вложения с текстом; в Telegram альбом («media group») собирается целиком тем же способом. Из-за этого окна входящее сообщение получает задержку в пару секунд — это цена одной задачи вместо трёх. Файлы, отправленные вдогонку работающей задаче, попадают в её рабочий каталог и доносятся агенту как заметка — отдельный ран не создаётся.
#Что видит пользователь
В разделе Входящие — все сообщения со статусами (получено → классифицировано → уточняется → направлено → ответлено в чат) и результатом. Ответ intake-агента доставляется в тот же чат, откуда пришло сообщение: куда легла задача, какое уточнение нужно, статус по запросу или вежливое закрытие без работы.