Создание Телеграм бота с помощью n8n с Александром Фоминым,  часть 4 — создание заказа
1:37:45

Создание Телеграм бота с помощью n8n с Александром Фоминым, часть 4 — создание заказа

School of Practical Skills 13.09.2022 3 351 просмотров 58 лайков

Machine-readable: Markdown · JSON API · Site index

Поделиться Telegram VK Бот
Транскрипт Скачать .md
Анализ с AI
Описание видео
Мои новый курс по автоматизации и AI 👉 https://artemdzyuba.ru Присоединяйся, чтобы оставаться на связи: Телеграм: https://t.me/practicalskills Инстаграм: https://www.instagram.com/practical_skills01/ Здесь можно скачать сценарий и получить шаблон страницы Notion: https://artemdzyuba.notion.site/4-43f86d158b4d442bb45ecaa61cb1a698 Навигация: 0:00 Начало 0:56 Начинаем составлять опросник 8:09 Как должен работать опросник 13:25 Навигация по меню 21:35 Получение данных из Notion 31:52 Есть набор данных. Что дальше? 43:34 Работа с ответм пользователя 51:45 Запись ответа пользователя в базу данных 1:08:44 Вспоминаем, что было в 1-й части 1:13:41 Суммарная информация в конце анкеты 1:27:16 Удаление незавершенных заказов Основной канал — в телеграме: https://t.me/practicalskills

Оглавление (11 сегментов)

Начало

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

Начинаем составлять опросник

реализовать сценарий при котором пользователь проходит опросник и отвечает на какие на какие-то заготовленные вопросы и таким образом у нас формируется анкета пользователя и мы понимаем чего пользователь от нас хочет выглядеть это будет следующим образом у нас будет база заказов в наушники у нас будет соответственно бот где мы можем зайти в раздел заказ выбрать раздел заполнить анкету вот начнет выдавать нам по очереди вопросы из этой анкеты мы выбираем опцию вот каждый выборный ответ записывает в базу пока мы ограничимся просто четырьмя вопросами ну и после того как я ответил на все вопросы год показывает мне полностью заполнены мои макет уведомляет о том что заказ сохранена в базе ну и соответственно все я могу вернуться в главное меню либо перейти вернуться назад изменить свой какой-нибудь ответ который я уже сохранил если я поменял свое мнение это перезапишет вот мы в принципе все предлагаю сегодня вот на эту часть посмотреть попробовать ее воспроизвести она у меня в целом уже готовы с того чтобы было понятно на сколько в объеме изменилось относительно того что было раньше вот это то что мы делали до этого не включая часть заказом здесь у нас внутри еще используются еще один сценарий внешние где мы реализуем функцию регистрации пользователей в базе вот к нему добавилось вот такая часть вот она вся целиком отвечает как раз за процессинг вот этих вот пользовательских анкет ну я бы сказал что здесь есть много возможностей для оптимизации этого процесса такая попытка за прототипировать процесс как он в теории может сработать при том что мы стараемся здесь не использовать java script там в каком-то большом количестве берем просто готовые модули берем set ii и iv и ну и модуль снова научно вот ну начнем тогда по шагам по сути начинаем мы из состояния когда у нас есть только меню start и мы показываем пользователю я наверное вот здесь все отключу то есть это состояние вот которым мы находились прежде когда у нас есть только вот эта часть что нам нужно сделать в первую очередь мы показываем пользователю вот здесь вот main menu в main menu мы добавляем кнопку заказ к ней я добавляю call back дейта меню ордер и дальше из свечами меню пейджер для тех случаев когда у меня колбы где-то за содержит ордер именно содержит направляя его во второй out put из 2 а вот тут я тащу дальше делаю еще один свечи для того чтобы дальше разводить еще каким-то образом сценария первое это когда калби где заканчивается на ордер я это воспринимаю как основное меню заказа я предполагаю что дальше в меню заказа будет несколько опций будет опция заполнить анкету будет опция просто написать какой-то кастом текст ну или опция вернуться назад вот поэтому первый случай это когда заканчивается на ордер это будет меню второй случай это когда содержит серве серую это как раз и будет анкетах и все все нажатия кнопок уже при прохождении этой анкеты они будут содержать этот слова каст контент с кастом это для сценариев для сценария когда пользователь просто заполняет отправляет текстовое какое-то сообщение и мы будем его охранять и еще одну заготовку я делал этот контент sllist это в будущем для того чтобы пользователь мог посмотреть список своих заказов вот дальше из ордер пейджер в первую очередь я как раз тащу в ордер меню и здесь у меня по сути какой-то вводный текст я говорю пользователю о том что вы можете заказать услуги и выберите один из вариантов ниже либо заполнить анкету либо в текстовом режиме что-то отправиться кнопки какие у меня здесь есть какие добавляю заполнить анкету и в качестве callback диеты я передаю вот такой вот набор его сейчас объясню чуть более подробнее но самое главное что я по сути пользователи сразу отправляют на первый шаг с самого праздника и сюда добавляю внутрь еще дату объясню чуть позже для чего я это использую еще одна кнопка отправить текст сюда добавляю слова кастом и также добавляю сюда дату и кнопка назад по сути я возвращаю пользователи в главное меню то есть качество клубы где-то указываю меню home все сохраню сейчас мы посмотрим результат то есть у нас есть кнопка заказ мы нажимаем на нее и вот мы попадаем как раз вот в этом меню у нас показались эти кнопки

Как должен работать опросник

