Слой архитектора

Telegram-бот

Личный инструмент архитектора, созданный для повышения его профессиональной эффективности и как демонстрация работы памяти проекта.

Настройки

Токен, связь и всё, без чего бот не отвечает.

Что это даёт. Дверь в ваш проект из мессенджера, а не из браузера. Человек пишет вашему боту и получает ответ, собранный из вашей же базы знаний, — без отдельного приложения и без страницы входа.

Telegram

привязано к @roma_armstrong

Текущий бот: @TestFracteraBot

Канал включён
Токен бота от @BotFather

После привязки бот отвечает из базы знаний этого проекта. Ответ он не выдумывает: если база пуста или служба выключена, он так и говорит.

Ключ OpenAI

Ключ OpenAI существуетj8sA

Боту он нужен чаще, чем нет: без этого ключа голосовая заметка не расшифруется, а ответ не соберётся. Поэтому он настраивается здесь — обе настройки на одном экране.

Ключ с platform.openai.com

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

Расписание

Как часто у приложения спрашивают, не наступило ли напоминание. Напоминание обязано сработать, когда на сайт никто не смотрит, — значит кто-то должен постучать, и это он. «Выключено» означает, что напоминаний в проекте нет и платить за них не нужно.

Реестр признаков

признаков: 25

Что проект умеет вынимать из сообщения: дату события, деньги, место, связь со сказанным раньше. Каждый признак — объявленная способность, а не ярлык.

Чем пришло

  • Печатный текстmaterial.text

    встроенный

    Человек написал сообщение буквами.

    Канал отдаёт сообщение без вложения звука.

    tgdesk_messages.raw_kind

  • Голосовое сообщениеmaterial.voice

    встроенный

    Человек надиктовал. Служба расшифровывает запись, и дальше по потоку она неотличима от печатного текста — отличие видно только здесь.

    Канал отдаёт вложение звука; служба возвращает расшифровку.

    tgdesk_messages.raw_kind

Зачем пришло

  • captureintent.capture

    встроенный

    Человек рассказывает о случившемся — это сохраняется.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • questionintent.question

    встроенный

    Спрашивает о собственной жизни: что покупал, обещал, тратил.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • scheduleintent.schedule

    встроенный

    Просит напомнить или поставить событие в календарь.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • confirmintent.confirm

    встроенный

    Соглашается или отказывается — и больше ничего.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • correctintent.correct

    встроенный

    Поправляет то, что система предложила: другую дату, другую сумму.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • whereintent.where

    встроенный

    Отвечает на вопрос, где он живёт, — для часового пояса.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • metaintent.meta

    встроенный

    Спрашивает о самой системе: кто ты, что умеешь.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

  • commandintent.command

    встроенный

    Команда, начинается с косой черты.

    Маршрутизатор намерений спрашивает модель одним коротким вопросом и получает имя ветви.

    ветвь обработки; в базе не хранится

Чем оказалось

  • memoentity.memo

    встроенный

    Просьба запомнить нечто как есть.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

  • noteentity.note

    встроенный

    Заметка: факт, который стоит сохранить.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

  • taskentity.task

    встроенный

    Задача — то, что человек собирается сделать.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

  • receiptentity.receipt

    встроенный

    Чек или покупка: сумма, продавец, предмет.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

  • placeentity.place

    встроенный

    Место — адрес, заведение, точка на карте.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

  • ideaentity.idea

    встроенный

    Идея, замысел, мысль на будущее.

    Разбор рассказа возвращает род сущности и её поля.

    tgdesk_entries.kind

Куда уехало

  • Медиатекаdestination.media

    встроенный

    Присланный файл сохранён и доступен по имени.

    Отметка ставится обработкой, когда отправка прошла; отказ пишется в заметки сообщения.

    tgdesk_artifacts.kind

  • Векторный складdestination.vector

    встроенный

    Смысл сообщения записан для поиска по смыслу, а не по словам.

    Отметка ставится обработкой, когда отправка прошла; отказ пишется в заметки сообщения.

    tgdesk_artifacts.kind

  • Граф знанийdestination.rag

    встроенный

    Конверт сообщения ушёл в граф: источник, автор, время, признаки, суть.

    Отметка ставится обработкой, когда отправка прошла; отказ пишется в заметки сообщения.

    tgdesk_artifacts.kind

Что извлекли

  • Связь с другим сообщениемfield.link

    встроенный

    выключить нельзя

    Сообщения одного разговора, идущие подряд. Человек говорит «эту фотографию», «то место» — и без связи вторая фраза теряет предмет первой.

    Сегодня — по времени: соседнее сообщение того же чата в пределах 180 секунд. По смыслу пока не ищется.

    своей таблицы нет: связь — отношение, а не значение

  • Когда это случилосьfield.happened

    встроенный

    Дата события отдельно от даты рассказа. «Вчера купил» кладётся под вчерашнее число, а не под минуту разговора.

    Разбор возвращает дату события, если она названа словами: вчера, в понедельник, третьего числа.

    tgdesk_messages.happened_unix

  • Тут про деньгиfield.money

    встроенный

    Отметка, что в сообщении речь о цене, оплате или заработке. По ней «покажи траты» отвечается условием, а не перечитыванием года переписки.

    Разбор ставит отметку, когда упомянута цена, платёж или зарплата.

    tgdesk_messages.has_financial

  • Координатыfield.geo

    встроенный

    Точка на карте, присланная Telegram. Слово «здесь» координатами не становится — сегодня их даёт только настоящая геометка.

    Канал присылает широту и долготу вложением.

    tgdesk_messages.lat, tgdesk_messages.lon

  • Переслано отfield.forwarded

    встроенный

    Кто автор пересланного сообщения. Важно, когда человек передаёт чужие слова.

    Канал сообщает имя исходного отправителя.

    tgdesk_messages.forwarded_from

  • О чём этоfield.facets

    встроенный

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

    Разбор возвращает теги вместе со сводкой.

    нигде: печатается в конверт графа

Ваша собственная инструкция боту

В процессе разработки

Текст, который вы пишете сами, а бот исполняет вдобавок к своим правилам: ваши ограничения, ваш тон, ваша предметная область. Он добавляется к инструкции бота, а не заменяет её.

Powered by Fractera