Статья

Календарь в чате: как Schai GPT отвечает «во сколько встреча» и ставит события

Календарь в чате: как Schai GPT отвечает «во сколько встреча» и ставит события

ProfileProfile·3 ч назад·
5
··0·
Если коротко: у Schai GPT есть три действия с Google Календарём — посмотреть, поставить, удалить. На вопрос «что у меня сегодня» или «во сколько созвон с подрядчиком» он отвечает строками, где есть время по Москве, место, ссылка на подключение (Meet, Zoom, Телемост) и ссылка на само событие. Встреча ставится одной фразой вида «поставь встречу с бухгалтером завтра в 11:00 на полчаса» — название, время, длительность, больше в событие ничего не уходит. А удаление происходит сразу, без отдельного «вы уверены?». Это главное, что стоит знать до того, как вы скажете «убери из календаря».
Это Profile. Я разбираю, как наши инструменты устроены внутри, поэтому дальше — по коду Schai GPT, а не по описанию на лендинге: какой именно запрос уходит в Google, что попадает в ответ, где ИИ ошибается чаще всего и чего он с календарём не делает вовсе. Ограничения называю там же, где возможности — иначе в таком разборе нет смысла.

Почему ссылка на созвон берётся из календаря, а не из почты

Самая частая календарная просьба — не «покажи расписание», а «пришли ссылку на созвон». Встреча через две минуты, вкладок двадцать, и человек лезет искать письмо-приглашение. Это плохой путь, и вот почему. Приглашение приходило один раз — на еженедельный созвон, может быть, полгода назад. Письмо ушло в архив, в «Промоакции», в чужую цепочку с двадцатью ответами. Организатор мог пересоздать конференцию, и в старом письме лежит мёртвая ссылка. Поиск по почте на слово «созвон» вернёт десять похожих писем, и выбирать между ними придётся вам — в те самые две минуты.
В календаре ссылка живёт в самом событии и меняется вместе с ним. Поэтому у инструмента list_calendar_events в описании прямо написано: это не поиск по почте, ссылка на встречу берётся из календаря. Внутри он собирает ссылку на подключение из четырёх мест по очереди, до первого найденного: встроенный Google Meet, видеовход из данных конференции (так приходят Zoom и Телемост через интеграции), первая http-ссылка в описании события и, наконец, первая ссылка в поле «Место». Четыре места — потому что организаторы кладут ссылку куда придётся, и ни одно поле не является обязательным.
Запрос к Google идёт с двумя важными параметрами: разворачиванием повторяющихся событий в отдельные экземпляры и сортировкой по времени начала. В справочнике Calendar API этот режим описан как «вернуть одиночные события и экземпляры повторяющихся, но не сами правила повторения». На практике это значит, что еженедельная планёрка приходит конкретным ближайшим вторником с конкретным временем, а не абстрактным «каждую неделю» — по такому ответу уже можно действовать.

Что ИИ видит в событии — и где проходят границы

Из каждого события забирается ограниченный набор полей: название, начало и конец, место (если это адрес, а не ссылка), ссылка на подключение, ссылка на событие в Google Календаре, организатор с признаком «пригласил не я» и описание, обрезанное до 500 символов. Всё это печатается пронумерованным списком: номер, название, время по Москве, а ниже строки «Место», «Подключиться», «Событие в календаре».
Границы стоит держать в голове. Окно по умолчанию — 14 дней вперёд; можно попросить дальше, но сервер не заглядывает дальше 60 дней. Из Google забирается не больше 25 ближайших событий, а в ответ печатается пять — остальные ИИ просто не увидит. Читается только основной календарь: второй, семейный или рабочий, подключённый отдельной подпиской, в выдачу не попадёт. И список всегда начинается с текущего момента — прошедших встреч в нём нет, «что у меня было во вторник» календарь не ответит.
Если вы назвали конкретную встречу, фильтр работает по названию: регистр и «ё» приводятся к одному виду, дальше ищется вхождение фразы или все значимые слова запроса (длиннее двух букв) в названии события. Не нашлось — ИИ не молчит: он покажет ближайшие события и честно подпишет, что по вашему названию совпадений не было. Это лучше пустоты, но и повод перечитать список глазами, а не верить первой строке.
Отдельно про надёжность. Раньше любая поломка на стороне Google превращалась в пустой список, и человек видел «событий нет» — то есть считал день свободным, когда встречи были. Сейчас ошибка не притворяется пустотой: на 401 и 403 ИИ скажет, что доступ к Google потерян и помощника нужно переподключить, на 429 — что Google временно ограничил частоту запросов. Разница между «встреч нет» и «я не смог посмотреть» слишком велика, чтобы её скрывать.
Поля, которые ИИ достаёт из события, четыре места поиска ссылки на созвон и жёсткие границы выдачи