дальше как я хочу чтобы работал сам опросник я хочу чтобы сейчас на данный момент у меня было четыре вопроса у каждого из этих четырёх вопросов будет три варианта ответа по сути дальше это можно будет развивать можно будет добавлять количество вопросов или указывать разное количество ответов для каждого из них но главное что я понимаю что мне необходимо создать какой-то базу вопрос чтобы я мог их достаточно быстро редактировать вот наши таблички я добавляю сюда табличку серве и по сути здесь я просто перечисляю те вопросы которые я и буду задавать пользователю какие поля я здесь добавил это а иди к высшим это сама вопрос непосредственно и 4 варианта ответа 4 но на самом деле везде я добавляю пока только три я тогда добавлю небольшую ремарку вот этот вот способ но он такой самый простой для того чтобы начать здесь заранее зафиксировано количество ответов вот мы четырьмя ограничились да насколько понимаю типа в более гибким варианте это составляется какая-то база именно самих я не знаю вариантов ответов что ли которые будут еще привязаны к тому к какому вопросу идет ответ что должно быть дальше так далее но чтобы мы типа были не ограничены но по сути да по сути это пока самый простой такой в реализации вариант который можно дальше расширять да ты правильно говоришь то есть случаи когда этих там вариантов ответов может быть вообще бесконечное количество то это просто будет две таблицы 1 с вопросами другая с ответами в таблице с вопросами будут два поля со связями в одном будет указан указаны все ответы которые относятся к этому вопросу то есть просто все варианты и еще будет одно поле где будет указан допустим если это именно quiz например какой то там может быть указано нашего правильный ответ так до делаю такую табличку чтобы ее использовать для выдачи вопросов и делаю табличку ордер с которыми можно смотрели для того чтобы сохранять сами заказы и сохранять сами анкеты который пользователь заполняет какие здесь поля я добавил ордер уникальное деле ордера он состоит я решил использовать айди жку пользователя из телеграм и самого и дополнительно еще дату апдейта сообщения вот этого по сути эта дата всегда будет разная поскольку пользователь нажимает кнопку и каждый раз обновляется дата редактирования этого сообщения какие поля я здесь делаю relation с юзерам делаю дальше четыре поля куда я сохраняю ответы на вопрос то есть у нас 4 вопросы я делаю четыре поля серве один два три четыре я по-русски текста прям за храня непосредственно уже ответы техническое поле статус для того чтобы дальше я мог уже с этой базой работать каким-то образом чтобы у меня было понимание и фильтрация заказов которые требуют внимания заказов которые уже в архиве или незаполненных еще заказов а только те которые пользуются только начал заполнять по лекарствам я сюда также добавил поскольку заказы которые пришли не через анкету а просто через отправку текста я планирую сюда также сохранять увядает и ну да и time здесь просто для удобства чтения самой даты когда был сформирован заказ дальше что с этим со всем я делаю а позволь вернуться твоим заказом там просто вот у нас есть юзеры под собственный там номер но я так понимаю что можно через здорово подтягивать учетом его имя фамилию просто чтобы было но можно мне пока это не требовалось от а так конечно можно так соответственно дальше что у нас есть

Навигация по меню

в данный момент у нас есть кнопка заполнить анкету и по моей логике за кнопка заполнить анкету должна нас приводить во первых при нажатии на нее я хочу сразу сохранять в базе какой-то запись чтобы мне знать что пользователь уже начал заполнять анкету и чтобы мне было куда записывать эти самые варианты ответов ну и при нажатии то есть я хочу сразу пользователи выдавать уже первый вопрос поэтому сюда мы ставим серве 1 то есть первый шаг и как только пользователь нажмет эту кнопку так работает но я буду запускать в ручном режиме для того чтобы посмотреть что происходит пользователь нажал заполнить анкету данные пришли но из 1 output и мы никуда пока ничего не вели соответственно я добавляю теперь еще один месяц значит верхний узел telegram у нас формирует это меню до поверх верхний узел формирует меню при этом я дальше добавлю еще определенную логику что я хочу делать дальше еще когда пользователь будет заходить в меню я буду проверять есть ли у пользователя какие-то не заполнены им еще заказы но уже заведено и то есть за конфеты где пользователь начал заполнять на не закончен и такие анкеты я буду подчищать каждый раз когда пользователь нажал меню позже как мы вернемся здесь соответственно какое сообщение я добавляю поскольку на ужин у меня отвечает не очень быстро я хочу как бы побороться с таким флагом в отправке сообщений поэтому я пользователю показываю сообщение условно загружаю как какие-то данные вот единственное что я ему здесь отправляю это загружаю данные чтобы он знал что какой-то процесс происходит сейчас сразу после нажатия и спустя какое то время а прям сразу и сразу после этого я формирую набор данных с которыми я хочу дальше работать внутри сценария не связывается так ну собственно вернемся здесь еще раз так нажму заказ теперь экзо кет workflow и нажму заполнить анкету вот он нам показал загружая данные пока дальше ничего не происходит но у нас есть данные я их дальше превращаю вот в такой вид то есть что мне нужно получить для того чтобы понять что то есть что мне нужно сделать сейчас мне нужно пользователю показать вопрос и варианты ответов и при этом если это шаг без ответа из пользователь может прислать в данном случае нажать кнопку с от с вариантом ответа или он может нажать кнопку вернуться назад и мы будем передавать пользователю и в том случае пользователю будет передаваться номер шага по сути у нас есть 4 номер шага я хочу знать какой номер шага сейчас вызвал пользователь какой номер заказа в базе и какой какая аиде шкаф у пользователя мне в принципе на данном этапе этого достаточно поэтому я сохраняю только такие данные чтобы дальше работать лучше я увидел там на тебя есть еще you answer поле и на пустую поэтому дальше не пошло там что было ниже ансар нет там учит выше вот парнем answer и она не попала на дается с и каким образом я разделяю то есть когда пользователь будет нажимать кнопки с ответом эти кнопки с ответом будут содержать давай-ка посмотрим следующим образом выглядеть я буду ему показывать текст кнопки здесь будет текст самого ответа и в колбе где это будет уходить в следующем виде меню ордер дальше номер заказа дальше серве и здесь будет номер шага то есть номер вопроса и вариант ответа буквенное значение и b и беседе в случае если пользователь нажимает кнопку выбрать вариант ответа то есть вот такая вот часть с вариантом ответа самого если пользователь нажимает кнопку назад допустим он находится на третьем шаге она хочет вернуться на 2 то мы используем такой же формат дальше но без варианта ответа вот и вот здесь как раз где ты обратил внимание всех идей то вот здесь вот в анси записывается как раз то что я искал бы где это достаем каким образом это выглядит то есть я разбиваю их на части в колбе гдей-то что у меня есть вот на примере степ посмотрим вот по сути колбе гдей-то который мне пришел вот он я его разбиваю по разделители этому через что у тебя там через нижнее подчеркивание я разбиваю и здесь я достаю как раз номер шага то же самое с ансар если ответа нет то он будет просто он define его здесь вообще не будет ни заблокировать процесс

Получение данных из Notion

