Кто ещё видит встречу

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

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

В команде: пространства

Каждая встреча, записанная в команде, лежит в одном пространстве или в нескольких, и её читает каждый, кто может читать ЛЮБОЕ из них. Встреча о кадровом вопросе, который заодно и юридический, может лежать сразу в «HR» и в «Юридическом отделе». В команде с самого начала есть два пространства:

Любой в команде может создать новые пространства: для одного клиента, одной сделки, трёх человек. Их можно назвать, переименовать, добавлять туда коллег и убирать их. Добавленный человек с этой минуты читает всё, что там лежит, включая встречи, записанные до его прихода: именно для этого пространством и делятся. Администраторы команды читают все пространства, кроме чьего-либо «Личного», даже если сами в них не состоят.

Добавляет встречу в пространства и убирает её оттуда тот, кто её записал, во время записи или в любой момент потом. В приложении карточка пространства на встрече открывает список, где можно ставить и снимать галочки. «Личное» ни с чем не совмещается: если добавить встречу в любое другое пространство, она уходит из «Личного». Если убрать её из последнего пространства, она возвращается туда. А если выбрать «Личное», она сразу уходит из всех остальных пространств, то есть из доступа для всех остальных. Никто другой поместить её никуда не может, даже администраторы. Опубликованная ссылка продолжает работать, в каких бы пространствах ни лежала встреча.

Пространства есть только в команде. Тот, кто пользуется Chui один, их никогда не увидит.

Никто из тех, кто может встречу только читать, не может её изменить или удалить. Это так везде, где работает Chui, в том числе через ассистента.

Встреча, которую записал кто-то другой, отмечена в списках и результатах поиска как его встреча, поэтому всегда понятно, чью встречу цитируют. Есть и фильтр «мои» или «команда».

Если ты уходишь из команды или тебя из неё убирают, с этой минуты ты больше не читаешь пространства команды и выходишь из всех пространств, где состоял. Уже записанные встречи остаются в своих пространствах, и тот, кто записал каждую из них, по-прежнему может вернуть её в своё «Личное». Человек, которого убрали из одного пространства, перестаёт читать встречу, только если её нет ни в одном другом его пространстве.

Всё это можно сделать, просто попросив. list_workspaces() возвращает все пространства, которые ты можешь открыть, кто читает каждое и сколько в нём встреч, вместе с идентификаторами, которые нужны остальным функциям. create_workspace() и rename_workspace() делают то, что написано в названии. add_to_workspace() добавляет коллегу, и ассистенту велено сначала предупредить, что тот прочитает всё, что там уже лежит. add_meeting_to_workspace() добавляет одну из твоих встреч в пространство в дополнение к тем, где она уже лежит, а remove_meeting_from_workspace() убирает её из одного пространства. get_meeting() перечисляет все пространства, в которых лежит встреча. list_meetings() принимает идентификатор пространства и показывает только его встречи; встреча из нескольких пространств показывается в каждом. О двух действиях ассистент сначала спрашивает, потому что они лишают людей доступа. prepare_remove_from_workspace() называет, кто что перестанет читать (твой собственный идентификатор — способ самому выйти из пространства), а remove_from_workspace() принимает только выданный ею токен. prepare_delete_workspace() называет все встречи, которые ещё лежат в созданном тобой пространстве, а delete_workspace() убирает их оттуда; встреча, которой не было ни в каком другом пространстве, возвращается в «Личное» того, кто её записал. «Личное» и «Вся команда» удалить нельзя.

Ссылка на встречу

Встречу можно опубликовать по ссылке, которую откроет кто угодно, без аккаунта Chui и без входа. На странице видны название, дата, длительность встречи, названные тобой люди и сводка. Добавлять ли туда расшифровку и запись, решаешь ты. Chui считает, сколько раз открыли ссылку, но не учитывает запросы, в которых узнаёт программу, рисующую карточку предпросмотра, поэтому если вставить ссылку в WhatsApp, Slack или Telegram, число не изменится. Программа, которую Chui не узнаёт, всё равно учитывается, а открытие — ещё не прочтение. Это число — лучшее имеющееся у Chui свидетельство того, что кто-то заглянул, но не доказательство, что кто-то прочитал встречу.

Если человек, открывший ссылку, уже вошёл в Chui и может видеть эту встречу, страница сразу переводит его в Chui на эту встречу, а не оставляет читать копию. Все остальные читают страницу.

Заметки, которые ты набрал, остаются у тебя, что бы ты ни выбрал.

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

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

