Створення компанії та проєкту
Почніть із робочого простору, потім надайте доступ команді.
Створіть компанію та проєкт
- Увійдіть через 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 або оновлення каталогу
Перевірте адресу ігрового сервера й наявність щонайменше одного ключа підпису профілів, потім передайте помилку розробнику ігрового сервера. Для нового типу потрібен новий ключ атрибута; останній прийнятий каталог зберігається.