вот дальше что я сразу же делу поскольку я понимаю уже что это анкета что пользователь заполняет ее и у меня есть номер шага я иду в нашем и достаю по сути и state vs серве я достаю все записи по фильтру вот этот тент psv серве какой фильтр я буду применять я знаю номер шага у меня здесь айди жки соответствуют номерам шагов поэтому по сути я по номеру шага как раз фильтр айди и курс номер шага можем попробовать исполнить ее по идее данные у нас есть внутри да вот он достает первый вопрос по тип какой тип проекта вы хотите реализовать ну и я получаю варианты ответов property эй би си что дальше я с этим делом ну я тоже слегка переформатировал вечен дейта теперь я называю по сути эти поля которые я получила мне теперь с тк ваш текст и отдельно просто явись и варианты ответов вот у меня такой вопрос наверное он легко решается на все же то есть здесь ты точно знаешь что несмотря на то что у тебя 4 столбика с ответами нужными ты работаешь только с тремя поэтому у тебя в сети на самом деле форматируется 3 ответа если пользователь на какой-нибудь этапе захочет еще там добавить вопрос четырьмя ответами а про этот узел забудет не будет ли здесь для него проблемы что но проблема будет то она небольшая я думаю достаточно быстро может решить наверно так же как мы можем типа добавить еще четвертый вариант ответа но если он будет пустым ну значит он дальше просто будет а он define то есть где то это наверное это в текущей логике это привет может привести к поломке надо будет просто поправить что что-то доделать что дальше с этим я делаю то есть вот здесь у меня есть пользовательские данные по самому заказу данные о текущем шаге какой-то вопрос какие варианты ответов я их и склеиваю с помощью либо яндекс потому что у меня здесь всегда один а этом будет и здесь 1-ой там я их склеиваю для того чтобы получить а этом внутри которого есть все эти данные дальше я произвожу следующую проверку есть ли ответ то есть это пользователь нажал кнопку с ответом или он нажал кнопку с кнопку назад да то есть по сути здесь я просто проверяю есть ли свойства ансар в джейсоне если нет то отдают ru если есть то отдает если нет то отдаю фолз и если ответа нет в данном случае у нас ответа никакого не было дальше я увожу эту ветку наверх где я понимаю что у меня могут быть следующие случаи либо пользователь нажал 1 ну то есть первый шаг по сути либо пользователь нажал кнопку назад но это вот те случаи когда мне не передастся не передаст никакой ответ пользователя и и здесь я разделяю их по сути как раз на эти два случая это старт самого serve или это кнопка назад как я это проверяю то есть по сути вот я проверяю является ли это первым шагом здесь я указываю просто степ и проверяю является ли он первым если это первый шаг и в нем нету ответа здесь следующее что я делаю для чего я его тут делаю по сути я здесь мало что меняю но эта заготовка на будущее я хочу вот отсюда дальше вот этот вот кусок вынести в отдельный сценарий то есть вот этот вот шаг ну пока он выглядит не таким не сказать что прямо обязательно потому что вот набор данных которые здесь они там практически идентичны единственное что я здесь еще добавляю это я прям сюда добавляю еще месяц айди type серове технически оля ордер его идеи больше ничего сюда не добавляю что такое ордер иди да здесь я формирую по сути тот уникальная техника который будет у этого заказа это по сути а идиш к самого и юзера стиле грамма и это дата заказа вот здесь вернемся чуть вот я здесь беру данные вот отсюда комбайн а сюда не попадают вот отсюда и отсюда здесь вас есть все арвида это где мы как раз представляем одесскую zero мы ее берем искал бека и здесь же мы проставляем ордер биберу следующим образом то есть вот у нас есть callback вере дейта и здесь мы получали вот сам call back непосредственно кубик диета и отсюда беру вот эти данные это дата роста дата при этом откуда она сюда попадает можем еще раз посмотреть так мы находимся сейчас в этом шаге вот так сделаем заказ назад теперь запущу в ручном режиме нажму заказ вот сейчас эта дата попала вот сюда в кнопку то есть она формируется вот здесь вот в ордер меню это как раз то что я обещал еще к этому вернуться вот кнопка заполнить анкету и у нее в колбе гдей-то идёт меню ордер и дальше вот такая вот часть я проверяю есть ли у сейчас вот здесь открою есть ли в триггере где пользователь нажал кнопку какую-то если у нее свойства едят дейт то есть редактировалось лиама его может не быть если это новое сообщение тогда если она есть то я просто подставляю из если точнее нет если она есть то оно подставиться если нет если она будет отдыхаем ты либо то в таком случае будет использоваться месяц штейн затравки сообщения которые есть всегда вот в принципе все вот здесь как раз она появляется а дальше я воспринимаю эту штуку как когда идентификатор заказа но не полный то есть это как вторая часть это тара заказа на первое это пользователь так сохраняю двигаемся дальше мы нажимаем заполнить анкету он у нас загружает какие-то данные так уже слишком далеко он уехал я еще не все рассказал мы остановились вот на этом серве по его так пользователь нажимает заполнить анкету мы получили данные теперь у нас есть набор данных с которым мы можем работать сосуда пройдет да есть набор данных дальше что я с

Есть набор данных. Что дальше?