Какая часть встречи видна на странице

Под ссылкой три строки показывают, что получит тот, кто её откроет:

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

При двух более узких настройках записи на странице нет совсем: там нет адреса, который вёл бы к звуку. В режиме «Всё» запись доступна на странице, только пока работает сама ссылка: если отозвать ссылку или сузить её обратно, звук перестаёт быть доступным в ту же секунду, что и страница.

Встречу, звук которой Chui так и не получил, всё равно можно перевести в режим «Всё»; просто на её странице не будет проигрывателя.

Ссылка, отправленная до появления этой возможности, не изменилась. Каждая ссылка начинается со сводки и остаётся на ней, пока кто-нибудь намеренно её не переключит.

И то и другое можно попросить словами. share_meeting() даёт встрече адрес и возвращает его, чтобы ассистент мог сразу вставить его в сообщение, которое ты пишешь. Ассистенту велено назвать встречу и дождаться твоего «да», потому что тот, кто прочитает страницу до того, как ты передумаешь, её уже прочитал. Встречу, которую Chui ещё обрабатывает, опубликовать нельзя: за ссылкой пока ничего бы не было.

set_share_level() — это три строки выше, произнесённые вслух: попроси добавить на страницу расшифровку или запись или убрать что-то из них. Опубликовать эта функция ничего не может: встреча без действующей ссылки даёт ошибку. Поэтому ассистент, которого попросили «поделиться с расшифровкой», делает это в два шага, и если второй не удастся, страница окажется уже, чем ты просил, а не шире. Ассистенту велено, прежде чем спрашивать тебя, прямо сказать, что открывает режим «Всё»: твой голос и голоса всех остальных, которые сможет прослушать любой, у кого есть адрес.

Перед тем как отозвать ссылку, ассистент сначала спрашивает. prepare_unshare_meeting() называет встречу, адрес и сколько раз его открывали, и на этом этапе ещё ничего не произошло. Только после твоего «да» unshare_meeting() отзывает ссылку, причём отозвать может лишь ту, которую тебе только что показали. Это тот же вопрос, который задаёт приложение, показывая адрес рядом с кнопкой, и здесь он задаётся потому, что это действие нельзя отменить.

Что опубликовано прямо сейчас

На вопрос «какие из моих встреч может прочитать любой, у кого есть ссылка?» Chui отвечает сразу, а не перебирая встречи по одной. В приложении для этого есть отдельный экран — Настройки → Публичные ссылки. На нём перечислены все встречи с действующей ссылкой, когда каждая опубликована и сколько раз открывали страницу, и любую ссылку можно отозвать прямо там. Когда ничего не опубликовано, экран говорит об этом одной фразой, и это успокаивающий ответ.

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

Кто в команде читает встречу, определяют её пространства: см. add_meeting_to_workspace() выше.

Если встреча дошла до тебя, а не должна была

Встреча, которой поделился кто-то другой, — это чужой разговор, и сделать с ней можно две вещи. Обе внизу этой встречи, там, где у владельца была бы кнопка Удалить. На твоей собственной встрече их нет, потому что не на кого жаловаться и некого блокировать.

Пожалуйся. «Пожаловаться на встречу» принимает сообщение, которое ты напишешь своими словами, и отправляет это человеку в Chui, который это прочитает и ответит. Ни категорию выбирать, ни e-mail указывать не нужно. На странице, которую открывает публичная ссылка, то же самое есть в виде формы прямо на странице, и это важно: у того, кто её открывает, Chui обычно нет вовсе.

report_meeting() — тот же путь, только текстом. Это не report_problem(): та функция сообщает об ошибке в Chui (неверная сводка, оборвавшаяся запись) и попадает в другую очередь, которую читают другие люди. А эта — о человеке и его записи.

Сообщи о незаконном контенте. Если ты считаешь, что запись, хранящаяся в Chui, нарушает закон (любая запись, а не только та, которой поделились с тобой), Закон ЕС о цифровых услугах (Digital Services Act) позволяет подать официальное уведомление: через форму на chui.io/dsa/report, ссылка на которую есть на странице каждой опубликованной записи, или письмом на privacy@chui.io. В уведомлении нужны ссылка, объяснение, почему это незаконно, твоё имя и e-mail и заявление, что ты подаёшь его добросовестно. Ты получишь подтверждение по почте, уведомление рассмотрит человек, и тебе сообщат, какое решение принято и как его оспорить. Контактные данные есть на chui.io/dsa. report_illegal_content() — то же уведомление, только текстом.

