Интеграция с Yonote.ru и запись продвижения в марафоне
В этом небольшом уроке мы научимся интегрироваться с сайтом https://yonote.ru/ и по API записывать в него данные.
Оговоримся сразу, что это учебный пример, как вы оформите шаблон в Yonote - дело ваше.
Регистрация в Yonote и создание коллекции
Для регистрации заходим на сайт и регистрируемся. Для регистрации нажимаем на кнопку «Создать аккаунт» и потом на кнопку «Регистрация». Запутаться там сложно, но на всякий оставляем ссылку на окно регистрации

Здесь все просто и не вызовет затруднений. После ввода данных жмем на кнопку.
На следующем шаге придумываем названия пространства в примере andreymgg

Тарифы на использование сервиса можно посмотреть здесь.
Для создания новой коллекции жмем на плюсик и создаем новую коллекцию, например, марафон


Здесь все просто, имя коллекции, доступ по умолчанию и общий доступ к документу.
Доступ по умолчанию имеет параметры:
Просмотреть и изменить
— пользователь может смотреть и изменять коллекцию.Только просмотр
— пользователь может только посмотреть коллекцию.Нет доступа
— у пользователя нет разрешений.
Общий доступ к документу позволяет находить любые документы из коллекции в интернете.
После установки всех параметров нажимаем «Создать».
Даем доступ к API
Для доступа к API переходим по ссылке вида https://mydomain.yonote.ru/settings где вместо mydomain
будет имя вашего аккаунта (в примере andreymgg
)
Открываем профиль, жмем на раздел «Токены API» и жмем кнопку «Новый токен»


Важно! Берегите токен, если вы его случайно скомпрометировали, нажмите Revoke и выпустите новый. Не забудьте заменить его в командах.
пример токена: asAyWNRta8vP87xmzLuVEhdgyzdZIYDkVSFD5X
Итак, токен авторизации получен, идем настраивать команды. В примере это будет марафон из нескольких заданий, аналогично тому, что делался в этой инструкции.
Команда для создания дневника достижений (первое посещение)
В примере игрок приглашается на рассылку марафона и в момент подписки на группу подписчиков мы создаем ему дневник достижений (поле профиля игрока с названием: lesson). Для упрощения считаем, что при первой подписке нужно создать поле, а на отписку не реагировать и то, что интеграция с Senler и группа подписки у вас сделана заранее. Если нет, то пересмотрите инструкцию по интеграции пожалуйста.
Событие:
1) Для создания дневника достижений создаем событие: «Подписался в Senler» и указываем нужную группу подписки.

2) Для реакции только на первую подписку добавляем условие: «Выполнена команда» № 0
ровно 0
раз

Действия:
1) В поле профиля игрока lesson записываем JSON-объект с четырьмя заданиями для примера (0
- признак того, что задание не сдали, 1
- что сдали):
{"1":0,"2":0,"3":0,"4":0}

Здесь все просто JSON-объект со значениями (через запятую):
{"номер задания 1":0,"номер задания 2":0,"номер задания 3":0,"номер задания 4":0}
Если вы будете делать марафон и карту для закрытых сообществ, то создайте список, например, в разделе «Списки игроков для VK» и добавьте в команду с оплатой действием: «Добавить в список»
2) Действием: «Отправить сообщение» отправляем сообщение с текстом и ссылкой на дневник достижений:
%first_name%, спасибо за участие в марафоне.
Вы можете посмотреть ваш дневник достижений по завершению марафона

Команда для сдачи первого домашнего задания
В этом простом примере игрок сдает ДЗ короткой фразой, написанной один раз, а если вам нужны навороченные примеры, можете посмотреть их в этой инструкции. Вы можете настроить одну команду и скопировать ее нужное количество раз, заменив необходимые блоки копиями.
Событие:
1) Для сдачи домашнего задания делаем событие: «Написал комментарий» с текстом: задание выполнено (не забудьте вставить ID поста)

2) Для реакции только на первый комментарий добавляем условие: «Выполнена команда» № 0
ровно 0
раз (копируем по номеру из предыдущей команды)

Важно! Отписка от группы Senler не проверяется, вы можете реализовать ее самостоятельно. Событием: «Подписался на Senler» с переключателем: отписался от группы и действием: «Исключить из списка» с переключателем команды и номером команды 617461
. У вас будет другой номер команды.
3) Для реакции только на тех, кто подписался на марафон добавляем условие: «Выполнена команда» № 617461
(номер предыдущей команды, в примере 617461
) больше 0
раз. В реакции на невыполнение можно писать комментарий с текстом:
Вы не участник марафона, %first_name%. Для участия в марафоне подпишитесь тут:
Ссылка на подписную Senler
но лучше в условиях марафона оговаривать, что если бот не отвечает, то вы что-то сделали неверно (например, не подписались на рассылку или сдали задание раньше). Условие для примера:

Действия:
1) Для ответного комментария добавляем действие «Написать комментарий» с текстом:
%first_name%, задание принято. Получить анкету участника вы сможете при завершении марафона.
Для ответного комментария жмем Еще — Больше опций — и кликаем на %object_id%

2) Для записи в дневник достижений используем действие «Изменить поле профиля игрока» с названием: lesson.1 (здесь 1 — номер занятия. Если у вас команда со вторым занятием марафона, то здесь указывается: 2) и 1. Мы будем ставить признак выполнения задания (1 — выполнено задание)

Команда для завершения марафона
Важно! Эта команда должна быть последней в вашем марафоне, например, у вас 5 заданий, значит она должна реагировать на пятый пост и выдавать сгенерированную карту успехов.
1) Для сдачи домашнего задания делаем событие: «Написал комментарий» с текстом: задание выполнено (не забудьте вставить ID поста)

2) Для реакции только на первый комментарий добавляем условие: «Выполнена команда» № 0
ровно 0
раз (копируем по номеру из предыдущей команды)

Действия:
1) Для ответного комментария добавляем действие «Написать комментарий» с текстом:
%first_name%, задание принято. Поздравляю с завершением марафона.
Для ответного комментария жмем Еще — Больше опций — и кликаем на %object_id%

2) Для записи в дневник достижений используем действие «Изменить поле профиля игрока» с названием: lesson.5. Мы будем ставить признак выполнения задания (1 — выполнено задание)

3) Во временной переменной %title%
формируем заголовок документа YoNote с помощью переменных Автопилота:
{gender}Участник: |Участница: {/gender} %first_name% %last_name%

4) Во временной переменной %collectionid%
указываем ID коллекции к которой будет относиться документ (в примере: 2672da50-a8d2-47b3-bfa4-8c7fe7432691
):

5) Во временной переменной %progress%
с помощью функции {if} формируем текст в зависимости от значения поля профиля игрока, записываем либо зачёт, либо не сдачу задания. Значение переменной %progress%
{if}%player.lesson.1%| ✅ Задание 1 принято!| 🚫Задание 1 не принято {
/if}{if}%player.lesson.2%| ✅ Задание 2 принято!| 🚫Задание 2 не приня
то {/if}{if}%player.lesson.3%| ✅ Задание 3 принято!| 🚫Задание 3 не п
ринято {/if}{if}%player.lesson.4%| ✅ Задание 4 принято!| 🚫Задание 4
не принято {/if}{if}%player.lesson.5%| ✅ Задание 5 принято!| 🚫Задание 5 не принято {/if}

6) Действием «Отправить запрос» отправляем POST-запрос на адрес: https://app.yonote.ru/api/documents.create
с параметрами:
title
—%title%
collectionId
—%collectionid%
text
—%progress%
publish
—(bool)1
Рассмотрим подробнее:
title
— Заголовок документаcollectionId
— ID коллекции к которой будет относиться документtext
— Текст документа, поддерживаются Markdown, но мы для удобства весь текст пишем в переменной ID коллекции к которой будет относиться документ
publish
— признак публикации документа(bool)1
документ был опубликован
Другие методы можно посмотреть в документации

7) Во временную переменную %younote_status%
с помощью JSON.PATH получаем статус ответа %response.status%
Если документ создан, статус вернет 200

8) Во временную переменную %younote_link%
с помощью JSON.PATH получаем ссылку на документ https://mydomain.yonote.ru/%response.data.id%
где mydomain
- ваш адрес younote.

9) Опционально: можете выслать сообщение игроку действием «Отправить сообщение», со ссылкой на его документ, но для выдачи доступа, ваши менеджеры должны будут выдать ему доступ по электронной почте.
%first_name%, ваша карта достижений тут:
%younote_link%
Ожидайте выдачу доступов от наших менеджеров в скором времени

10) Действием «Прервать продолжить выполнение команды» продолжаем выполнение команды, только в случае если статус создания документа %younote_status%
не 200
Вообще это проверку, либо ее аналог можно делать сразу после запроса, но для учебного проекта вполне сойдет.

11) Информируем сообщением администратора действием «Отправить сообщение», со ссылкой игрока на котором произошла ошибка, чтобы все проверил.
#younote
Клиент: %vk_link%
Статус younote: %younote_status%

Тестируем.


И если все сделано верно, то в личные сообщения прилетит ссылка с картой.

После выдачи доступов игрок увидит примерно следующее:

В скором времени Yonote обещали встроить свой аналог таблиц. Так что ждем.
Творческих взлётов и успешного внедрения.
Вернуться к списку инструкций