этим хочу сделать то есть в каком случае пользователь может нажать первый вопрос при этом не прислать никакого ответа либо он только начал заполнять анкету либо он вернулся со второго шага в таком случае это будет старт что я делаю я ну здесь у меня условно это пустой шаг он ничего не делал это он для меня служит как бы условно узлом которому я могу обратиться из всех других такой placeholder вместо которого в последствии появится вызов еще одного сценария где как раз будет размещена эта часть отсюда по шагам что мы делаем сначала я хочу найти у нас здесь мы сформировали одышку самого ордера вот она и я хочу найти в базе да только здесь лишний символ появился какой-то откуда непонятно где т. д. а яша я помню вот здесь видимо случайно проставил так поправил что хочу сделать я хочу посмотреть в нарушении нет ли у меня уже такого заказа если его нет значит пользователь первый раз его сейчас начал заполнять и мне тогда его нужно просто завести что я делаю по сути я добавляю моушен где я использую operations get all ищу по базе ardors и применяю фильтр ордер идеи поля равняется ну вот собственно твои диски которые мы сформировали ставлю при этом настройку а вы is all today the для того чтобы он даже если ничего не нашел чтобы он пропускал дальше данные произвожу проверку новый это заказ или уже существующий здесь я проверяю существует ли у джейсон свойства о еде и то есть если в записи которая во мне отдал если а идиш к если нет значит это я воспринимаю это как новый заказ значит мне такой заказ нужно завести в базе я добавляю сюда в режиме пастру я просто пропускаю данные которые у меня есть уже здесь которые я сформировал для того чтобы дальше с ними работать есть из 2 input а в общем у меня есть уже данные какие то я понимаю что пользователь в данном случае пользователь начал заполнять анкету обмене прислал никакого ответа пока но я уже сохранить хочу сохранить заказы в базе чтобы дальше туда уже в него записывать те ответы которые он дальше пришлет в первую очередь я ищу пользователя в базе потому что я хочу сразу проставлять связь соответственно я также беру уже узел на уши напираешь get all все страницы из базы users по фильтру где т. г. аиде будет равняться по сути вот отсюда я перетягиваю простые узлы вот нахожу пользователя этот пользователь найден теперь у меня есть едешь к внутренние в самом на уж не этого пользователя и я могу и дальше использовать для проставления связей вот она эта иди я формирую дальше набор данных которые по сути я запишу уже дальше просто в нож здесь я указываю user айди user айди для того чтобы вы не представлять связь ты гайде и ордеру делайте как раз вот сформированный то есть уникальный идентификатор этого заказа да и здесь почему-то у нас не проставлен сейчас разберемся с этим всем не этих данных по идее достаточно для того чтобы записать данные в базу попробую записать может быть что сработает сейчас посмотрим сработала вот она появилась есть заказ в базе сейчас посмотрим что внутри здесь у меня была в самом модуле научно по сути я делала operation кредит в do it may скоро doors указываю вручную поля которые нужно прописать и делаю мэппинг отсюда просто перетаскиваю все данные которые нужно вписать плюс дополнительно техническое поле статус я ему просто проставляю статус нее нам нужно потому что я точно знаю что пользователь только начал сейчас все в качестве связи вот здесь я указываю юзера и добавляю только один а этом как раз и диск у самого юзера которую мы нашли в базе на уж на запись проставлена соответственно мы завели заказ и мы хотим пользователю что-то ответить мы хотим ему в ответ прислать первый вопрос который мы будем ждать ответ отправляем сообщения в качестве самого сообщения ставим вопрос кое с чем текст который мы получили в качестве кнопок мы ставим варианты ответов мы берем из как раз пилоты которые у нас уже есть вариант а вариант говорим с это текстовая часть и в качестве callback дейта формируем вот такую штуку здесь у нас будет ордер который мы подставили здесь номер шага и вариант ответа для того чтобы при нажатии на каждую кнопку мы знали к какому ордеру относится и к кому шагу и какой вариант ответа пользователь выбрал этот узел у нас будет только для первого до первое меню да он сейчас только для первого причем сейчас мы настроили только случай так что мы сейчас видим в боте он загружает данные я нажимаю отправить ему сообщение точнее отредактировать а он не нашел какие-то данные было я сейчас сохраню до сохраню запущу заново удалю заказ в базе приходим в заказ и нажимаем кнопку начать заполнение заполнить анкету он загружает данные и в итоге показывают первый вопрос при этом у нас заказ сохранился в базе все у него проставлена связь с пользователем у него тоже проставлена здесь ждем когда мы увидим итог работы стало дольше работать я не знаю почему именно наверное из-за того что просто увеличилось количество слов может быть ему памяти не хватает я думаю это из-за на ужин у вас быть и за на уж и мне там на форуме отвечали что это они не очень оптимизированы вот когда их много на холсте то они могут существенно нагружать поэтому вы нас отдельных кусков в отдельные рабочие процессы это вполне себе неплохая идея да вот как раз у нас сработал сценарий когда у нас действительно новый заказ и соответственно пользователь но он просто получил первый вопрос может на него отвечать что дальше будет реализована как только по сути здесь какие у нас есть варианты либо вернуться назад либо ответить на какой-то от нас пока будем работать с ответами на вопросы то есть сейчас мне нужно сделать обработку по шагам здесь мы проверяли есть ли ответ и по сути сейчас когда я нажму кнопку с ответом с каким-то запустим с ответом он загружает данные и на этом он остановится здесь мы получим приход в верх ветку falls поскольку здесь у него будет варианты ответов у меня здесь проверка таким образом была настроена что когда есть ответ это уходит фолз когда их нет то уходит в true вот мы получили ветку falls и в данном случае у нас есть свойство а сами

Работа с ответм пользователя

понимаем что под пользователь что-то нам ответил что я с этим дальше делаю здесь я добавляю вот такие вот но operations модули для того чтобы по сути разделить логически для себя чисто визуально и потом они же вместо них появится вызов каких-то внешних сценариев куда я буду переносить соединяется непреодолимое иногда канавок она вас себя видит странно например не позволяет выделить узлы тогда я сохраняю перезагружаю до получилось что я делаю дальше по сути я получил теперь я знаю что пользователя мне прислал какой-то ответ прежде всего я хочу из базы получить следующий шаг то есть я хочу получить данные которые мне нужно будет дальше пользователю отправить показать я так же как и до этого я искал вопрос я ищу также ну соответственно здесь я просто к текущему шагу прибавляю единичку для того что запросить следующий шаг сейчас мы были на первом шаге и из базы я запрашиваю второй шаг сам вопрос и вариант его ответов получил произвожу проверку является ли причем здесь всегда но тоже ставлю он выслал падает а потому что он может не найти допустим если это последний вопрос то он не найдёт следующий вопрос поэтому ставлю тоже а луковый салат под дейта чтобы если вам не находят тонда отдавал бы пустой а этом здесь я проверяю является ли это последним шагом и в случае если это последний шаг я пользователь что-то другое покажу не то что я сейчас запросил там следующий вопрос покажу и мой результат просто какой-то как я это проверяю также в общем-то смотрю есть ли у джейсона который мы получили свойства идеи если у него такое поле если она есть отдают роуз true если нет то отдаю фолз уверяю на то что ну грубо говоря у меня ветка true это будет на тот случай если нету это если это действительно последний шаг если последний шаг а и диски не будет он отдаст нам простую запись соответственно true ветка это завершение самого вопроса нас следующий шаг есть произведем сейчас проверку поэтому он отдаст сейчас ветку фолз я понимаю теперь что пользователь выбрал вариант ответа при этом это не последний шаг есть какой-то вопрос который мы следующем ему и мы можем выдать показать значит что мне нужно сделать мне нужно во-первых сохранить ответ пользователя в базе во вторых отдать ему сообщением новый вопрос формирую здесь набор данных которые мне дальше нужно пустить здесь будет просто исключительно сам вопрос варианты ответов да и номер шага и сразу же пользователю отдают чтобы он не ждал пока мы в базу все сохраним текущего ответы я ему сразу выдает следующий вопрос формирую в нем также когда этого мы первый вопрос показывали здесь также редактирую уже имеющегося у нас сообщение сюда вставляю текст вопроса в кнопке в текстовую часть вставляю то что у нас получено как раз вот здесь-то как мы сформировали в колбе гдей-то по-прежнему подставляю номер ордера ну и номер шага здесь еще здесь sage я вот хочу опять свой вопрос вернуть у нас здесь жестко зафиксировано что три варианта ответов в анкете может быть принципе на ком-то шаги и два варианта ну и 4 ну максимум какой-нибудь вот этим узлом мы такое не сможем предусмотреть потому что нам надо обязательно 3 ответ отправить я вот думаю здесь наверное какой то нужно предусмотреть какой-то вариант либо сделать такую развилку ти поскольку у нас пришло ответов если два то показать такой узел telegram если три то такой ну то есть если вот закрыть это окошко то я думаю тут будет типа такого свеча перед телеграммам вот который будет наверное раскидывать по количеству ответов это можно можем можно так но это в итоге приведет к на к нагромождению и версия думаю это только смотри то есть свеча разделит на разные узлы telegram а потом мы все их опять типа соединим потому что мы будем точно знать что ну нам надо один какой то этот узел обработать а потом все должно быть по идее независимо уже от числа ответов я думаю по сути да но я больше вижу реализацию через http request то есть мы уже используем не модуль самого телеграммы берем очки теперь и квест отправляем запрос внутри которого мы динамически формируем белоусом с кнопками это были это этот билет пил с кнопками но мы формируем просто до маленькой джесс функции какой-нибудь так можем может быть даже можно будет без функции обойтись то есть вот условно можно использовать jme & спа библиотека которая встроена вот но что абсолютно точно да то есть придется использовать эти теперь и крест потому что вот здесь вот в модуле телеграма в самом мы сразу указываем количество кнопок количество именно строк количество колонок и всего прочего и вот это вот да именно в этом месте наверное присутствует это жесткое ограничение но она обходится с помощью учить учтите перекрестия такое делали своих ботов это небо за то есть можно на самом деле как ты говоришь можно решить с помощью свеча но тогда будет нагромождение если там если это первый этап и ты только проектируя что только начинаешь собирать то это нормально потом просто в процессе дальше оптимизирует сейчас нам для целей этого видео не будем на этом заострять по сути сейчас мы находимся в состоянии когда бот как бы загружает данные и мы уже получили данные нового шага то есть сам вопросы варианты ответов и можем пользователю его отправить показать вот мы получили следующий вопрос следующие варианты ответов не там посуду

