- Створіть продукт
- Створіть уроки
- Налаштуйте, коли відкриваються уроки
- Додайте зображення
- Додайте матеріали
- Додайте відео
- Згрупуйте уроки в модулі
- Увімкніть продукт
- Опублікуйте додаток і веб-платформу
Перед початком
Знадобиться:- API-токен — див. Авторизація.
- ID бота — зі Список ботів. Додаток і веб-платформа належать боту.
- Ваші файли:
- зображення (обкладинки, зображення сповіщень) — JPG, PNG або WebP, до 20 МБ;
- матеріали уроків — до 50 МБ: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, MP3, MP4, WAV, OGG, ZIP, RAR, JPG, JPEG, PNG, WebP;
- відео — файли MP4 для завантаження або посилання на відео YouTube, Vimeo чи Bunny.
1. Створіть продукт
data.id як PRODUCT_ID. platform має бути miniApp — це продукт додатку (той самий продукт працює й на веб-платформі). Назви продуктів унікальні в межах бота: на повторювану назву повернеться 422 name. Новий продукт вимкнений, ви ввімкнете його на кроці 8.
Необов’язкові налаштування продукту:
- Опис — Оновити продукт з
description. - Обкладинка — Завантажити обкладинку продукту, multipart
file: JPG, PNG або WebP до 20 МБ. - Повідомлення-запрошення — повідомлення, яке підписник отримує в боті, коли отримує доступ до продукту. Задається через Оновити запрошення до продукту:
invite_textіinvite_button(обов’язкові),invite_web_button(необов’язковий), стилі кнопокprimary,successабоdanger. У повідомленні є кнопка, яка відкриває додаток; веб-кнопка додається, лише поки веб-платформа опублікована. Зображення для нього — Завантажити зображення запрошення.
2. Створіть уроки
Уроки створюються через Створити урок. Кожен новий урок додається в кінець продукту.data.id як LESSON_ID.
name— до 255 символів, показується в списку уроків.text— вміст уроку в HTML: абзаци, жирний, курсив, посилання, списки. До 4000 символів тексту без урахування тегів.access_time— коли відкривається урок, див. крок 3. Якщо не передати, урок відкривається одразу.settings— сповіщення, яке надсилається під час відкриття уроку, див. Сповіщення про відкриття уроку.
lesson_ids у новому порядку), Дублювати урок, Вимкнути урок, Видалити урок.
3. Налаштуйте, коли відкриваються уроки
У кожного підписника свій розклад. Він починається, коли підписник отримує доступ до продукту. Коли для нього відкривається кожен урок, вирішуєaccess_time.type:
По черзі: after_previous
immediately першому уроку й after_previous решті, щоб курс ішов по одному уроку.
Через час: duration
delay_type — seconds, minutes, hours або days. Для «одного уроку на день» дайте уроку N затримку N − 1 днів.
У дату: date
У заданий час доби: time
delay_time: сьогодні, якщо цей час ще не минув, інакше завтра. Використовується лише час доби; передавайте його зі зміщенням (без нього він читається як UTC). delay_number для цього типу обов’язковий — передайте 0.
Вручну: never
Урок сам не відкривається. Відкрийте його підписнику через Відкрити уроки продукту:
access_time — наприклад, щоб видати одному підписнику всі уроки одразу.
Зміна розкладу
Коли ви змінюєтеaccess_time або вмикаєте й вимикаєте урок, розклад перераховується для підписників, які вже мають доступ. У курс, що вже йде, можна додавати уроки й змінювати їх порядок.
Коли підписник проходить усі уроки, продукт для нього завершується.
Сповіщення про відкриття уроку
Бот може надсилати повідомлення, коли урок відкривається підписнику. Передайтеsettings під час створення або оновлення уроку:
lesson_open_text— Telegram HTML;{{lesson_name}}і{{product_name}}замінюються назвами уроку та продукту. Якщо порожньо, використовується стандартний текст мовою бота.lesson_open_buttonвідкриває додаток.lesson_open_web_buttonдодається, лише поки веб-платформа опублікована.lesson_open_button_style,lesson_open_web_button_style—primary,successабоdanger.- Зображення для повідомлення — зображення сповіщення уроку, див. крок 4.
4. Додайте зображення
Обидва завантажуються як multipart з однимfile: JPG, PNG або WebP до 20 МБ.
5. Додайте матеріали
Матеріали — це файли або посилання, які показуються під уроком. Додавайте їх через Додати матеріал уроку, по одному за запит. Файл — multipartfile з необов’язковим відображуваним name (без нього показується ім’я файлу):
name і url (http або https), без файлу:
name, а для посилань і url), Змінити порядок (media_ids у новому порядку) і Видалити.
6. Додайте відео
В уроку може бути не більше одного відео. Нове відео замінює поточне.- Завантажити файл
- Посилання на YouTube, Vimeo або Bunny
Файл завантажується безпосередньо на відеохостинг за tus — протоколом завантаження з докачуванням, а не через Zenedu API.1. Запросіть завантаження через Створити завантаження відео. Завантаження має завершитися до Відповідь — Відео переходить з
file_size — точний розмір файлу в байтах:expires_at.2. Створіть tus-завантаження. Надсилайте всі заголовки з upload.headers у кожному запиті:201 із заголовком Location. Це може бути шлях (/tusupload/…) — тоді він відносно хоста з endpoint. Значення Upload-Metadata закодовані в base64 (filetype video/mp4, title).3. Надішліть файл:204 означає, що файл завантажено. Будь-яка tus-бібліотека працює так само: передайте їй endpoint, заголовки й файл.4. Повідомте, що завантаження завершено, через Завершити завантаження відео:uploading у processing.5. Дочекайтеся обробки. Відео саме проходить uploading → processing → ready, зазвичай за кілька хвилин. Перевіряйте через Отримати відео уроку. ready — відео оброблене й відтворюється; failed — хостинг не зміг обробити файл, завантажте його знову.7. Згрупуйте уроки в модулі
Модулі — необов’язкові заголовки, які групують уроки в додатку й на веб-платформі. Створіть модуль через Створити модуль продукту:- Оновити модуль продукту —
nameіlesson_ids. Переданіlesson_idsзамінюють уроки модуля. - Змінити порядок модулів продукту —
section_idsу новому порядку. - Видалити модуль продукту.
8. Увімкніть продукт
9. Опублікуйте додаток і веб-платформу
Продукти й уроки показуються на двох платформах:
На обох платформах однакові продукти й уроки, і додавати до них продукти не потрібно: у розділі Контент кожної платформи є всі ввімкнені продукти додатку, до яких підписник має доступ. Продукти для бота показуються там, лише якщо в налаштуваннях платформи ввімкнено
show_bot_products.
Кожна платформа налаштовується й публікується окремо: можна запустити лише додаток, лише веб-платформу або обидві.
Чернетка й опублікована версія
У кожної платформи є чернетка й опублікована версія. Зміни налаштувань, меню, профілю, логотипа й онбордингу потрапляють у чернетку, і підписники бачать їх лише після публікації. Продукти, уроки та їхній вміст до чернетки не входять — у підписників вони змінюються одразу.- Спочатку викличте Отримати додаток або Отримати веб-платформу: виклик готує платформу, якщо її ще не налаштовано, і повертає
is_published,has_changes(чернетка відрізняється від опублікованої версії),app_urlі налаштування. - Змініть чернетку.
- Опублікуйте: Опублікувати додаток або Опублікувати веб-платформу.
DELETE …/publish). Чернетка залишається; підписники, які відкривають неопубліковану платформу, бачать її вимкненою.
Налаштування
Оновити налаштування додатку й веб-платформи приймають однакові поля, які задаються для кожної платформи окремо:brand_name,open_button_name,appearance(system,light,dark),brand_color(#RRGGBB),disable_branding;show_bot_products— показувати в Контенті й продукти для бота;support_type(botабоlink) іsupport_text— пункт «Підтримка»;phone_login_enabled— лише для веб-платформи: вхід за номером телефону.
Меню й профіль
У кожної платформи свої пункти меню й профілю: Контент, Магазин, Підписки, Підтримка та інші. Можна додавати власні посилання й пункт Магазин (створити пункт меню, створити пункт профілю, те саме під/web), змінювати порядок, оновлювати, переносити між меню й профілем і видаляти посилання. Підписник без продуктів спочатку потрапляє в Магазин, якщо в ньому є тарифи, інакше — у Контент.
Онбординг
Екрани онбордингу показуються під час першого відкриття лише додатку — див. Створити екран онбордингу. У веб-платформи онбордингу немає.Веб-адреса
Веб-платформа має адресу на піддомені Zenedu. Змінити її можна через Оновити адресу:web_handle— 3–32 символи: малі латинські літери, цифри й дефіси, але не на початку й не в кінці. Має бути унікальним; деякі імена зарезервовані.custom_domain_enabled— відкривати веб-платформу на власному домені. Потрібна платна підписка Pro, інакше запит завершиться помилкою. Сам домен підключає підтримка: напишіть у @zenedusupportbot.
app_url в Отримати веб-платформу.
Що потрібно пам’ятати
- Уроки створюються вимкненими. Передавайте
"active": trueабо вмикайте їх — інакше підписники побачать порожній продукт. - Розклад починається з отримання доступу.
durationіtimeвідраховуються від моменту отримання доступу, а не від попереднього уроку. Щоб уроки йшли один за одним, використовуйтеafter_previous. - Відео готове не одразу. Завантажене відео спочатку в
uploading, потім уprocessing, і відтворюється, коли перейде вready.