Поставить встречу одной фразой: что назвать, чтобы получилось с первого раза

У создания события ровно три параметра: название (обязательно), время начала (обязательно) и длительность в минутах — по умолчанию час, минимум пять минут. Всё остальное, что вы скажете, в событие не попадёт: полей места, описания и участников у инструмента нет. Фраза «поставь встречу с Леной в переговорной на четвёртом этаже» создаст событие с таким названием целиком — переговорная останется текстом в названии, а не адресом в поле «Место».
Особенно важно про людей. В Calendar API гости — это отдельный список участников, и рассылку приглашений включает отдельный параметр запроса: без него письма не уходят никому. Мы этот список не заполняем вовсе. То есть событие появляется только в вашем календаре, и никто из названных в фразе людей о нём не узнает. Нужно позвать людей — откройте событие по ссылке, которую ИИ вернёт в подтверждении, и добавьте гостей в самом Календаре. Так и правильнее: рассылка писем от вашего имени — действие, которое человек должен делать своей рукой.

Плохо → лучше: пять формулировок

Плохо → Лучше → Что меняется «поставь встречу» → «поставь встречу „Созвон с бухгалтером“ завтра в 11:00 на 30 минут» → без времени ИИ переспросит, без названия событие станет просто «Событие» «напомни про налоги в конце месяца» → «напомни про налоги 30 сентября в 10:00» → «конец месяца» ИИ превратит в дату сам — и не обязательно в ту, что у вас в голове «встреча в три» → «встреча сегодня в 15:00» → «в три» и «сегодня» модель достраивает по контексту; явные сутки и 24-часовое время убирают обе догадки «созвон с Леной и Сергеем во вторник» → та же фраза + «пришли ссылку на событие» → участников в событии не будет, зато по ссылке вы добавите их за десять секунд «поставь выходной на всю субботу» → «поставь „Переезд“ в субботу в 9:00 на 8 часов» → событий «на весь день» инструмент не создаёт, только отрезок времени

Относительное время и часовой пояс

«В четверг в три» ИИ не понимает как человек — он получает в служебной подсказке текущее московское время и вычисляет дату сам, арифметикой. Пока речь про «завтра», «в пятницу», «через два часа», это работает предсказуемо. Ошибки живут на размытых формулировках: «в следующую пятницу» (эта или через неделю?), «в конце месяца», «после праздников», «через пару недель». На таких словах лучше назвать дату числом — вы потратите две секунды, зато не будете искать событие в чужой неделе.
Часовой пояс — единственное место, где ошибка не видна глазом. Время уходит в Google строкой с явным смещением +03:00, и это требование самого API: смещение обязательно, если отдельно не указана зона. Если модель смещение не поставит, строка вида «2026-09-25T15:00:00» разбирается как локальное время системы, а наш сервер живёт по UTC — встреча уедет на три часа вперёд. Практический вывод: если вы не в московском часовом поясе, говорите «в 10:00 по Москве» и проверяйте подтверждение. Оно печатается московским временем, и рядом лежит ссылка на событие — одного взгляда хватает.
Дубли подстрахованы: в рамках одной задачи событие с тем же названием второй раз не создастся, ИИ ответит «это событие я уже поставил». А вот разные названия проходят свободно — просьба «напомни про отчёт завтра и в пятницу» создаст два события, как и задумано.

Удаление и перенос: здесь нет кнопки «вы уверены»

Теперь честная часть, ради которой стоило писать эту статью. В агенте Schai GPT есть список действий с последствиями, которые ИИ не вправе выполнить по своей инициативе — их подтверждает человек кнопкой. В этом списке ровно два пункта: публикация черновика и отправка сообщения собеседнику. Удаления события календаря там нет. Для Яндекс.Метрики отдельно прописано правило «удалять что-либо без прямой просьбы не буду», а для календаря такого предохранителя не стоит.
Выглядит это так. По названию ИИ ищет среди ваших событий на ближайшие 60 дней и дальше действует по числу совпадений. Нашлось несколько — показывает пронумерованный список (до восьми) и ждёт: «удали 2». Не нашлось ничего — показывает ближайшие события и снова ждёт номера. А вот если совпадение ровно одно, событие удаляется немедленно, без вопросов. И совпадение здесь — не «точное название», а вхождение ваших слов в название: короткое «удали созвон» при единственном «Созвон с банком» в календаре сработает наверняка, даже если вы имели в виду совсем другую встречу.
Отсюда три практических привычки. Первая: сначала «покажи встречи на этой неделе», потом «удали 3» — номер из показанного списка ошибиться не даёт. Вторая: если удаляете названием, называйте его длиннее и точнее — «удали планёрку по стройке», а не «удали планёрку». Третья: не формулируйте задачу как уборку («убери из календаря всё лишнее») — расплывчатая просьба плюс единственное совпадение и есть та комбинация, после которой встреча исчезает. Если всё-таки улетело не то, не паникуйте: удалённые мероприятия хранятся в корзине Календаря 30 дней и восстанавливаются на компьютере через «Настройки → Корзина». Там же есть оговорка: при удалении варианта «это и последующие мероприятия» в корзину они не попадают.
Переноса как отдельного действия не существует — инструмента «изменить событие» в Schai GPT нет. Перенос всегда складывается из двух шагов: удалить и создать заново. У нового события будет новое название и новое время, но не будет гостей, вложений и истории оригинала. Поэтому встречу, которую организовали не вы, через чат переносить не стоит: там, где вы не хозяин события, правки должны идти через сам Календарь, иначе участники останутся со старой записью.
Три исхода фразы «удали событие», отсутствие подтверждающего шага и корзина Календаря как страховка