Запись ответа пользователя в базу данных

как мои пользователи отправили масирова на бэкграунде должны записать в базовую что пользователи на этом шаге нам ответил типа пока он изучает то что стоит делать на следующем шаге предыдущие обрабатываем до что мы делаем в первую очередь мы находим в базе сам заказ к которому был этот ответ ищем мы его по фильтру по ордеру ай ди ардер you a demo как раз таким образом мы склеиваем из айди самого юзера и ай ди ардер это не один ордер и это на самом деле дата вот который мы получаем нашли в базе этот ордер дальше формируем набор данных которые мы хотим туда отправить по сути здесь а идее самого ордера как раз который мы нашли вот он женишке да здесь ответ который нам прислал пользователь мы его достаём из комбайна подставляем сюда вариант ответа которых пользователю нам прислал и номер шага ну а дальше мы просто обновляем ту запись которой мы как раздает вы нашли что у нас для этого есть у нас есть айди страницы которые мы вписываем сюда вот у найдеш ник я динамически указываю какой в какое поле мы записываем вот у нас есть серве один сервер 2003 это номер шага в которой мы хотим записать здесь я указываю его следующим образом серве нижнее подчеркивание сюда представляю как раз номер шага и через такой вертикальный слэш я не знаю как правильно символ называется указываем тип данных которые мы сюда записываем слушай если пользователь будет очень шустро перемещаться по опроснику ну то есть типа он уже был успел прочитать второе вопросы нажать на кнопку мы типа на фоне еще только 1 сохраняем наши базы данных и тоже в какой-то очередь помещается все его действия то есть хороший вопрос и я столкнулся с тем что в одном месте как раз в одном месте это как раз создавала проблему определенную расскажу где точно когда я пользователю выдаю по моему и когда я пользователю выдавал самый первый вопрос пользователь мог очень быстро нажать на кнопку с вариантом ответа а сам ордер и еще не записался в базу и этот вариант ответа некуда было записывать вот с этим я столкнулся и поэтому сделано загружаем до или как-то там я поэтому я здесь вот именно вот эту вот часть с вариантами ответов да вот здесь варианты ответов первый раз когда я показываю же ставлю как раз после того как точно создан в базисом заказ ну то есть если хочет чтобы все было гарантированно просто меняешь местами узел телеграммы и вот по сути да но вот в данном случае я проверял несколько раз в данном случае все нормально отрабатывает и пользователь может быстро проходится уже дальше по ответам они все равно все будут записываться ну вот последний узел что делает вот у нас пустой заказ в котором еще ничего нет нам нужно сюда все rave один запуск записать тот вариант ответа который выбрал пользователь так обновление windows новейших прекрасный вам не чтобы не выключил тебя внезапно вот он записал варианты ответ варианты ответов который пользователь прислал дальше ну по сути теперь процессе именно вариантов ответов ну то есть самих ответов пользователя он будет идти целиком вот таким вот образом за исключением последнего самого последнего вопроса и проверим еще раз запустим здесь ответим на второй вопрос загружает какие-то данные загрузил данные 3 вопроса показал мне его при этом сам он добавил сюда уже ответ на второй вопрос а вы найти наш пока не видим но ждем сейчас покажет то есть да вот судя потому что все уже произошло а мы этого не видим можно наверное сказать что проблема именно с фронтам с браузером самим или памяти ему не хватает то ли еще чего то стал совсем долго крутится так то все утром отработал что еще я хочу реализовать у меня есть кнопка такая назад я хочу чтобы у пользователя была возможность вернуться назад и изменить ответ который он уже сохранил что я показываю на кнопки назад пользователю вот здесь вот я добавляю по сути я показываю ему просто номер шага в качестве call back дейта указываю номер шага без варианта ответа рассказывал да и но при этом чтобы здесь я отнимаю просто единичку от текущего номер шага вот и в случае если пользователь нажмет на жмет назад то вот здесь вот мы пройдем в ветку true потому что у него не будет никакого ответа а вот здесь вот мы уйдем в ветку фолз потому что это будет не первый вопрос давай попробуем это воспроизвести так здесь я пока разорвут vii видно да так на чем мы остановились у нас поясняю нас было небольшое зависание поэтому мы закрыли и вернулись к нашей записи так что не удивляйтесь что экрану вернуться какой случае мы сейчас обрабатываем мы находимся на третьем шаге в данный момент и мы хотим вернуться на второй по сути я нажимаю кнопку назад он показывает нам вот это техническое сообщение загружаю до дна и а здесь по сути мы ждем когда он придёт в ветку фолз нам нужно будет эту ветку обработать а вот он пришел данные у нас пришли в фолз еще раз объясню почему фолз здесь мы проверяем что мы проверяем в первую очередь есть ли ответ здесь ответа не было здесь мы проверяем являются ли этот шаг в первым потому что на первом шаге мы добавляем запись в базу обновляем запись базе и так далее это не первый шаг это второй шаг соответственно что я хочу с этим сделать в первую очередь я хочу получить данные о самом заказе вот я нашел заказ в базе я возвращаю статус этого заказа в нью то есть когда у меня заказ вообще целиком будет завершён и я буду переводить его в статус ту ду для того чтобы я у себя в базе отделял сразу но видел отделенные заказы которые уже завершены полностью заполненный от тех которые пользователи начал заполнять но еще не заполнил соответственно здесь я просто по сути делаю обновление самого статуса в базе я обновляю с трудом a new если он был не он так и остается new и пользователю я отправляю то что я уже получил вот здесь на этом шаге мы нашли сам вопрос вопросы варианты ответов на нас есть они здесь также к нам пришли мы здесь видим вот uniforce branch их вот вопрос вот варианты ответов они у нас есть я могу к ним обратиться через через любые за этих узлов по сути я пользователю как раз показываю их и больше ничего не делаю показываю так же текст вопроса показываю на кнопках тексты вариантов ответов и в колбе гдей-то таким же образом добавляю данные указывают дату указывают номер шагай вариант ответа все пользователь нажал назад мы сейчас как раз ожидаем в базе все необходимые операции мы выполнили показываем пользователю обновлены обновленные данные по сотен на шаг назад возращаемся показываем ему вопрос 2 шага и варианты ответов вот эта часть по сути она помогает нам реализовать кнопку назад на каждом из этапов сохраняем теперь какое отличие будет вот сейчас мы находимся на втором шаге и хотим вернуться на 1 вот в этом случае я буду делать еще дополнительные действия я буду очищать все варианты ответов в уже заполненной анкете как я это делаю здесь я нажимаю кнопку назад так вот здесь я разорву пока связь сохранил запущу в ручном режиме какая кнопку назад и сейчас я окажусь но по сути вот здесь вот в этой ветке потому что здесь мы проверяли является ли это первым шагом сейчас это действительно будет первый шаг что произойдет он посмотрит существует ли такой заказ в базе он этот заказ найдет вот мы нашли этот заказ он существует соответственно мы произвели проверку есть ли у него ай ди у него есть значит что я хочу с этим сделать я хочу у этого заказа очистить все поля чтобы он стал пустым я добавляю сюда мерч байки наружу я по ключу вот такому и иди которые я сама сформировал здесь у вас есть какой-то мэсседж который мы пользователю хотим отправить по сути здесь у нас с первого шага это вопрос первого шага и варианты ответов первого шага склеил эти данные дальше я по сути делаю операцию апдейт для той страничке которую я нашел страничку заказа у нее и я обновляю статус на new если он вдруг какой-то другой и у нее я просто все все все поля делаю пустыми пост после того как это сделал я отправляю то же самое сообщение которое я отправляю при создании заказа в базе т. е. в данном случае что не изменяется вот этот заказ я его обновляю он становится пустым все вы чистилась и отправляю пользователю сообщения для того чтобы он увидел данные первого шага то есть заказ у него еще есть но поскольку он на первом экране то там пока пусто по сути тогда так сохраняя сейчас воспроизведем сейчас здесь данные устарели поэтому я просто воспроизведу с нуля посмотрим как это выглядит вот я перехожу в заказ заполняя анкету отвечаю на первый вопрос у меня появились здесь данные так это вот он за к стеку еще у меня появился происходит пока еще у нас здесь и активно но похоже мне скоро выйдет из ума ну хорошо ну по сути вот эту часть получается мы тоже закончили я просто проверю как это работает в ручном режиме вот я хочу вернуться на первый шаг возвращаюсь на первый шаг он здесь производит какие-то операции поэтому он долго думают что произошло то есть по сути мы видим здесь что он вычислил все здесь мы видим что он показал нам первый вопрос с вариантами ответов и здесь ждем по сути он пройдет вот по этой ветке придет сюда хорошо ладно давай тогда сейчас прервемся и вернемся в давай это время закончил это

