Интеграция с Yonote.ru и запись продвижения в марафоне

Видеодемонстрация

В этом небольшом уроке мы научимся интегрироваться с сайтом https://yonote.ru/ и по API записывать в него данные.
Оговоримся сразу, что это учебный пример, как вы оформите шаблон в Yonote - дело ваше.

Регистрация в Yonote и создание коллекции

Для регистрации заходим на сайт и регистрируемся. Для регистрации нажимаем на кнопку «Создать аккаунт» и потом на кнопку «Регистрация». Запутаться там сложно, но на всякий оставляем ссылку на окно регистрации

Окно регистрации
Окно регистрации

Здесь все просто и не вызовет затруднений. После ввода данных жмем на кнопку.

На следующем шаге придумываем названия пространства в примере andreymgg

Создаем пространство
Создаем пространство

Тарифы на использование сервиса можно посмотреть здесь.

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

Создаем коллекцию
Создаем коллекцию
Название коллекции
Название коллекции

Здесь все просто, имя коллекции, доступ по умолчанию и общий доступ к документу.

Доступ по умолчанию имеет параметры:

  • Просмотреть и изменить — пользователь может смотреть и изменять коллекцию.
  • Только просмотр — пользователь может только посмотреть коллекцию.
  • Нет доступа — у пользователя нет разрешений.

Общий доступ к документу позволяет находить любые документы из коллекции в интернете.

После установки всех параметров нажимаем «Создать».

Даем доступ к API

Для доступа к API переходим по ссылке вида https://mydomain.yonote.ru/settings где вместо mydomain будет имя вашего аккаунта (в примере andreymgg)

Открываем профиль, жмем на раздел «Токены API» и жмем кнопку «Новый токен»

Вводим имя токена и нажимаем «Create»
Вводим имя токена и нажимаем «Create»
Интеграция с Yonote.ru и запись продвижения в марафоне, image #6
Важно! Берегите токен, если вы его случайно скомпрометировали, нажмите 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Вообще это проверку, либо ее аналог можно делать сразу после запроса, но для учебного проекта вполне сойдет.

Продолжаем только если статус не 200
Продолжаем только если статус не 200

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

#younote
Клиент: %vk_link%
Статус younote: %younote_status% 
Отправка сообщения админу
Отправка сообщения админу

Тестируем.

Сдаем первое задание
Сдаем первое задание
Сдали пятое
Сдали пятое

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

Интеграция с Yonote.ru и запись продвижения в марафоне, image #31

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

Все работает
Все работает

В скором времени Yonote обещали встроить свой аналог таблиц. Так что ждем.

Творческих взлётов и успешного внедрения.

Вернуться к списку инструкций
1080 views·21 shares
1080 views