Доступы: что вы отдаёте и как забрать обратно

Календарь включается вместе с Личным помощником — одним подключением Google-аккаунта. В наборе запрашиваемых прав два календарных: «видеть календари» и «видеть и изменять события». Второго достаточно и для создания, и для удаления — именно поэтому удаление вообще возможно из чата. Отдельного режима «только посмотреть, но не трогать» у нас нет: права выдаются одним списком, вместе с почтой, Диском, документами и таблицами.
Что ИИ видит в чужих приглашениях. Событие, на которое вас позвали, читается как любое другое: название, время, место, ссылка на подключение и организатор — вместе с признаком, что организатор не вы. Список остальных гостей инструмент не забирает вовсе, так что «кто ещё идёт на встречу» ИИ не ответит. Ответить за вас «приду / не приду» он тоже не может: такого действия у него нет.
Отзыв доступа работает в две двери. Первая — кнопка «Отключить» в Личном помощнике: сервер не просто прячет интерфейс, а отзывает токен на стороне Google и удаляет сохранённые ключи. Вторая — страница подключённых приложений в самом Google-аккаунте; в справке про сторонние приложения и сервисы это сформулировано прямо: если удалить доступ, приложение больше не сможет обращаться к вашему аккаунту. Второй путь надёжнее по смыслу: он не зависит от того, работает ли сейчас наш сервер.

Чего Schai GPT с календарём не делает

Этот список короткий и важный. ИИ не ищет свободное время — ни у вас, ни тем более у коллег: инструмента занятости не существует. Он не создаёт повторяющихся событий: читать экземпляры регулярной встречи он умеет, а поставить «каждый вторник в 11» — нет. Он не редактирует существующие события — ни время, ни название, ни место. Он не создаёт события на весь день — только отрезок с началом и длительностью. Он не приглашает участников и не отвечает на чужие приглашения. Он не видит вторые календари и не смотрит в прошлое. И он не планирует ваш день сам: любое действие начинается с вашей фразы.

Один день целиком

Утро. В сводке помощника календарный блок по умолчанию смотрит на 24 часа вперёд, но живой вопрос точнее: «что у меня сегодня и во сколько первое». В ответе — список с временем и местом, из него сразу видно, успеваете вы на что-то или нет.
Перед встречей. Если включены напоминания, помощник шлёт два пуша: за 15 минут до начала и в момент начала (смещения настраиваются). Это отдельный механизм, он работает без вашего вопроса и опирается на те же события календаря.
Созвон. «Пришли ссылку на встречу с подрядчиком» — и в ответе строка «Подключиться: …», взятая из самого события. Это тот случай, когда чат быстрее, чем открыть календарь руками: не нужно искать глазами карточку и разворачивать описание.
Перенос. «Покажи встречи на завтра» → «удали 2» → «поставь „Созвон с подрядчиком“ в четверг в 16:00 на час». Три коротких реплики, из которых первая существует именно ради безопасности второй. Новую ссылку участникам вы отправляете сами — ИИ этого не сделает и делать не должен.

Коротко

Ссылку на созвон спрашивайте у календаря, а не у почты: в событии она живая и одна. Создавая встречу, называйте дату, время, длительность и название — остальное всё равно не уйдёт в событие: ни гости, ни место, ни описание. Если вы не в Москве, добавляйте «по Москве»: время считается от московского. Удаление подтверждения не требует, поэтому удаляйте номером из показанного списка, а не наугад названием; страховка — корзина Календаря на 30 дней. Переноса нет: это всегда «удалить и создать заново», и чужие встречи так двигать не надо. И главное — ИИ здесь не планировщик, а быстрый доступ: он отвечает на вопрос и выполняет названное действие, но не решает за вас, как устроить день.
0

Пока нет комментариев

Календарь в чате Schai GPT: встречи и ссылка на созвон