Вспоминаем, что было в 1-й части

так на чем мы закончили в принципе у нас основная логика процессора ответов она готова мы закончили на том что мы сделали во первых мы сделали все пункты меню по которым пользователь может пройти вы сделали ветку для самого первого раза когда пользователь только-только начинает заполнить опросник для него в базе создается новая запись в табличке ardors и дальше все ответы будут попадать в эту запись дальше мы сделали вид которая отвечает за процессинг ответов пользователей когда пользователь выбрал какой-то ответ на вопрос и из базы сначала запрашиваем следующий вопрос с вариантами ответов и значит получаем запись заказа и об этих перед этим мы пользователь уже показывают сообщение с вопрос вариантов ответов а на фоне после того как мы отправили это сообщение мы записываю в базу итоге на предыдущий шаг какой вариант он выбрал плюс мы сделали ветку для того чтобы пользователь мог нажимаете кнопку назад когда пользователь нажимает назад вернуться на предыдущий вопрос мы ничего не изменяем самом заказе по сути пользователь не присылают никакого ответа просто запрещал запрашивает предыдущий вопрос мы его получаем из базы и единственное что мы делаем это мы изменяем статус заказа если вдруг статус уже был проставлен а как тут заполненные последующие обработки мы его возвращаем статус new вот на этом мы остановились да и плюс последнее что мы сделали это мы сделали ветку где пользователь возвращается на самый-самый первый шаг вот на этом шаге мы вычищаем в заказе все результаты все ответы которые пользователь до этого нам прислал то есть пользователь по сути начинает заполнение самого начала что нам остается сделать по сути вот как сейчас это работает попробую просто посмотреть самого начала здесь я все удалю отправляю старт и ничего не происходит может и тестировал процессы нужно выключить включить я посмотрю нам так вот он ответил видимо у меня просто не было активирован просто так же бывает когда ты и активный пытаюсь очистить то потом надо выключать включать у меня такое бывало а вот он сработал ну да надо отключить и включить не открывал попробуем то есть вот у нас кнопка заказ при нажатии мы проваливаемся в меню заказов выбираем пункт заполнить анкету при нажатии на него он создал нам новую запись в табличке orbert дальше мы выбираем вариант ответа на первый вопрос показывает нам следующий вопрос при этом он проставляет первый вариант ответа в первую колонку дальше нажимаем следующий показывает следующий вопрос и вот мы на четвертом вопросе на последнем сейчас мы не реализовали еще вот эту ответку я ее отключил для того чтобы получить данные объяснить что я здесь пытаюсь сделать то есть вот у нас есть сейчас самый последний вопрос который мы ждем от пользователя ответ 4 вопрос что я хочу чтобы происходило когда

Суммарная информация в конце анкеты

