Найти в Дзене
31 подписчик

Выпуск №3 - Викторина для выбора архетипа на конструкторе salebot


Всем привет! Вчера сдал бота для одной крупной сети продуктовых магазинов. Суть бота: у них проходит корпоративное оффлайн мероприятие, с помощью бота сделали регистрацию на это мероприятие, затем была серия информационных рассылок (карта проезда, план вечера и т.д), небольшая викторина из 5-ти вопросов и блок с обратной связью. Вот сегодня речь пойдет о викторине, посмотрим, что в ней было такого интересного.

Итак, сама викторина шуточная и довольно простая: вопрос и 5 вариантов ответов. После ответов на все 5 вопросов, бот должен определить какой у человека архетип. Из интересного здесь сам алгоритм расчета архетипа. Если мы привыкли, что после правильного ответа на вопрос пишем в калькуляторе:

балл = балл + 1

То здесь необходимо было считать, какой из 5-ти вариантов ответов человек нажимал чаще. Пример: отвечая на вопросы я нажимал 2, 3, 2, 2, 5. Вариант ответа №2 я нажал 3 раза, бот должен это понять каким-то образом и выдать мне картинку и текстовое описание. Каждому из вариантов ответов соответствовал свой архетип. Если какие-то варианты ответов совпали по количеству (например 2,2,3,3,5, тут 2 и 3 вариант был нажат одинаковое количество раз), то выбираем случайным образом любой из этих двух вариантов. Решено был реализовать данную логику с помощью массивов.

Для начала, в стартовом блоке викторины задаем 5 переменных с пустыми массивами. Именно в них мы будем фиксировать нажатия кнопок:

массив1 = []
массив2 = []
массив3 = []
массив4 = []
массив5 = []

Ответы в стрелках сохраняем в переменные ответ1 - ответ 5. И после каждого ответа добавляем следующие формулы:

результат = if(ответ1 == "1️⃣", 1, if(ответ1 == "2️⃣", 2, if(ответ1 == "3️⃣", 3, if(ответ1 == "4️⃣", 4, 5))))

Ифом определяем какая кнопка была нажата (да, в кнопках стояли просто цифры из стандартного набора эмодзи) и в переменную результат помещаем ее числовое значение. И ниже:

массив#{результат} = append(массив#{результат}, 1)

Тем самым добавляя в массив1 - массив5 единицу. Что это нам дает: после ответа на все вопросы, количество единиц в массивах укажет нам, сколько раз была нажата каждая из кнопок. В карточке клиента будет примерно такая ситуация:

массив1 = [] (ни разу не нажал кнопку)
массив2 = [1, 1] (два раза нажал кнопку)
массив3 = [1] (один раз нажал кнопку)
массив4 = [1] (один раз нажал кнопку)
массив5 = [1] (один раз нажал кнопку)

Теперь у нас есть вся информация для подсчета результата. В последнем блоке викторины достаточно прописать:

длина1 = arr_len(массив1)
длина2 = arr_len(массив2)
длина3 = arr_len(массив3)
длина4 = arr_len(массив4)
длина5 = arr_len(массив5)

Считаем длину каждого массива в отдельную переменную. Далее:

макс = max(#{длина1}, #{длина2}, #{длина3}, #{длина4}, #{длина5})

С помощью функции max определяем самое большое число из них (т.е. какая из кнопок была нажата больше раз). Потом формируем массив из этих же переменных, но формируем хитро:

массив = [0, #{длина1}, #{длина2}, #{длина3}, #{длина4}, #{длина5}]

Подставляем 0 в самое начало массива, чтобы порядковый номер каждой из переменных соответствовал нажатой кнопке (т.е. длина 1 относится к кнопке1 и находится на 1-й позиции в массиве, длина2 к кнопке2 и на 2-й позиции и т.д). Ну и финальный штрих:

индекс = index(массив, макс)

С помощью данной формулы определяем на какой позиции в массиве находится самое большое число из нашего списка. В переменную индекс запишется порядковый номер этого числа из массива, что будет соответствовать номеру кнопки, которую нажимали чаще всего. Ну и дальше обычными ифами подставляем текст и фото, относящиеся к данному архетипу, в целом, ничего интересного уже)

Кто боялся массивов, попробуйте соберите что-то подобное прямо сейчас, поймете, что всё не так страшно, да и ниже есть видеоурок, как сделать такую викторину, пользуйтесь, надеюсь, будет полезно)

На сегодня всё, всем спасибо за внимание!

Автор: Alexchatbots
Выпуск №3 - Викторина для выбора архетипа на конструкторе salebot  Всем привет! Вчера сдал бота для одной крупной сети продуктовых магазинов.
11:23
3 минуты