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 минуты
28 января