Fedorrychkov / inmind-web

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

inMind web app

Course capabilities

Курс поддерживает свободные ответы в чате, показ видео и картинок, проведение тестов, подсчет очков и показ результатов. Для чата необходимо собирать курс в виде json схемы, сценария, где при определенных правилах можно получить необходимый профит.

Пример:

'data': {
  'id': 1,
  'version': '0.0.1',
  'name': 'Принципы эффективной коммуникации',
  'description': 'В начале урока будет интерактивный теоретический блок, затем необходимо будет выполнить два задания.',
  'author': {
    'name': 'Василиса',
    'description': 'Менеджер проектов',
    'intro': 'Мы будем последовательно знакомиться с ключевыми правилами конструктивного общения.',
  },
  'chapters': [
    {
      'id': 1,
      'name': 'Поведение',
      'messages': [
        {
          'type': 'TEXT',
          'content': '',
        }
      ]
    }
  ]
}

Курс содержит мета информацию для onboarding скрина чата, версию для проверки обновления версии курса, автора курса, а так же главы. В главах так же есть своя мета, вся мощь чата содержится в массиве сообщений. Коротко пройдемся по типамм и поведению.

Типы сообщений

  1. TEXT - обычный тип сообщений, нужен для показа текста без каких либо доп функций
  2. IMG_URL, VIDEO_URL - подразумевается, что в поле content будет хранится лишь ссылка файла, уже в компоненте сообщения будет вставка в зависимости от типа собщения необходимого тега
  3. TEXT_INPUT - тип для свободного ввода пользователем. Если есть необходимость использовать ответ пользователя далее в чате, нужно передать вместе с этим типо доп свойство - variable, в него записать название переменной, необходимо делать названия уникальнымми, иначе могут возникнуть ошибки при сохранении данных
  4. CHOOSEN - здесь ожидается несколько свойство. Options - массив кнопок, у кнопок должны быть уникальные id с 0 до n, так же можно указать correctAnswer, где будет хранится ид кнопки с верным ответом.
'correectAnswer': 1,
'options': [
  {
    'id': 0,
    'content': 'Не верно',
    'color': '#FFC876',
    'messages': [],
  },
  {
    'id': 0,
    'content': 'Верно',
    'color': '#FFC876',
    'messages': [],
  },
],
  1. TEST - это, на данный момент, самый сложный кусок логики в чате. Здесь хранятся вопросы по текущему тесту. Он содержит в себе ряд необходтимых свойств для корректной работы. id теста, должен быть уникальный для всего курса. results - массив результатов, из него будет браться результат прохождения теста, ниже будет приведен пример json.
'results': [
  {
    'type': 'TEXT',
    'count': {
      'min': 0,
      'max': 20,
    },
    'content': 'Результат\nЕсли skill <=20: Вы не всегда откровенны с другими людьми и склонны держать некоторые вещи в себе. Иногда вы можете говорить уклончиво или иносказательно, ожидая, что собеседник сам догадается о том, что вы имеете ввиду.\nТакой коммуникативный стиль чреват непониманием и недоразумениями. Также, вероятно, вам часто не хватает терпения выслушать собеседника до конца, особенно если его точка зрения отличается от вашей. Часто вы не обращаете внимания на эмоциональное состояние собеседника, а значит вам бывает сложно понять его мысли и чувства. Вы не считаете нужным демонстрировать интерес к словам говорящего. Это может создавать у другой стороны ощущение, что вам безразлично то, что он говорит.',
    'messages': [
      {
        'content': 'В следующих уроках мы будем развивать эти навыки. А это значит, что процесс общения для вас станет более комфортным.',
        'color': '#FFC876',
      },
    ],
  },
]

В этом примере важным является content как текстовый результат прохождения теста, так и поле count, оно участвует в сравнении текущего результата пользвателя с промежутком баллов. Так же должен писутствовать массив question, он включает в себя массив обычных CHOOSEN собщений, с добавленным полем count: number, это поле участвует в суммировании результатов пльзвоателя по каждому вопросу.

'questions': [
  {
    'type': 'CHOOSEN',
    'content': 'Всегда ли вы планируете результат (цель) предстоящего разговора с человеком, этапы и способы его достижения?',
    'color': '#C9F1FF',
    'options': [
      {
        'id': 0,
        'content': 'Почти никогда',
        'count': 1,
        'color': '#FFC876',
      },
    ]
  },
]

Функционал чата

Каждое сообщение в массиве может включать в себя не глубокую вложденность (в текущей реализации от 7 мая 2021 года поддерживается 2 уровня вложенности, родитель и ребенок), то есть в сообщении внутри мжет хранится массив сообщений. Если это CHOOSEN, внутри нее хранится массив кнопок, в каждой из которых может хранится массив message, это помогает вставлять доп развитие сценария курса в зависимости от ответов пользвателя. Поле correctAnswer в вопросах используется для донесения до юзера корректности верного ответа, при не верном нажатии юзер может получить доп сообщения с разжовыванием, что ожидалось и почему не верно, а после вопрос будет повторятся вновь и вновь, пока нне будет дан верный ответ.

About


Languages

Language:TypeScript 98.1%Language:JavaScript 1.2%Language:HTML 0.6%Language:CSS 0.0%Language:Shell 0.0%