Привет всем! Часто новички на конструкторе salebot сталкиваются с оператором if и не знают как и где его правильно применять. Давайте попробуем сегодня разобраться с этим на практическом примере.
Итак, исходные данные: у клиента 3 магазина по продаже морепродуктов в 3-х разных городах. В боте у него под каждый город сделана отдельная ветка. Ветки практически одинаковые: наименования и стоимость товаров везде одинаковые, отличаются лишь фотографии при выборе продуктов 🦀 Краб или 🦐 Креветки. В целом всё сделано логично и работает без ошибок, но схема выглядит вот так:
Сейчас здесь 28 блоков, но с помощью оператора if, данную схему можно сократить до 4-х блоков (в 7-мь раз!!!), а работать она будет абсолютно так же. И тут на помощь как раз приходит оператор if.
Создаем зеленый блок, в него добавляем кнопки с названием городов. Так же, в этом блоке в калькуляторе, нам необходимо создать 6 переменных, в которые нужно добавить ссылки на фотографии. Чтобы не запутаться, в названия переменных я вставляю название города: фото_креветки_краснодар, фото_краб_москва и т.д. В качестве хранилища для фото я выбрал salebot, но нам подойдет любое облако, которое отдает прямые ссылки на файлы (яндекс диск и google диск не подходят)
Выбранный город сохраняем в стрелке в переменную город. Дальше идет белый блок (состояние диалога) в нем предлагаем клиенту выбрать товар и показываем две кнопки. После того, как клиент выбрал товар, сохраняем его выбор в стрелке в переменную товар. Эта стрелка так же ведет в белый блок, в котором впервые нам необходимо прописать несколько операторов if:
- Для подстановки фото
- Для подстановки нужного текста
- Для отображения соответствующих кнопок
Т.к. вариантов с фото у нас всего 6 (Москва краб, Москва креветки, Воронеж краб, Воронеж креветки, Краснодар краб, Краснодар креветки), значит мы можем сравнить какой город и какой товар выбрал клиент и подставить соответствующую переменную с фото. Пишем в калькуляторе:
фото = if(город == "Москва" and товар == "🦀 Краб", фото_краб_москва, if(город == "Краснодар" and товар == "🦀 Краб", фото_краб_краснодар, if(город == "Воронеж" and товар == "🦀 Краб", фото_краб_воронеж, if(город == "Москва" and товар == "🦐 Креветки", фото_креветки_москва, if(город == "Краснодар" and товар == "🦐 Креветки", фото_креветки_краснодар, фото_креветки_воронеж)))))
Сразу же в поле url вложений можем подставить переменную #{фото}, в нее подтянется ссылка на нужную фотографию. Дальше пишем иф для подстановки текста, тут он зависит только от переменной товар, а значит:
текст = if(товар == "🦐 Креветки", "Какие креветки вас интересуют?", "Какой вид краба вас интересует?")
И так же в текст сообщения подставляем #{текст} по аналогии с фото. Теперь нужно подставить кнопки, которые тоже зависят от выбранного ранее товара. Для этого, сначала необходимо задать эти кнопки через переменные. Самый простой способ будет таким:
Создаем кнопки, затем ниже открываем поле "Расширенные настройки кнопок" и копируем оттуда код этих кнопок
Теперь добавляем их в калькулятор:
кнопки_краб = [{"line":0,"index_in_line":0,"text":"🦀 Краб камчатский","type":"inline"},{"line":1,"index_in_line":0,"text":"🦀 Краб колючий","type":"inline"},{"line":2,"index_in_line":0,"text":"🦀 Краб снежный","type":"inline"}]
Это кнопки для краба, тоже самое необходимо сделать для кнопок с креветками:
кнопки_креветки = [{"line":0,"index_in_line":0,"text":"🦐 Креветка азовская","type":"inline"},{"line":1,"index_in_line":0,"text":"🦐 Креветка королевская","type":"inline"},{"line":2,"index_in_line":0,"text":"🦐 Креветка черноморская","type":"inline"}]
Готово. И вот теперь пишем иф
кнопки = if(товар == "🦐 Креветки", кнопки_креветки, кнопки_краб)
После этого можем смело добавить переменную #{кнопки} в поле "Расширенные настройки кнопок" и клиент будет видеть разные кнопки, в зависимости от того, выбрал он краба или креветки. Тут закончили, теперь из этого блока создаем стрелку в следующий белый блок, в стрелке сохраняем выбор клиента в переменную выбор, она нам понадобится дальше.
Исходя из того, что стоимость товаров у клиента одинаковая независимо от региона:
- Краб камчатский - 4000 руб/кг
- Краб колючий - 4500 руб/кг
- Краб снежный - 5000 руб/кг
- Креветки азовские - 1500 руб/кг
- Креветки черноморские - 1200 руб/кг
- Креветки королевские - 1700 руб/кг
Мы так же можем подставлять цену ифом, в зависимости от того, что у нас сейчас находится в переменной выбор. Давайте для начала рассчитаем переменную цена_краб:
цена_краб = if(выбор == "🦀 Краб камчатский", 4000, if(выбор == "🦀 Краб колючий", 4500, if(выбор == "🦀 Краб снежный", 5000, 0)))
Затем переменную цена_креветки:
цена_креветки = if(выбор == "🦐 Креветка азовская", 1500, if(выбор == "🦐 Креветка черноморская", 1200, if(выбор == "🦐 Креветка королевская", 1700, 0)))
И дальше ифом определяем, цену какого товара подставляем в текст сообщения. Давайте посмотрим в целом теперь на наш четвертый блок в воронке:
Здесь можно было всё объединить в один иф, но я решил разделить его на части. Такой вот salebot, что на нем можно решить одну и ту же задачу разными способами, каждый выбирает тот способ, который ему больше понятен и больше нравится. В итоге, мы с вами получили вот такую вот маленькую схему, без ущерба для изначального функционала:
Для тех, кто больше любит видеоформат, записал урок с подробной сборкой данной схемы:
В завершении выпуска, хочу сказать, что вам обязательно нужно подружиться с оператором if, если вы хотите перейти на более профессиональный уровень разработки чат ботов. Ну и использование if для сокращения схемы, это далеко не единственное его применение, но об этом в других выпусках😉
На сегодня всё, до встречи)
Автор: Alexchatbots ВК, Alexchatbots ТГ
#salebot, #универсенсея, #обучениечатботам, #бесплатныйкурсsalebot