пользователь на него отвечает я хочу пользователю показать запретим о том что он закончил заполнение анкеты и показать ему целиком ту анкету который он запомнил то есть все вопросы и все варианты ответов которые он выбрал для того чтобы он убедился что действительно все верно при этом дать ему возможность вернуться назад по-прежнему и поменять что-то если он вдруг решил что-то изменить то есть сеть с что и то есть по сути что будет именно отличаться в логике вот в этой здесь мы когда на предыдущий вопрос пользователь отвечает мы запрашиваем следующий степ и дальше мы ему показываем следующий вопрос отличаться будет в первую очередь то что следующего вопроса эту нам нечего ему показать поэтому вот эту вот ветка не подойдет плюс что еще будет отличаться я на этом этапе если это последний вопрос я хочу во первых самого заказа поменять статус я хочу чтобы он стал вместо new уже туду и я как оператор этой базы это как менеджер я бы уже видел в самой базе что этот заказ заполненный с ним можно работать и еще будет отличаться то что я хочу как раз пользователю показать весь итог на какие вопросы как он ответил чтобы он это все еще раз мог проверить и либо ты двинуться дальше либо вернуться назад значит что у нас здесь происходит я запущу сейчас в ручном режиме и выберу любой вариант ответа вот это последний вопрос где вы должны храниться данные напротив я в европе хочу хранить все он нам показывает что он загружает данные и дальше сейчас он ничего не покажет мы остановимся вот здесь по проверке последний или это шаг как я здесь произвожу проверку еще раз напомню я проверяю есть ли едешь к в списке следующих вопросов то есть вот здесь вот я запрашиваю из базы следующий вопрос по сути степ + 1 он ничего не находит выпускает дальше здесь я проверяю и понимаю что нету следующего легко вопрос у пришедших записей нету поля идеи он уходит в true что я дальше хочу сделать то есть по шагам сначала я хочу получить из базы серве вообще все вопросы еще раз то есть для чего это нужно я хочу для пользователя сделать сообщение где перечислить все вопросы и выбранные им варианты ответов на первом шаге я из базы серве запрашиваю все вопросы выполняю получил все вопросы вот у меня есть вот колобка property кыш отсюда я буду брать сами вопросы дальше я на следующем шаге запрашивают целиком весь заказ который пользователь уже заполнен то есть его анкету как это выглядит из базы ордеров я запрашиваю все записи с где ордер you a и d равняется вот такой комбинации то есть это а идею zero plus номер заказа которые у нас а не ходи за шитов кнопку по сути все получаем получаю его ордер теперь у меня есть и список вопросов и итоговый ордер заказ который пользователь уже сформировал со всеми ответами на его вопросы дальше я упокою это упаковываю все данные в удобные для меня формата здесь будет ордер здесь будет набор по сути набор ответов и шаги как это будет выглядеть а нет извиняюсь здесь в данном случае я как раз таки формирую ответ на последний вопрос чтобы записать его в базу потому что я еще этого не сделал на следующем шаге как раз я записываю паз последний ответ в базу там посмотрим вот здесь в ордер последнего ответа пока нет соответственно я облечу тот самый орган который мы получили на предыдущем шаге и записываю в него ответ в модуле но он выглядит это следующим образом сейчас открою ну то есть я облечу просто по айди самой странице во-первых я меняю статус на ту ду как и хотел а во-вторых поле серове 4 то есть 4 шаг я заношу туда за нашу туда ответ который как раз получили на этом шаге произвожу операцию смотрим в ardors у нас появилось 4 ответ у нас изменился статус что дальше я делаю я дальше хочу отправить пользователю сообщения с результатах то есть я еще раз формирую для удобства как раз полный набор данных который мне нужен для того чтобы отправить пользователь это сообщения во-первых я делаю все упаковывая все в единый в одно поле в один объект мессидж и у него делу внутри вложенные поля внутри которых будут отдельные элементы в данном случае хедер заголовок выглядит он следующим образом то есть я получил заказ и я пользователю сообщаю что во-первых я его благодарю дальше я сообщаю что заказ с таким-то номером сохранён в базе для того чтобы ну предположим пользователь хочет дополнительно в будущем там узнать или он обращается и говорит что я делал вот такой по заказ или он хочет узнать о том что заказы происходит ряд бить его и таким образом будет знать айди самого заказа это будет заголовком из этих всех элементов я позже в модуле телеграмму по сути склею единое сообщение которое вам пользователю отправил также тело самого сообщения то что будет дальше под заголовком здесь я делаю следующим образом то есть я перечисляю вопросы выделяю их жирным один вопрос и один ответ к нему откуда я беру вопросы я обращаюсь через айтюнс к модулю get all степс это les temps у меня вот здесь мы как раз запрашивали все все вопросы из таблички серве возвращаюсь и так я через сайт упс обращаюсь как раз к модулю get all ships и указываю в явном виде какой элемент оттуда взять здесь у меня первый элемент 2 3 и 4 это вопрос и дальше ниже под ними курсивом я использую html разметку для того чтобы декорацию какую-то сделать для текста внутри сообщения и сразу же здесь применяя сами html-теги то есть это болт то есть выделение жирным ой это italic то есть выделение курсивом с таким образом у меня сам вопрос будет бал дом и курсива будет ответ который пользователь прислал и в общем то здесь я в качестве ответа беру то что я получил на шаге get комплит ордер давно и отсюда продолжает кочевать и приходит прям непосредственно сюда поэтому к ним я обращаюсь через не через сайт мтс а через джейсон потому что они по сути являются входящими домами я прям здесь могу достать и просто перечисляю по сути из того ордера которые я получил по очереди пока про property серые хотя я не уверен может быть на самом деле это я вот отсюда получаю когда я обучу arber статус да это я получаю отсюда то есть в ответ когда я вношу последние змеи изменения да я как раз в ответ получают целиком всю запись включая последнее поле ответ на последний вопрос да да и вот отсюда как раз дальше я их и подставляю вот сформировал здесь будет а то есть тело самого ответ выглядит следующим образом вот они вопросы вот они ответы между ними разрыв в одну строчку и какой-то подвал самого сообщения то есть footer просто пишу о том что я свяжусь с вами соответственно запускаю данные у меня сформировались они ушли в таком виде как мне нужно по сути вот у меня один объект мессидж и внутреннего три поля это хедер body fat а дальше мне остается только отправить это сообщение пользователю также как и раньше я представляю его лодыжку и месседжа идеи внутри которого мы производим редактирование и внутри поля текст я как раз и склеиваю то что я получил на предыдущем шаге джейсон с feeder весом на исходе джейсон хутор вот так будет выглядеть целиком текст всего сообщения в качестве кнопок к этому сообщению я добавляю во-первых кнопку назад на тот случай если пользователь хочет что-то исправить и здесь я по аналогии с тем как делал раньше кнопки по сути я просто указываю меню ордер дальше через нижнее подчеркивание ради самого оратора серы и через нижние подчёркивания номер шага номер шага 4 здесь нам не нужно производить какие вычисления он у нас так вот сейчас по сути в данных хранится и еще одну кнопку ему даю возврат просто в главное меню это меню нижние подчёркивания холл попробуем исполнить может быть одно не выполнится если вдруг сообщения устарела ни одного выполнилась можно посмотреть как это выглядит вот так вот это выглядит уже в телеграме я дарю за обращение заказ сохранены в базе вот список вопросов с ответами и footer все здесь я могу или вернуться либо назад либо уйти в главное меню для кнопки назад логика у нас уже существует то есть если я вернусь назад у нас работает по сути вот это вот ветка если я вернусь главное меню а слоги как для него тоже уже существует сохраняю перезапускаю и пробую просто ну допустим там вернуться назад вижу четвертый вопрос он у нас уже есть в базе до этого мы выбрали европа при этом мы видим что он изменил статус остуду на неё поскольку я вернулся назад выбирая не европу а допустим сша нас он перезаписал он изменил статус туда и он показал нам итоговое сообщение и