Заблокируй человека. После блокировки ничто, чем он делится, до тебя больше не дойдёт, и ничто, чем делишься ты, не дойдёт до него, включая встречи, которыми уже поделились. Ничего не удаляется, не закрывается и не меняется: Chui просто перестаёт отвечать. В Настройки → Конфиденциальность перечислены все, кого ты заблокировал, и там же блокировку можно снять. После этого все встречи с обеих сторон возвращаются ровно такими, какими были.

Блокировка — не то же самое, что удаление коллеги из компании: она сохраняется, даже если тебя пригласят обратно.

prepare_block_person() называет, кто замолчит и сколько встреч перестанет видеть каждая сторона. block_person() принимает только выданный ею токен, так что заблокировать того, кого тебе сначала не показали, нельзя. unblock_person() снимает одну блокировку, а list_blocked() возвращает список, и в нём всегда только блокировки, которые поставил ТЫ: блокировку, поставленную против тебя, снять не тебе.

Отправка заметок по почте

Если записанная тобой встреча пришла из приглашения в календаре, карточка под её сводкой предлагает отправить сводку письмом участникам этого приглашения, но никогда не расшифровку, запись или набранные тобой заметки. «Проверить и отправить» показывает все адреса с галочками (галочку можно снять или добавить адрес вручную) и письмо ровно в том виде, в каком оно уйдёт. Письмо приходит от Chui от твоего имени, ответы приходят тебе, и ты получаешь копию. Ссылка на встречу есть в письме, только если ты уже её опубликовал. Число адресов, на которые один аккаунт может писать в день, ограничено.

prepare_send_notes() показывает письмо и всех получателей: участников приглашения или адреса, которые ты ей передашь. send_notes() принимает только выданный ею токен. Отправленное письмо вернуть нельзя.

После каждой встречи, в приглашении на которую были другие люди, уведомление «твоя встреча готова» тоже предлагает отправить им заметки и показывает, сколько получателей. Нажатие открывает экран отправки, и ничего не уходит, пока ты не нажмёшь «Отправить». Под этим экраном «Не спрашивать после каждой встречи» отключает предложение, пока ты снова не включишь его в Настройки → Напоминания о встречах. set_notes_offer() включает или выключает его текстом; get_account говорит, как сейчас.

Каждая сводка в Slack, Zapier или на веб-адрес, сама собой

В Настройках «Сводка — ещё и туда» принимает один веб-адрес на аккаунт: Slack incoming webhook, Zapier «Catch Hook», Make custom webhook или любой свой адрес https. Вставь его и нажми «Сохранить»: Chui сначала отправит туда одно проверочное сообщение и откажется от адреса, который его не принял. С этого момента, когда сводка встречи готова, Chui сам отправляет её туда: Slack получает сообщение в своём виде, любой другой адрес один документ JSON (название, сводка, ссылка, время начала, длительность в минутах, язык). Уходит только сводка, никогда расшифровка, запись или набранные тобой заметки; ссылка только если встреча уже опубликована. Каждая встреча уходит один раз, а голосовые заметки для себя никогда не уходят сами.

Сначала выполняется та же проверка приватности, что и для письма. Если она находит что-то, похожее на личное, не уходит ничего: встреча об этом говорит, а «Проверить и отправить» показывает каждый отмеченный фрагмент, чтобы ты оставил или убрал его перед отправкой. Если адрес перестаёт их принимать, Настройки говорят, что он ответил; «Сменить адрес» или «Остановить».

prepare_set_summary_destination() показывает, куда пойдёт каждая сводка, а set_summary_destination() принимает только выданный ею токен; stop_summary_destination() останавливает отправку. prepare_post_summary() показывает сводку одной встречи в том виде, в каком она уйдёт (с отмеченными фрагментами, на которые нужно ответить), а post_summary() отправляет её. get_account говорит, что подключено.

Адрес, который принимает только запросы с ключом, получает его в поле Ключ под адресом: ключ уходит с каждым запросом в заголовке Authorization и после сохранения нигде не показывается. test_summary_destination() отправляет одно пробное сообщение на сохранённый адрес с ключом. Если адрес не отвечает или говорит, что занят, Chui спрашивает ещё дважды; отказ (401 значит неверный ключ) не повторяется.

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

Под сводкой встречи «Обещано» показывает по карточке на каждое обещание, которое на ней дал ты: кому, что и к какому сроку. Если Chui может написать письмо, оно уже готово. «Посмотри письмо» показывает его ровно в том виде, в каком оно уйдёт: на адрес из приглашения или со страницы этого человека (или на тот, который ты один раз введёшь, — Chui запомнит его для этого человека), от Chui от твоего имени, с ответами и копией тебе. В обещании отправить файл сказано, какой именно: приложи один из файлов встречи или добавь новый и отправь, до 3,5 МБ на письмо. Если обещание сначала требует твоей работы (коммерческое предложение с ценой, договор), письма нет: карточка лишь говорит, что ты должен. «Скрой» убирает карточку, ничего не отправляя. Карточки — не список дел: они не собираются в общий список по всем встречам.

list_promises() перечисляет их, приводя каждое письмо слово в слово. prepare_send_promise() показывает письмо, получателя и файлы, а send_promise() принимает только выданный ею токен; prepare_dismiss_promise() и dismiss_promise() так же скрывают одно обещание. Отправленное письмо вернуть нельзя.

Отправка со своего адреса и обещания в твоём To Do

Начиная со сборки 225. Если твоя почта у Microsoft (Outlook, Microsoft 365), Chui может отправлять заметки и письма по обещаниям с твоего собственного адреса, а не как «ты через Chui». Тогда письмо остаётся в твоей папке «Отправленные», а ответы приходят прямо тебе. На экране отправки «Отправить с адреса <твой адрес>» один раз запрашивает разрешение у Microsoft, а потом выбор «От» переключает между твоим адресом и адресом Chui, и Chui запоминает твой выбор. То же разрешение позволяет добавить обещание, которое требует твоей работы, в Microsoft To Do: «Добавить в мой To Do» на его карточке создаёт задачу со сроком и ссылкой на встречу. Без твоего нажатия ничего не уходит и ничего не создаётся. Если компания не разрешает сотрудникам самим одобрять приложения, вместо этого появится страница, которую нужно переслать в её IT-отдел. С твоего собственного адреса в одно письмо помещается до 2,9 МБ файлов.

На iPhone (с #1800) «Добавь в мои задачи» спрашивает, куда её отправить: в Напоминания Apple — в стандартный список на этом iPhone — или в Microsoft To Do. «Всегда туда» запоминает ответ на всех твоих устройствах; «сменить» рядом с кнопкой спрашивает снова, а Настройки → Публичные ссылки → «Спрашивать каждый раз» забывает выбор. До Напоминаний Apple нельзя добраться через интернет, поэтому напоминание записывает сам твой iPhone и только по твоему нажатию: iOS один раз спрашивает, можно ли Chui пользоваться Напоминаниями, и Chui добавляет одно напоминание — название, срок, для кого оно и ссылку на встречу — и никогда не читает, не меняет и не удаляет остальные. Если ты ответил «нет», карточка подскажет, где это включить. На Android, Windows и chui.io обещания попадают в Microsoft To Do. set_todo_destination() выбирает место набором текста.

Обещание, которое представляет собой список, например список покупок, попадает в твой список дел одной задачей, где каждый пункт — отдельный шаг в том порядке, в каком его назвали, а на карточке сначала показан заголовок, а под ним пункты более светлым шрифтом (начиная со сборки 239).

connect_mailbox() говорит, подключён ли ящик, а если нет, где его подключить: этот шаг ассистент за тебя сделать не может. set_send_from("mine") или set_send_from("chui") выбирает адрес. prepare_add_task() показывает задачу, в которую превратится обещание, а add_task() её создаёт. prepare_disconnect_mailbox() и disconnect_mailbox() отключают ящик, но и после этого Microsoft продолжает показывать Chui на myaccount.microsoft.com, пока ты не удалишь его там.

Перед отправкой Chui (начиная со сборки 224) проверяет сводку на фрагменты, которые выглядят личными (цена, замечание о ком-то, что-то из твоих заметок, что-то названное конфиденциальным), и показывает каждый на своём месте с объяснением: оставь его или убери из того, что уйдёт. Ничего не решается за тебя, и твоя сводка не меняется. Потом «Что отправлено» на той же карточке показывает, когда письмо ушло, кому и что именно они получили.

prepare_send_notes() также перечисляет фрагменты, которые выглядят личными, и объясняет почему. Вызови её снова с remove, указав фрагменты, которые ты убрал, и показанное письмо будет той версией, которая уйдёт. get_shared_version() показывает, что было отправлено.