Создание компании и проекта
Начните с рабочего пространства, затем откройте доступ команде.
Создайте компанию и проект
- Войдите через Google или по почте и подтвердите адрес. Без компании вы попадаете на страницу компаний (
Companies & invitationsв меню аккаунта); нажмите тамcreate your own company. - Пройдите два шага:
Company(введитеCompany nameи нажмитеCreate company) иProject(на экранеYour first projectвведитеProject nameи нажмитеCreate project). Рабочее место открывается в новом проекте. - Для следующего проекта нажмите
changeрядом с названием проекта вверху боковой панели, затемNew project; введитеNameи нажмитеCreate project. Новый проект сразу откроется. ВSettings → Generalуказаны его название,Project IDиGame icon: загрузите ту же картинку, что и иконка приложения игры. Команда видит её в меню проектов и в предпросмотре виджета, а игроки — иконку, которую SDK берёт из самой игры. Создавать и переименовывать проекты и задавать иконку может только владелец компании. - Откройте доступ команде в
Settings → Teamкаждого проекта: нажмите круглую кнопку+и укажите почту и роль. Другого владельца компании приглашают вSettings → Members. Сотрудник присоединяется по приглашению и не создаёт отдельную компанию.
Игровой сервер не нужен для создания и использования проекта. Новый проект получает стандартные категории обращений и собственный командный ключ Cluefolk; настройки между проектами не копируются, поэтому каждый проект настраивается отдельно.
Вход и приглашение в компанию
- Откройте cluefolk.com, нажмите
Sign inи выберитеGoogleилиContinue with email; при входе по почте новые пользователи регистрируются на следующей странице. Подтвердите адрес по ссылке из письма и при необходимости войдите повторно. - Чтобы присоединиться к команде, войдите именно с тем адресом, на который пришло приглашение. Откройте ссылку из письма и нажмите
Accept invitationили примите приглашение вCompanies & invitations. - Приглашения проверяются при входе и обновлении страницы. Если владелец или администратор только что пригласил вас, обновите страницу.
- Без компании вы попадаете на страницу компаний — её же открывает
Companies & invitationsв меню аккаунта. НадписьYou haven’t joined a company yetозначает, что вы ещё не присоединились к компании. Дождитесь приглашения или нажмитеcreate your own company, чтобы создать свою компанию и стать её владельцем.
Аккаунт Google или подтверждённая почта сами по себе не дают доступа к чужой компании.
Личный аккаунт, компания и проект
- Личный аккаунт существует отдельно от вашей роли в проектах компании. Можно состоять в нескольких компаниях и иметь разные роли в разных проектах.
- Перед действиями проверьте название проекта вверху боковой панели, под логотипом Cluefolk. Чтобы перейти в другой проект, нажмите
changeрядом с ним: в небольшом меню перечислены проекты компании с вашей ролью, текущий отмечен галочкой; владельцы компании видят там такжеNew project. Проект — это пространство поддержки одной игры: его игроки, обращения, настройки, подключение сервера и ключи принадлежат только ему и никогда не делятся с другими проектами. - Под переключателем находятся раздел
Support deskс пунктамиInbox,Incidents,PlayersиReportsи разделViews, который открывает Inbox с готовым фильтром. Администраторы проекта и владельцы компании видят также ссылкуSettingsвнизу боковой панели:Membersкомпании и настройки выбранного проекта. - Чтобы сборки для разработки и QA не смешивались с настоящими игроками, создайте для них отдельный проект, например «Space Farm» и «Space Farm QA». У каждого проекта свой ID, свои игроки и обращения.
- Чтобы перейти в другую компанию, откройте меню аккаунта справа вверху (ваше имя). В нём перечислены ваши компании с вашей ролью, текущая отмечена галочкой; выберите другую компанию, чтобы открыть её. В этом же меню есть
Account settings,Companies & invitationsиSign out. Значок книги рядом открывает это руководство. - В
Account settingsсобраны личные настройки:Profile(имя и почта),Appearance— системная, светлая или тёмная тема — иPrivacyс кнопкойCookie settingsи ссылкой на политику cookies. - В
Profileвведите имя и фамилию и нажмитеSave. Команда видит имя и фамилию, игрок — только имя на ваших ответах, напримерAnna · Support team. Пока имя не сохранено, игрок видитSupport team.
Доступ выдаётся на каждый проект отдельно. Если доступ отозвали, попросите владельца компании или администратора проекта снова добавить вас в Settings → Team.
Участники и владельцы компании
- Владельцу компании: откройте
Settingsвнизу боковой панели и выберитеMembersв разделе с названием вашей компании. На странице перечислены участники компании и приглашения владельцев (Invitations); участники, не являющиеся владельцами, её не видят. - Роль в компании —
OwnerилиMember. Владелец имеет полный доступ ко всем проектам. Владельцев может быть несколько; последнего владельца нельзя понизить или удалить. - Доступ каждого участника к проектам показан только для просмотра. Чтобы выдать доступ к проекту или изменить роль в нём, откройте
Settings → Teamэтого проекта. - В
Settings → Membersукажите email и явно выберите Owner, Admin или Operator. Для Admin и Operator также выберите доступные проекты. Роль автоматически не выбирается. RemoveиConfirm removalисключают человека из компании и всех её проектов. Его аккаунт и доступ к другим компаниям сохраняются.
Снятие доступа к проекту также исключает человека из очередей этого проекта и снимает назначенные ему обращения.
Кому доступны действия
Support desk — рабочее место поддержки. В Settings находятся Members компании (только для владельцев) и настройки выбранного проекта; этот раздел видят только владельцы компании и администраторы проекта, у оператора его нет. Личные настройки — в Account settings в меню аккаунта. Владельцу компании доступно всё во всех проектах; участник получает Admin или Operator в конкретном проекте в Settings → Team.
Настройка проекта
Каждый проект настраивает владелец или администратор. Подключение игрового сервера необязательно.
Игроки и вход
- Выберите нужный проект в переключателе боковой панели и откройте
Settings → Server connection. В блокеPlayers and sign-inвыберитеWho can contact support. - По умолчанию выбран вариант
Everyone. Players signed in through the game are verified; others write anonymously.SDK узнаёт анонимного игрока по установке приложения, поэтому история сохраняется между запусками даже без игрового backend. - Чтобы подтверждать игроков, игровой backend после входа игрока подписывает краткоживущий identity-токен ES256. Вставьте публичный ключ backend (PEM или JWK) в
Identity signing keysи нажмитеAdd key. Issuer (iss) и audience (aud) токена показаны над ключами. - Когда игрок входит через игру на той же установке, его анонимные обращения переходят в подтверждённый аккаунт.
- Вариант
Only players signed in through the game.требует хотя бы одного identity-ключа. Игрок без действительного identity-токена тогда не сможет открыть поддержку.
Cluefolk хранит только публичные ключи. Для ротации добавьте новый ключ, переключите на него сервер, затем удалите старый. Последний identity-ключ нельзя удалить, пока вход обязателен.
Подключите игровой сервер при необходимости
- Откройте
Settings → Server connection. Обращения, анонимные игроки, identity-токены и ручные бейджи работают без адреса игрового сервера. - Чтобы синхронизировать атрибуты для автоматических бейджей, доставлять подарки, получать игровые события и запрашивать уведомления, укажите
Game server URL: HTTPS-адрес, напримерhttps://api.yourgame.com, без пути и параметров. - В
Profile signing keysдобавьте публичный ключ, которым сервер подписывает снимки атрибутов и ответ на подключение. Для подключения нужен хотя бы один ключ профилей. Cluefolk command keysпоказываетJWKS URL, issuer и audience. Cluefolk подписывает каждый запрос к вашему серверу (подарки, профили, события, push) ключом ES256, а сервер проверяет его по JWKS URL, который кэшируется до 5 минут.Rotate command keyиRotate nowсразу переводят новые запросы на новый ключ; предыдущий ключ остаётся опубликованным.Download server configсохраняетcluefolk-server.jsonс идентификаторами, issuer, audience, JWKS URL и публичными командными ключами Cluefolk. Секретов в нём нет; передайте файл разработчику backend вместе с руководством по интеграции.- Разработчик реализует
/cluefolk/connect,/cluefolk/profile,/cluefolk/gifts,/cluefolk/eventsи/cluefolk/pushпо мере необходимости. НажмитеCheck connection, чтобы проверить сервер и загрузить подписанный каталог атрибутов; после этого кнопка называетсяRefresh catalog.
Закрытые ключи остаются на игровом backend: они не должны попадать в приложение, WebView, публичный репозиторий или параметры SDK. После смены адреса нужна новая проверка.
Обновление каталога атрибутов
- Откройте
Settings → Attributes. ТаблицаPlayer attributesпоказывает название, ключ и тип каждого атрибута. - После изменений на игровом сервере нажмите
Refresh catalog. Принятый каталог сразу появится в таблице. Он также отображается вServer connection. - Определения атрибутов и значения игроков приходят с игрового сервера. На их основе Cluefolk строит карточки игроков и автоматические бейджи; вручную атрибуты не создаются.
- Поддерживаются типы
string,integer,decimal,boolean,datetimeиenum. Если нужно изменить тип существующего атрибута, разработчик должен завести новый ключ.
Неудачное обновление не заменяет последний принятый каталог. Отсутствующие, устаревшие и недоступные по правам данные нельзя считать нулём или подтверждённым отрицательным значением.
Автоматические и ручные бейджи
- Администратору: откройте
Settings → Badgesи нажмите+над списком. Задайте название, иконку и цвет; ключ и то, кто в команде видит бейдж, — вMore options. - В
How players get itвыберитеAutomatically, from game dataи опишитеWho gets itпо атрибутам игрового сервера — илиAn operator sets it on the player card.Check playersпоказывает, сколько игроков подходит.Saveсохраняет черновик,Publishвключает бейдж. - Для бейджа, который назначает поддержка, выберите
An operator sets it on the player cardи оставьтеEveryone on the projectвMore options, затем сохраните и опубликуйте. Операторы фильтруют Inbox по бейджам вFilters → Players.
Автоматические бейджи следуют только своим правилам. Оператор не может назначать бейджи, видимые только администраторам. При публикации смены режима с ручного на автоматический бейдж снимается с игроков, которым его назначили.
Подарки и их лимиты
- Подаркам нужен подключённый игровой сервер: без него
Settings → Giftsтолько объясняет, как его подключить. Администратору: на вкладкеCatalogнажмите+ Create a gift, задайте название и описание для игрока, команду игрового сервера и что выдать (JSON), затемCreate gift. Команду и содержимое согласуйте с разработчиком игрового сервера. - Чтобы изменить подарок, нажмите
Change →и сохраните новую версию; уже отправленные подарки остаются с той версией, с которой их отправили. - Нажмите
Limits & approval →.Operators can send this giftопределяет, видят ли подарок операторы.Gifts per player (0 = no limit)заWithin, daysдействует для всех, включая администраторов. - Для операторов задайте
Gifts per operator per day (0 = no limit)— жёсткий лимит — и при необходимостиAsk an administrator to approve larger volumes: когда оператор за 24 часа отправил выбранное число таких подарков, следующие запросы ждут подтверждения (0 — подтверждается каждый запрос). Второй подарок в том же обращении всегда ждёт администратора. НажмитеSave limits.
Администраторам подтверждение не нужно. Disable gift запрещает выбирать подарок заново, но не отзывает уже поставленную в очередь операцию. Подарки получают только игроки, вошедшие через игру.
Подтверждение подарков и отчёт
- Администратору: откройте
Settings → Gifts → Approvals. На вкладке видно число ожидающих запросов, подарок, игрок, автор запроса и причина. - Нажмите
Approve and send, чтобы поставить доставку в очередь, или заполнитеDecision noteи нажмитеDecline; для отказа заметка обязательна.Open conversation ↗показывает контекст. - Собственный запрос решает другой администратор. При подтверждении лимиты на игрока проверяются повторно.
- Откройте
Reportи выберите период: по каждому оператору и подарку видно, сколько начислено, ожидает, отклонено или завершилось ошибкой и для скольких игроков.
Оператор видит решение в истории подарков игрока. Отклонённый запрос никогда не доставляется.
Добавление и управление командой проекта
- Выберите нужный проект в переключателе боковой панели и откройте
Settings → Team— доступ к проекту выдаётся здесь или при приглашении через Members. На странице перечислены владельцы компании (только просмотр, все проекты), участники с их ролями и приглашения этого проекта (Invitations). - Чтобы добавить человека, нажмите круглую кнопку
+(Add to the project), в окне укажитеEmail address, выберитеRoleи нажмитеAdd to project. Тот, кто уже состоит в компании, сразу получает доступ без письма («… now has access.»); остальным приходит приглашение по почте, оно действует 7 дней («Invitation sent to …»). Администратор добавляет операторов; добавить admin может только владелец компании. - Приглашённый входит с этой почтой и принимает приглашение; он становится участником компании с доступом к этому проекту.
- Владелец может менять здесь роль участника.
Revoke accessиConfirm revokeснимают доступ только к этому проекту;Revoke invitationотменяет ожидающее приглашение.
Admin настраивает проект и может работать с обращениями. Operator использует рабочее место поддержки. Состав компании и её владельцев владелец компании ведёт в Settings → Members.
Очереди, категории и параметры поддержки
- Откройте
Settings → Queues & workflow. ВQueuesсоздайтеNew queue, выберитеMembers, задайтеOpen conversations per operator, при необходимости включитеAssign automaticallyи нажмитеSave queue. Новые обращения получают участники, у которых открыт Cluefolk, — сначала наименее загруженные. - В
Conversation fieldsдобавьте поля для команды или, сAsk the player, для формы игрока. Ключ и тип поля после создания не меняются. - В
Support settingsнастройте запрос оценки,Reopen window, days,Retention, days,Reply SLA, business minutes,Time zoneиBusiness hours(без интервалов — круглосуточно). Player messagesограничивает число сообщений игрокаPer minuteиPer hour(по умолчанию 6 и 60). Сообщения сверх лимита отклоняются, а виджет показывает, когда игрок сможет написать снова.Conversation categoriesигрок выбирает по желанию. Меняйте названия, порядок кнопками ↑/↓, добавляйте категорию с ключом и названием через+ Categoryили снимите отметку, чтобы отключить её. Сохранённые ключи не меняются; отключённые категории остаются у существующих обращений. НажмитеSave settings.
У игрока одновременно одно активное обращение: новые сообщения попадают в него, а решённое обращение открывается снова в пределах срока повторного открытия. Сохранённое представление Inbox — это фильтр, а не правило автоматического распределения.
Оформление виджета для игроков
- Откройте
Settings → Widget. Задайте пять базовых цветов для каждой темы:Accent(шапка и сообщения игрока),Action(кнопки и ссылки),Background,Surface(карточки и сообщения команды) иText. Приглушённый текст, рамки и текст на цветных кнопках вычисляются по контрасту и показаны в строкеDerived. В файле только цвета и содержимое. Логотип — иконка приложения игры, её берёт SDK (см.Logo); чтобы увидеть её в предпросмотре, загрузитеGame iconвSettings → General. Затем настройте блоки — приветствие, темы, контакт. - Каждая тема открывает чат с одной из категорий обращений этого проекта. Выберите её в
Category; список берётся изQueues & workflow. - Проверьте живой предпросмотр в светлой и тёмной теме и нажмите
Save, чтобы сохранить эту версию для команды. Download for buildсохраняет<ID>_widget.json, где<ID>— первые 16 символов ID проекта. Разработчики кладут его в билд игры и передают его текст SDK; игроки увидят изменения только в следующем билде с новым файлом.Import fileзагружает такой файл в редактор.
Язык рядом с Light/Dark переключает только предпросмотр администратора. Покупки и Награды разделены; у Покупок золотая рамка. Show “Talk to the team” button по умолчанию отключено; кнопку можно включить перед экспортом темы.
Быстрые ответы
- В
Settings → Quick repliesхранятся быстрые ответы команды: у каждого есть название, язык и текст. Администратор добавляет ответ кнопкой+над списком, а выбрав ответ в списке, редактирует или удаляет его; оператор вставляет их при подготовке ответа вInbox.
{{player.id}}, {{conversation.id}} и {{agent.name}} в тексте подставляются при вставке ответа; {{agent.name}} — ваше имя.
Проверка перед запуском поддержки
- Решите, кто может обращаться в поддержку, в
Players and sign-in. Если используется игровой сервер, убедитесь, что подключение подтверждено, а каталог содержит нужные ключи и типы атрибутов. - Опубликуйте необходимые подарки и бейджи, задайте лимиты подарков, пригласите операторов и проверьте их участие в очередях.
- На тестовом игроке отправьте сообщение, получите публичный ответ и запросите подарок. Проверьте фактическое начисление в игре, а не только статус очереди.
- В
Server connectionпроверьтеGame eventsиNotifications. ВTest pushкнопкаSend testзапрашивает push через игровой сервер для игрока, вошедшего через игру и получившего публичный ответ поддержки. - В
Reportsрабочего места смотрите работу поддержки, в том числеCountries— карту и список стран, в которых Cloudflare увидел игроков в начале обращений. ВSettings → Audit— записанные изменения. Если поддержку готовили в отдельном проекте для сборок разработки, так же настройте и проверьте релизный проект: настройки между проектами не копируются.
Cluefolk передаёт запросы уведомлений игровому серверу. Ключи FCM/APNs и работа с токенами устройств относятся к интеграции игры, а не к браузеру оператора.
Работа оператора
Для операторов: короткие пошаговые инструкции на всё, что нужно в смене.
Начало смены
- Войдите на cluefolk.com. Вверху левой панели написано, с какой игрой вы работаете. Если игра не та, нажмите
changeрядом с названием и выберите нужную. - Откройте
Inbox. Слева — список обращений, посередине — открытое обращение, справа — карточка игрока. - Не закрывайте вкладку Cluefolk во время работы. Если администратор включил автоматическое распределение, новые обращения достаются тем, у кого Cluefolk открыт, — сначала самым свободным.
Фильтр статусов допускает несколько вариантов. All active исключает Resolved; включите Resolved для просмотра истории. Начальная очередь — New unanswered, без автоматически открытого диалога. × закрывает только просмотр и сохраняет черновик.
Как найти обращение
- Статусы:
New— публичного ответа оператора ещё нет;In progress— первый ответ закрепил диалог за оператором;Needs a replyиWaiting for playerвыставляются вручную;Awaiting confirmation— ждём решения игрока;Resolved— история только для чтения. - Фильтр статусов допускает несколько вариантов.
All activeисключает Resolved; включите Resolved для просмотра истории. Начальная очередь —New unanswered, без автоматически открытого диалога. × закрывает только просмотр и сохраняет черновик. - Для поиска введите ID игрока, слово из переписки, версию игры или системы телефона, например
2.4илиiOS 17.⌘K(Mac) илиCtrl K(Windows) сразу переводит курсор в поиск. Filtersменяет порядок (например,Newest first— сначала новые) и сужает список по оператору, категории, приоритету или тегу. В разделеPlayers— по тому, кто игрок: нажмите+ Conditionи выберите бейдж или игровые данные, напримерLevelAt least10или★ VIPHas. Активные фильтры видны плашками под поиском,×убирает фильтр. Чтобы сохранить набор фильтров, введите название вSave as a view…— вид появится в левой панели в разделеViews.
Имя с иконкой человечка на обращении — это его оператор. Нет имени — обращение свободно.
Ответ игроку
- Откройте обращение без оператора и прочитайте его. Карточка игрока справа показывает, кто это (см. «Проверка игрока»).
- Проверьте, что над полем ввода выбрана вкладка
Reply, и напишите ответ. Чтобы вставить готовый ответ, откройтеQuick replyи выберите шаблон. - Нажмите Enter или
Send reply. Shift+Enter — новая строка. - Первый публичный ответ закрепляет обращение за вами и выставляет
In progress. Следующие ответы сохраняют выбранный вручную рабочий статус.
Оператор видит свои обращения и новые неназначенные обращения без ответа. Чужой диалог может просматривать только admin или owner. Для ответа и приватной заметки он должен забрать диалог на себя; также можно передать его другому оператору.
Передать обращение коллеге
- Откройте своё обращение.
- Вверху откройте
Operatorи выберите коллегу. Люди с пометкойOwnerилиAdminтоже могут отвечать игрокам. - Теперь игроку отвечает только коллега. Вы по-прежнему можете писать личные заметки.
- Чтобы вернуть обращение всей команде, выберите
Unassigned.
Владельцы и администраторы могут забрать любое обращение, выбрав You в Operator. Оператор не может забрать чужое обращение: попросите коллегу или администратора передать его вам.
Написать команде (личная заметка)
- Над полем ввода выберите
Private note. Поле станет жёлтым: игрок этот текст не увидит. - Чтобы позвать коллегу, выберите его в
Mention. Он найдёт заметку в разделеMentioned me. - Нажмите Enter или
Add note.
Заметки можно писать в любом обращении, даже в обращении коллеги.
Проверка игрока
- Карточка игрока — справа. На узком экране нажмите иконку человечка вверху обращения.
✓ Verified player— игра подтвердила аккаунт.Anonymous— игрок написал, не входя в аккаунт, и показан какGuestс коротким кодом.Player ID (not verified)— игрок ввёл ID сам; не опирайтесь на него в вопросах аккаунта.- В блоке
Player— платформа, версия системы, устройство, версия и билд игры, язык и страна. Conversations— все обращения игрока, новые сверху. Нажмите на обращение, чтобы открыть его.Game attributes— данные из игры, например уровень или покупки. Пустое или старое значение не означает ноль.- Нажмите на любое значение в карточке, например на ID игрока, чтобы скопировать его — скажем, для поиска игрока в других системах. Появится
Copied.
Отметить игрока бейджем
- В карточке игрока нажмите
+ Badgeи выберите бейдж. Он появится сразу. - Чтобы убрать бейдж, нажмите крестик на нём.
Бейджи без крестика ставятся автоматически по данным игры, вручную их не изменить. Если нужного бейджа нет в списке, обратитесь к администратору.
Отправить подарок
- Подарки доступны только игрокам, которые вошли через игру (
✓ Verified player). В обращении нажмитеSend a giftпод полем ввода. - Выберите подарок, напишите причину для команды (например, «пропала покупка, заказ 123») и нажмите
Confirm and send gift. - Если появилось
Sent for approval, подарок сначала одобряет администратор. Решение появится на вкладкеGiftsв карточке игрока. - На вкладке
Giftsвидно, принял ли игровой сервер подарок. После этого игрок увидит подарок в чате; когда он появится в самой игре, решает игра.
Не отправляйте подарок повторно, если он идёт долго: это будет второй подарок. Если статус Unknown, нажмите Check delivery again; если не помогло, сообщите администратору.
Много игроков с одной проблемой
- Когда много игроков пишут об одной проблеме (например, не открывается магазин), соберите их обращения в инцидент. Откройте
Incidents, нажмите+ Create an incident, введитеIncident titleиAutomatic acknowledgement— сообщение, которое игроки получат сразу, — и нажмитеCreate incident. - Чтобы добавить обращение, откройте его, нажмите
+ Add to incident, выберите инцидент и нажмитеAdd. Для новой проблемы выберитеNew incident…, опишите её и нажмитеCreate and add. Чтобы добавить сразу несколько, отметьте их галочками в списке обращений и выберите инцидент вAdd to incident…. - Игроки, которым ещё не отвечали, сразу получают автоматическое сообщение.
- Чтобы написать им всем, откройте инцидент и используйте
Message affected players. - Администратор отправляет рассылку только в активные обращения. Завершение инцидента запрашивает подтверждение у каждого игрока. Отказ оставляет его диалог активным. Если активных обращений нет, формы рассылки нет.
Delete incidentтребует подтверждения и сохраняет историю разговоров.
Администратор отправляет рассылку только в активные обращения. Завершение инцидента запрашивает подтверждение у каждого игрока. Отказ оставляет его диалог активным. Если активных обращений нет, формы рассылки нет. Delete incident требует подтверждения и сохраняет историю разговоров.
Завершить обращение
- Когда вопрос решён, нажмите отдельную кнопку
Resolved. Игрок получит запрос подтверждения решения. - При согласии игрок ставит оценку или пропускает её. Диалог сохраняется в истории только для чтения; следующее сообщение начинает новый разговор.
- Отказ продолжает тот же диалог со статусом
Needs a replyи отмечает неудачную попытку у предложившего завершение оператора. Без ответа через 24 часа диалог завершается с отдельным результатом timeout. Новое сообщение до подтверждения отменяет запрос.
Фильтр статусов допускает несколько вариантов. All active исключает Resolved; включите Resolved для просмотра истории. Начальная очередь — New unanswered, без автоматически открытого диалога. × закрывает только просмотр и сохраняет черновик.
Заблокировать игрока-нарушителя
- В карточке игрока нажмите
Ban player, при желании укажите причину и подтвердите кнопкойBan player. - Игрок больше не сможет писать в поддержку этой игры. Его обращения сохранятся.
- Чтобы разблокировать, нажмите
Unban player.
Выгрузить или удалить данные игрока
- Владельцы и администраторы: откройте
Players, выберите игрока и раскройтеPrivacy. Export player dataготовит файл. Когда у запроса появитсяcompleted, нажмитеDownload JSON.- Чтобы удалить данные, введите ID, который просит страница (ID игрока в игре или Cluefolk ID для анонимного игрока), и нажмите
Erase player data.
Удаление стирает сообщения, атрибуты и изображения, отменить его нельзя. Позже игрок может написать снова как новый игрок.
Интеграция игрового клиента
Подключение Android, iOS и Unity к проекту игры по его ID. Игрок начинает анонимно; вход через игру необязателен.
Проект, авторизация и жизненный цикл SDK
- Используйте точный ID проекта — он указан в
Settings → General(Copyкопирует его; ID поставляется в игре и не является секретом) и в конфигурации сервера. Если у вас отдельный проект для сборок разработки, эти сборки используют его ID, а релизные — ID релизного проекта. Виджет встроен в SDK, поэтому обязателен только ID проекта; API по умолчанию —https://cluefolk.com. В шапке виджета показывается иконка приложения игры; чтобы взять другую картинку, передайте имя ресурса (logoResourceна Android,logoImageNameна iOS,LogoResourceв Unity). - Инициализируйте SDK один раз и дождитесь готовности. После этого поддержка работает без входа: игрок анонимен, его узнают по секрету установки в защищённом хранилище устройства.
- Положите файл
<ID>_widget.jsonизSettings → Widget → Download for buildв билд, загрузите его конструктором темы (Appearance.Builder(json).build()) и передайте вsetAppearance(Unity:SetAppearance) после готовности SDK и до первого открытия. Тот же конструктор без файла задаёт цвета, тексты и поворот экрана кодом. Без этого виджет показывает оформление по умолчанию: сервер его не присылает. - Вход необязателен. После входа игрока в игру backend подписывает краткоживущий (не дольше 5 минут) одноразовый ES256
cluefolk-identity+jwt:sub— игровой ID,issиaudсовпадают сPlayers and sign-in. Передайте его вloginWithIdentity; анонимная история этой установки перейдёт в аккаунт. - Provider identity-токенов необязателен: если он задан, SDK запрашивает свежий токен у уже авторизованного backend каждый раз, когда нужна новая сессия (сессия действует 30 дней и продлевается при использовании). Если токен не получен, поддержка остаётся доступной анонимно, а callback ошибок получает
IDENTITY_UNAVAILABLE. Если проект требует вход, анонимная сессия завершается ошибкойIDENTITY_REQUIRED. openоткрывает главный экран поддержки.openConversationс пустым ID открывает текущий чат игрока; первое сообщение в нём начинает обращение. Обновляйте игровой индикатор через callback непрочитанных.- При выходе или смене игрового аккаунта вызывайте
logout;closeтолько закрывает окно поддержки.
gameApi, identityToken, recentLogText, supportListener, Activity и view controller в примерах предоставляет сама игра; это не дополнительные методы Cluefolk. SDK открыты под лицензией MIT: Android — в Maven Central, iOS — через Swift Package Manager или XCFramework, Unity — по Git URL (github.com/cluefolk).
Android · Kotlin и Java
- Минимум — Android 7.0 (API 24),
compileSdk34 или новее, Android Gradle Plugin 7.4 или новее и AndroidX. Добавьтеcom.cluefolk:android-sdkиз Maven Central (ниже): он подключит AndroidX Activity, Core и WebKit и свои правила R8. - Реализуйте
Cluefolk.EventListenerи назначьте его до инициализации. Среди callback:onCluefolkReady,onCluefolkUnreadChanged(count),onCluefolkIdentityTokenRequired(requestId)иonCluefolkError(code). Инициализируйте SDK на UI thread с Application context. - После
onCluefolkReadyили когдаisReady()вернёт true, кнопка поддержки может вызыватьopen(activity)для анонимного игрока. Если игрок вошёл в игру, передайте токен из ответа игрового входа вloginWithIdentity; ошибка поддержки не должна ломать вход в игру. - Инициализация асинхронно загружает локальные credentials. Остальные публичные методы допускают вызов с любого потока; callbacks приходят в main looper. Подключите получение push и обработку нажатия по инструкции ниже.
dependencies {
implementation("com.cluefolk:android-sdk:0.3.2")
}import com.cluefolk.sdk.Cluefolk
Cluefolk.setEventListener(supportListener)
Cluefolk.initialize(application, Cluefolk.Options(projectId = "YOUR_PROJECT_ID"))
// Optional: only if your game issues Cluefolk identity tokens.
Cluefolk.setIdentityTokenProvider { callback ->
gameApi.fetchCluefolkIdentity { token, error ->
callback.complete(token, error)
}
}// After onCluefolkReady(); works without sign-in (anonymous player):
Cluefolk.open(activity)
Cluefolk.openConversation(activity, "") // the player's current chat
// Optional, after successful game login:
Cluefolk.loginWithIdentity(identityToken) { error ->
// Do not fail game login because of support.
}
Cluefolk.setConversationContext("""{"screen":"settings"}""")
// Game account sign-out:
Cluefolk.logout()Исходный код, список изменений и релизы: github.com/cluefolk/android-sdk (лицензия MIT).
iOS · Swift и Objective-C
- Минимум — iOS 15. В Xcode выберите
File → Add Package Dependencies…, введитеhttps://github.com/cluefolk/ios-sdkи добавьте библиотекуCluefolkв target приложения. Без Swift Package Manager добавьтеCluefolk.xcframeworkиз релизов репозитория сEmbed & Sign. - Храните сильную ссылку на объект
CluefolkEventListener: свойство listener у SDK — weak. Назначьте listener и вызовитеinitialize; provider identity-токенов необязателен. - Все публичные вызовы выполняйте на MainActor. Инициализация возвращает управление, пока credentials читаются в фоне; перед открытием поддержки или входом дождитесь
onCluefolkReady()илиisReady. - Затем кнопка поддержки может вызывать
open(from:)с актуальным view controller; игрок остаётся анонимным, пока не выполненloginWithIdentity. CallbackonCluefolkUnreadChangedобновляет индикатор непрочитанных. - Для Objective-C/Objective-C++ импортируйте
Cluefolk/Cluefolk-Swift.h; доступны именаCLFCluefolk,CLFOptionsиCLFEventListener. События уведомлений передавайте на MainActor.
.package(url: "https://github.com/cluefolk/ios-sdk", from: "0.3.2")import Cluefolk
// MainActor; retain supportListener in your app.
let sdk = Cluefolk.shared
sdk.eventListener = supportListener
try sdk.initialize(CluefolkOptions(projectId: "YOUR_PROJECT_ID"))
// Optional: only if your game issues Cluefolk identity tokens.
sdk.setIdentityTokenProvider { completion in
gameApi.fetchCluefolkIdentity { token, error in
completion(token, error)
}
}// After onCluefolkReady(); works without sign-in (anonymous player):
sdk.open(from: presentingViewController)
sdk.openConversation("", from: presentingViewController) // current chat
// Optional, after successful game login:
sdk.loginWithIdentity(identityToken) { error in
// Do not fail game login because of support.
}
do {
try sdk.setConversationContext(["screen": "settings"])
} catch {
// Report a support configuration error to the app.
}
// Game account sign-out:
sdk.logout()В релизных сборках используются доверенные HTTPS-адреса. Исходный код, список изменений и релизы: github.com/cluefolk/ios-sdk (лицензия MIT).
Unity 2022.3 LTS и новее
- В
Window → Package Managerвыберите+ → Add package from git URL…и введитеhttps://github.com/cluefolk/unity-sdk.git#0.3.2или добавьте строку ниже вPackages/manifest.json. - В Player Settings задайте для Android
Minimum API Level24 иTarget API Level34 или выше, для iOSTarget minimum iOS Version15.0 или выше. Если значения ниже, сборка остановится с сообщением. - Настраивать Gradle и Xcode не нужно: Android-сборка подключает
com.cluefolk:android-sdkтой же версии из Maven Central и включает AndroidX, iOS-сборка подключает и встраиваетCluefolk.xcframeworkиз пакета. - Вызывайте фасад с Unity main thread. Подпишитесь на
Cluefolk.Event, затем инициализируйте SDK. СобытиеreadyустанавливаетCluefolk.IsReady; после этогоOpen()работает для анонимного игрока, аLoginWithIdentityAsyncпри необходимости привязывает игровой аккаунт. SetIdentityTokenProviderнеобязателен. Если provider бросает исключение или возвращает пустой токен, игрок остаётся анонимным, аEventсообщаетerrorс кодомIDENTITY_UNAVAILABLE. Для индикатора используйте полеcountсобытияunreadChanged; при уничтожении владельца снимите обработчик.- Методы фасада сразу проверяют аргументы и бросают
ArgumentException. Проверяйте сборки Android/iOS Player: в Editor и на desktop WebView поддержки не открывается, а компиляция C# не проверяет устройство или IL2CPP.
"com.cluefolk.sdk": "https://github.com/cluefolk/unity-sdk.git#0.3.2"using CluefolkSDK;
Cluefolk.Event += OnCluefolkEvent;
Cluefolk.Initialize(new CluefolkOptions { ProjectId = "YOUR_PROJECT_ID" });
// Optional: only if your game issues Cluefolk identity tokens.
Cluefolk.SetIdentityTokenProvider(
() => GameApi.GetFreshCluefolkIdentityAsync());// After Event("ready", ...); works without sign-in:
Cluefolk.Open();
Cluefolk.OpenConversation(); // the player's current chat
// Optional, after successful game login:
try {
await Cluefolk.LoginWithIdentityAsync(identityToken);
} catch (Exception error) {
// Surface support failure without failing game login.
Debug.LogWarning(error.GetType().Name);
}
Cluefolk.SetConversationContext(
new Dictionary<string, object> { ["screen"] = "settings" });
// Game account sign-out:
Cluefolk.Logout();Пакет Unity вызывает нативные SDK; собственной реализации WebView, HTTP или сессий в нём нет. Исходный код и релизы: github.com/cluefolk/unity-sdk (лицензия MIT).
Push через игровой сервер
- Единственный маршрут: публичный ответ поддержки → очередь Cluefolk →
/cluefolk/pushигрового backend → существующий push-провайдер игры → устройство. Device tokens, разрешения ОС и ключи Firebase/APNs остаются у игры. - Настройте и проверьте
Settings → Server connection. Обработчик игры проверяет командный JWT ES256 по JWKS URL, его назначение, проект, срок иaction: push.notify, убирает дубли по eventId и сохраняет push job до подтверждения. - Передайте подписанные поля
push.dataв мобильное уведомление без изменений. Android получает их в data, iOS — в userInfo на верхнем уровне рядом с aps.playerId— внутренний UUID Cluefolk, а не игровой ID. - Уведомления запрашиваются только для игроков, вошедших через игру: игра находит устройства по своему ID игрока. Передавайте получение и нажатие в вызовы платформ ниже; нажатие открывает нужное обращение только для настроенного проекта и авторизованного игрока.
- В
Server connection → Test pushукажите игровойPlayer IDигрока с публичным ответом поддержки и нажмитеSend test. ПроверьтеNotifications, затем само устройство. Принимается не больше пяти тестов в минуту.
{
"origin": "cluefolk",
"projectId": "YOUR_PROJECT_ID",
"playerId": "CLUEFOLK_PLAYER_UUID",
"conversationId": "CONVERSATION_UUID",
"messageId": "MESSAGE_UUID",
"status": "open",
"count": "1"
}// Android: receive / notification tap
Cluefolk.handlePush(data)
Cluefolk.openFromPush(activity, data)// iOS: receive / notification tap, on MainActor
Cluefolk.shared.handlePush(userInfo)
Cluefolk.shared.openFromPush(userInfo, from: controller)// Unity: receive / notification tap
Cluefolk.HandlePush(data);
Cluefolk.HandlePush(data, opened: true);Accepted подтверждает, что игровой backend сохранил событие. Это не подтверждение показа баннера ОС или прочтения ответа.
Проверка всей интеграции
- Откройте поддержку без входа, отправьте сообщение и проверьте, что оператор видит анонимного игрока с данными устройства и приложения. Затем войдите через игру на той же установке и убедитесь, что обращение перешло к подтверждённому игровому ID.
- Отправьте публичный ответ оператора, затем перезапустите игру: история и непрочитанные уже должны быть в состоянии SDK. Откройте ответ и проверьте изменения непрочитанных и Read; приватные заметки игроку не показываются.
- Подключите backend, обновите типизированный каталог и проверьте автоматический бейдж на известных данных. Отдельно проверьте ручной бейдж оператора, опубликованный подарок, принятый игровым сервером, и подарок, требующий подтверждения.
- Проверьте push в активной игре, в фоне и при холодном запуске. Проверьте разделение проектов (уведомление из другого проекта, например для сборок разработки, не открывает обращение) и смените игрока перед открытием старого уведомления.
- Проверьте offline/retry, выход и повторный вход, вложения-изображения, ошибки слишком больших изображений, лимит сообщений в минуту и, если включён, обязательный вход. Проверяйте реальные Android/iOS Player, включая используемые Unity toolchain.
Успешная сборка или подтверждение сервера — лишь часть проверки. Зафиксируйте устройство, ОС, версии SDK/адаптера и результат полного сценария.
Если что-то не работает
Не получается написать ответ: поле серое
Обращение закреплено за коллегой — над полем написано, за кем. Напишите личную заметку (Private note) или попросите коллегу либо администратора передать обращение вам.
Ответ не ушёл: «… answered first»
Коллега ответил игроку на мгновение раньше, и обращение теперь его. Ваш текст остался в поле: переключитесь на Private note, чтобы отправить его команде, или попросите коллегу передать обращение вам.
Не могу найти обращение
Выберите All statuses, откройте All conversations в разделе Views и очистите поиск и Filters. Затем ищите по ID игрока, слову из переписки, версии игры или системы телефона.
Подарок не дошёл
Откройте вкладку Gifts в карточке игрока. Pending approval ждёт администратора (Settings → Gifts → Approvals). При Unknown нажмите Check delivery again. Granted означает, что игровой сервер принял подарок: если игрок всё ещё не видит его в игре, обратитесь к команде игры. Не отправляйте подарок повторно: это будет второй подарок.
Нет бейджа
Проверьте, что бейдж опубликован, включён и виден команде. Для автоматического бейджа проверьте текущие данные с сервера игры; ручной бейдж должен стоять у игрока.
Игрок не может написать в поддержку
Проверьте, не заблокирован ли игрок, и лимиты Player messages в Queues & workflow: сообщения сверх лимита в минуту или в час отклоняются с указанием, когда можно писать снова. Если в Players and sign-in разрешены только игроки, вошедшие через игру, анонимные игроки не могут открыть поддержку.
Нет компании или приглашения
Проверьте почту текущего аккаунта. После отправки приглашения обновите страницу; если приглашение истекло, попросите новое. Если вы уже состоите в компании, владелец или администратор проекта добавляет вас в Settings → Team. Также можно создать свою компанию в Companies & invitations.
Игровой сервер не подключён
Поддержка работает без игрового сервера: игроки пишут анонимно, их узнают по установке приложения. Чтобы подтверждать игроков, использовать игровые атрибуты, подарки или уведомления, владелец или администратор настраивает подключение в Settings → Server connection.
Не проходит Check connection или обновление каталога
Проверьте адрес игрового сервера и наличие хотя бы одного ключа подписи профилей, затем передайте ошибку разработчику игрового сервера. Для нового типа нужен новый ключ атрибута; последний принятый каталог сохраняется.