Удаление незавершенных заказов

и последнюю штуку которую я думаю имеет смысл реализовать которую я еще здесь не показал сценарию это те случаи когда представим себе вот пользователь нажал заказ выбрал заполнить анкету начал заполнять заполнение может быть ответил на какой-то вопрос может быть не ответил а потом вдруг внезапно он либо вообще вышел там вернулся назад в главное меню либо нажал еще раз старт и пошел еще раз в заказ еще раз заполнить анкету вот в таком случае у нас постепенно будут плодиться пустые заказы вот такие пульт пользователь ничего не ответил а запись в базе существует и чтобы этого избежать как я мыслю я у нас есть шаг конкретно это когда пользователь нажал заполнить анкету вот на этом шаге что я хочу делать я хочу проверять а есть ли у пользователя в базе незаполненные какие-то заказы и завершенные и если одни есть на этом шаге я просто хочу их удалять ну потому что это незавершенный заказ а пользователь уже начал заполнять новый то есть это не заполненная анкета пользователь уже новую начался в таком случае что по сути я делаю здесь по шагам просто объясню вот пользователь пришел в меню заказов в меню заполнения анкеты я формирую просто пользовательские данные с которыми дальше буду работать по сути я просто telegram-а иди сюда вписываю этот модуль ничего не делает а просто через себя пропускает данные но он такой некий placeholder когда я буду выносить это в отдельный сервис здесь появится модуль вызова просто другого сценария дальше я нахожу заказы самого пользователя я возвращаю все заказы где ордер и айди содержит именно telegram айди этого пользователя и где статус new от два условия то есть во первых ордера и один одержит одышку пользователя самого и статус при этом у за казанью то есть мы помним все заказы которые пользователь уже завершил его точно уверен он ответил на все вопросы и вернулся допустим главными у них у всех будет статус туду но только если я в базе руками сам чего изменил а все заказы где которые являются new но при этом пользователь создает новый заказ я считаю что такие заказы можно удалить дать возможность пользователю просто новый заказ собрать я получил такие заказы и дальше следующем модуле я произвожу операцию архив то есть архиве rar здесь нету операция удалить велит операция архивировать по сути я архивируйте обращаюсь через айди как раз к тем страницам которые я нашел на предыдущем шаге попробуем в ручном режиме это все сделать так сохраню вернусь назад и сейчас в ручном режиме наверное просто запущу чтобы посмотреть что происходит я соединил уже все модули заготовлен то есть по сути сейчас это должно сработать посмотрим а но это уже произошло да давай все-таки еще раз посмотрим на то что происходит вот я нажимаю кнопку заполнить анкету а кнопка заполнить анкету нас ведет уже сразу вот сюда здесь мы уже увидели да теперь воспроизводим следующий кейс пользователи нажимает назад то есть вернуться в меню у нас появился новый заказ вот you мы можем его на самом деле сделать дубли кейт чтобы у нас было два например таких и что-то здесь поменять добавить какой-то как будто бы вариант ответа сейчас в ручном режиме также называют назад то есть мы возвращаемся в меню сама и вот у нас пропали все заказы которые были пусты состав со статусом и вот что произошло здесь мы пользователю показали само меню дальше мы здесь находим те самые от кеты заказы у которых которые в статусе new у этого пользователя вот мы получили две таких записи и дальше обе эти записи архиве rar вот в принципе и вся операция а это происходит еще раз при выходе пользователя из назад в основное меню или когда он из основного меню пытается новый мне указал что когда ты вышел назад из анкеты в меню тогда он удалил и когда назад и когда вперед условно но то есть когда пользователь приходит в меню заказ на разработку где либо он пойдет заполнять анкету любом будет это заполнять форму лететь здесь чистится на пустые заказа всё я понял отлично вот в принципе вот и все вот и весь цикл для удобства что еще для удобства я для себя оставил вот такие вот напираешь модули которые ничего не делают назвал их здесь в данном случае у меня ardors клинер ну то есть это будет некий процесс отдельный внешний который отвечает за вы чистку пустых ордеров дальше серве процент но это по сути скрипт сценарий который отвечает за процессинг раза при русскими звень юноша минутки 3 осталось чтобы вот как-то уложиться в общем все дальше как это можно оптимизировать здесь две точки оптимизации во-первых сейчас у нас фиксированное количество ответов фиксированное количество вопросов самих это то место которое можно развивать оптимизировать можно сделать динамическое динамический забор данных и представления но для этого придется использовать с большой вероятностью не готовый модуль telegram http-запрос чтобы можно было динамически формировать сам набор кнопок вот и вторая. для оптимизации это разбить ее всего вот этого вот процесса на отдельные микропроцессоры какие-то которые каждый будут отвечать за что-то свое какое-то отдельное действие дан у нас еще осталось на самом деле отправка сообщения свободной форме знаешь я подумал то есть вот я как раз тестировал на днях модуль комьюнити модуль который сделали для создания форм видел ты его не о бок и мне показалось что это такое вполне себе интересное решение можно заменить есть большой вот найден assistant и а но здесь я наверное не смогу показать сочинской она выглядит короче я подумал что можно как раз заменить отправка сообщения заполнением форм самой ты можно будет как другой раз даже просто подходит время к концу вот у нас еще осталась большая тема это запуск web приложений из кнопки меню и думаю там наш в следующем видео я надеюсь мы сможем это дело осветить давай да в принципе это совсем несложно это буквально там два маленьких сценарий а где есть веб хук и где есть ответ в виде html страничке которая внутри самого же сценарий формируются хорошо тогда давай на этом этот раз мы завершим и спасибо тебе большое что опять пришел поделился мудростью и тебе спасибо тоже да тогда все до новых встреч с тобой и со зрителями все пока-пока

Другие видео автора — School of Practical Skills

Ctrl+V

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник