Создаём Waitlist (Лист Ожидания) на Автопилоте с ИИ По Шагам Без Кода (n8n, Telegram, Supabase)
26:25

Создаём Waitlist (Лист Ожидания) на Автопилоте с ИИ По Шагам Без Кода (n8n, Telegram, Supabase)

ИИшенка | AI Automation 14.05.2025 3 010 просмотров 114 лайков обн. 18.02.2026
Поделиться Telegram VK Бот
Транскрипт Скачать .md
Анализ с AI
Описание видео
🚀 Pro тут: https://t.me/iishenka_pro_bot ⭐️ Все бесплатные материалы из этого видео тут: https://t.me/+W1SnvvkcV6A3NWMy В этом видео мы создадим автоматический лист ожидания с искусственным интеллектом, который интегрируется с Telegram и Supabase. Я покажу, как развернуть n8n-агента в бесплатном облаке, подключить к нему ИИ, собрать заявки в Supabase и отправлять пользователям автоматические ответы через Telegram. Всё — без затрат на сервер и со 100% автоматизацией. Следующее видео: https://youtu.be/r6WDatH_ua8 🔥 Независимо от того, работаете ли вы с AI-агентами или только начинаете осваивать автоматизации в n8n, этот урок поможет вам овладеть процессом автоматической загрузки файлов для любых задач. 💡 Не забудьте поставить лайк и подписаться, чтобы не пропустить новые уроки по n8n и AI-агентам. Давайте сделаем AI-автоматизации простыми! 🙌 Тайм-коды: 00:35 - Демо 04:10 - Настраиваем Telegram 06:56 - Велкам сообщение 08:50 - Настраиваем Supabase 13:02 - LLM Chain вручную 14:11 - Подключаем парсер 19:30 - Пишем SQL 25:10 - Отрабатываем ошибки Не забудьте поставить лайк, подписаться и нажать на колокольчик, чтобы не пропустить новые видео о AI-агентах и автоматизациях!

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

  1. 0:00 <Untitled Chapter 1> 77 сл.
  2. 0:35 Демо 520 сл.
  3. 4:10 Настраиваем Telegram 467 сл.
  4. 6:56 Велкам сообщение 264 сл.
  5. 8:50 Настраиваем Supabase 706 сл.
  6. 13:02 LLM Chain вручную 189 сл.
  7. 14:11 Подключаем парсер 822 сл.
  8. 19:30 Пишем SQL 851 сл.
  9. 25:10 Отрабатываем ошибки 190 сл.
0:00

<Untitled Chapter 1>

Всем привет. Сегодня мы вместе сделаем бота, который умеет собирать контакты в лист ожидания, рассылает приглашения, который заинтегрирован с нейронками, который заинтегрирован с нашей базой данных. Мы сегодня напишем несколько простеньких SQL-запросов. Мы сегодня посмотрим, как это работает. Это бот реальный. Мы его сами используем сейчас, в текущий момент для того, чтобы собирать людей в нашу прогруппу, рассылать приглашения. И всё это организовано через Telegram и нейронки. Давайте посмотрим, как это работает. Бот объясняет, что он может
0:35

Демо

делать. Человек нажимает старт. После этого бот рассказывает какие-то, а, обстоятельства, какие-то условия участия в группе и после этого отрабатывает обратную связь. Например, человек может поздороваться, бот отработает эту связь и напомнит, что нам нужно от человека, да? То есть всем привет, но чтобы добавить тебя в лист ожидания, дай свой имеilл. Я скажу: "Не дам". Тогда бот подумает, скажет: "Ха-ха, не переживай, я не злюсь, но лучше бы ты его написал". То есть бот настаивает. Я скажу: "А не напишу". Тогда бот ещё раз подумает и опять скажет, что если сможешь предоставить, тогда это разовьёт наше общение. И тогда в какой-то момент человек соглашается: "Ну хорошо, вот мой email". И скажем: 1 да 22 Ццц. Бот быстренько подумает и скажет, что я запомнил твой имеil. После этого придёт нотификация лично мне в Telegram в другой бот, который скажет: "У тебя новая запись в лист ожидания, пора отрабатывать". И самое интересное, что когда мы пойдём в нашу базу, то мы увидим коммуникацию, мы увидим, а атрибут subsced или не subscribe, да, мы увидим, а переписку, которую вёл человек. И в последнем, а, в последней записи мы видим, что когда человек согласился отдать имеil, мы видим вытащенный имеil для того, чтобы нам проще было потом отослать инвайт человеку и автоматизировать эту историю. Как это всё происходит? Этот бот несколько сложнее, чем те, которые мы строили до этого. У него больше модулей. Но самое интересное, что внутри этого бота мы с вами разберёмся, а каким же образом работают агенты, каким образом они получают контексты, историю переписок. То есть мы не будем использовать готовый модуль, готовую ноду от N8N. Мы вместе с вами воссоздадим эту ноду своими руками для того, чтобы мы понимали механизм работы агента. И я хочу напомнить, что абсолютно все проекты, которые мы вместе с вами создаём видео, вы можете найти в бесплатном Telegram-канале, ссылка на него в описании. Вы заходите в этот Telegram-канал, вы найдёте там JSON файл именно этого проекта, вы его скачиваете, этот файл, и когда вы сами заходите себе в новый проект N8N, вы заходите в троеточие и нажимаете import from file. После этого весь проект, который мы создадим, также у вас отобразится в вашем ворксйсе. Если вы хотите погрузиться глубже в технические аспекты того, как работает NCM, искусственный интеллект, участвовать в живом общении, получать усложнённые версии проектов, которые мы делаем видео, и быть в окружении тех людей, которые сейчас занимаются искусственным интеллектом, будь вы новичок или уже продвинутый, обязательно посмотрите на нашу прогруппу. Ссылка на эту группу также есть в описании. Переходите, смотрите, присоединяйтесь. Мы продолжаем. Как всегда, мы начинаем с пустой ноды. Нас интересует Telegram, да, мы хотим получить некоторые сообщения и отреагировать на это сообщение. Мы подключаем credential. Это для этого нам нужно создать бота в ботфаer. Мы это делали вместе, опять же, в первом видео. Это довольно быстро и просто делается. Идите, посмотрите, создайте ботов, бор и вы получите креды, да? Вы их сюда нажмёте Create New Credential, вставите ваш access token от Botfazer и можем продолжать дальше. У меня уже есть мой созданный бот, да, для всех тестов. Соответственно, я подключаю его к реды, и с этого момента я могу протестировать
4:10

Настраиваем Telegram

да, нажать Workflow. Он скажет, что workflow создан и ждёт некоторого инпута, да, то есть он ждёт некоторого ввода. Мы нажимаем старт, и мы видим, что workflow исполнился хорошо. Если мы сюда зайдём, мы увидим как раз, что он сделал, да, он получил текст старт. В принципе, с этого начинается работа любого бота с команды старт. И, соответственно, если мы знаем этот факт, мы можем этот факт отработать. Мы можем с самого начала сделать развилочку. Человек сказал старт либо что-то другое. Нам это и нужно. Но прежде чем мы сделаем эту развилку, я предлагаю добавить чуть-чуть кода. Мы добавляем ноду, которая называется код. Да, вот она. И там прописываем код. Код, который выглядит таким образом. Мы создаём некоторый GSON, у которого есть элементы: ID, messageтек, user ID, username. И туда помещаем. Давайте присоедим нашу ноду и увидим, что мы туда помещаем. Мы туда помещаем некоторые вещи из нашего инпута, который нам отдал Telegram, да? А зачем нам это нужно? Таким образом, мы можем унифицировать несколько вводов. Например, если у нас есть Telegram, Слак, ещё какие-то несколько триггеров, например, они все стекаются, бот ждёт инпут от любого из них. С помощью вот этого джесончика мы всё унифицируем. Например, мы можем сказать, что чат ID забери из Телеграма, если это Telegram, да, и забери из слака Messageтек. Да, мы хотим, чтобы Jason Messageтек у нас дальше в workflow участвовал как переменная Messageтек, user ID, username, всё то же самое. Тогда мы можем вообще после этого не париться, откуда брать исходные данные, а мы всегда будем ориентироваться на то, что мы всегда берём данные из модуля All the data. Отлично, у нас есть такой модуль. И теперь самое время сделать развилку. Соответственно, мы вставляем модуль, который называется if. Да, он так и называется, if. Мы его вставили. И тогда мы можем сделать первую развилку, да, если это первое сообщение, то есть сшстарт первая команда, тогда мы идём по одному пути. Мы всегда знаем, что это значит начало общения нашего пользователя с аботом. Если это другая команда, любая другая, мы можем идти по другому пути. Подключаем сюда этот модуль. И мы видим, что здесь прописана такая интересная вещь. Мы видим, да, что у нас из all the data приходят chat id, message, user ID, username. Это как раз те самые унифицированные переменные и jнчик, который нам нужен. Соответственно, мы можем сказать, что если Jonage text, то есть вот эта наша переменная equal start, да, то есть она равна этому старт, соответственно, мы идём по пути true. Если мы идём по пути true, что нам интересно? Нам интересно ответить пользователю некоторое первое сообщение, welcome сообщение, которое мы видели в нашем боте, которое расписывает некоторые условия участия в группы, красивый текст. Для этого нам нужно, в принципе, как только мы поняли, что это true, отослать ответное сообщение. Мы берём, добавляем Telegram response. Это
6:56

Велкам сообщение

делается через Telegram, да, send message. Соответственно, мы хотим отослать send message, да, сюда кинули send message и, соответственно, отсылаем. Там мы прописываем, мы хотим, давайте соединим, да, обязательно, если это true, то мы должны получить на вход. Сейчас исполним эти, да, истории. Когда мы хотим из нашего модуля All the data, да, забрать чат ID, чтобы обратно вернуть, да, у нас чат ID есть, и мы обратно возвращаем просто текст. Здесь будет текст про то, какие условия, прокачай свои навыки и прочее, прочее, все условия. Мы делаем такой красивый текст, как нам нужно. Допустим, вот нас устраивает этот текст. Вот а в звёздочки помещаем текст, который хотим выделить балдом. Допустим, вот мы подготовили, и теперь мы можем протестировать флоу. Нам, по идее, бот уже должен ответить. О'кей. И нам наш бот ответил: "Прокачай свои навыки". То есть это ровно тот текст, который мы прописали в нашей аvo что нам после этого требуется? Мы хотим, вообще говоря, не терять людей, которые писали в наш бот. Допустим, вот человек мог нажать старт, да, прочитать условия и понял, что ему не подходит там слишком дорого либо, в принципе не интересует и уйти. Но раз человек в принципе интересовался, да, такой тематикой, значит он потенциальный участник этой группы когда-нибудь в будущем. И круто бы сохранить связь. Соответственно, мы хотим просто вот такую даже коммуникацию, первичную коммуникацию сохранить в базу данных для того, чтобы потом иметь способ как-то с ней работать. Сейчас начинается самое интересное. Мы сейчас добавим а базу данных в нашу ноду. Да, мы используем Superbase, да? Superbase - это некоторые такая надстройка над прогрессом, которая
8:50

Настраиваем Supabase

позволяет использовать и её в классическом варианте, и позволяет там векторные данные хранить как долговременную память нашего бота. Для того, чтобы у нас всё получилось, да, мы хотим, э, вставить строчку в таблицу. Нажимаем эту историю, и мы хотим указать кришелы постгress. Кришлыг мы проходили по шагам, как их добавить в видео другом, да, там у нас есть отдельное видео, как получается Super Base, чтобы сейчас не тратить сильно много времени, сходить на то видео, посмотреть. Это тоже довольно просто делается. Кстати, вся вот эта техническая информация, которая сейчас раскидана по разным видео, она тоже собрана в единый комочек в проканале. То есть у нас там есть отдельная секция, где как подключается Google Drive, как подключается Superbase, как подключаются телеграмы. Всё это вместе в удобном формате хранится там же. Так что обязательно уже посмотрите про канал в описании. Сейчас, да, нам у нас задача прописать вот эти креды. Это отлично. Это значит, что после этого а мы можем исполнить операцию insert, да, то есть вставить. И мы указываем, куда мы вставляем, да, мы указываем, в какую именно таблицу мы хотим вставить какие данные. Для того, чтобы это всё произошло, нам нужно создать эту таблицу. Да, но здесь мы уже, чтобы не запутаться, сделаем, вообще говоря, всё вместе. У меня уже есть моя таблица, да, но мы сейчасделаем с вами всё вместе. Мы идём, да, вот в table editor в Superbase и нажимаем New Table. Нажали New Table и даём ей имя Witlist. Так, нам точно понадобится ID, нам точно понадобится created, и мы захотим добавить ещё несколько столбцов для того, чтобы сохранить данные из Telegram. Первый столбец, мы его назовём subscribed. Это будет у нас Булen логика True False, да? Либо подписан, либо не подписан. Мы сюда будем запоминать значение, а, подписан ли сейчас человек на наш Telegram-канал. Дальше мы хотим забрать себе user ID. Мы хотим сюда забрать чат ID, да, скажем, это тоже текст. Мы себе хотим, а, ставить ещё usрнейм, скажем, это текст. Также мы хотим конкретный медж, это тоже текст, и сам email прокинем в эту базу данных. Это тоже текст. И в принципе сохраняем. Ну что, я поздравляю, наша база Weightlist готова. А теперь мы можем попробовать в неё прокинуть какие-то данные. Так, возвращаемся в создание сюда. Здесь нам хочется указать велиist теперь, да? Вот. И здесь мы прокидываем а данные, которые а к нам приходят из Телеграма. Для этого мы соединим обратно, да, чтобы мы их могли получить. Так, и как помните, мы уже проговаривали, насколько удобно то, что у нас есть нода All the data, да? То есть нам не нужно сейчас идти в Telegram из какого места забирать какие данные. Мы знали, мы знаем, что мы подытожили все данные у нас в ноде All the data. Теперь мы прокидываем All the data, да? Нам интересен User ID. Взяли просто закинули, да, вот он прокинулся. А месдж прокинули сюда, а, username сюда, чат ID прямо. Вот всё, что у нас было, прокинул subscйpe. Прокинули FSEsse, да? Помните наш булин? Потому что сейчас человек только пошёл по ноди старт. Он только успел старт нажать, да, и мы хотим уже сохранить. Ну, в принципе, мы готовы протестировать, да? Давайте попробуем тест. Ого, что-то уже произошло у нас. Смотрите, output, да, он сказал, что он создал один айтем в базе данных. Мы только что создали первую строчку в базе. Если мы теперь пойдём сюда и обновим, всё прокинулось. Subscribe false, user ID, username и сам message start, да, email nл, потому что он пока не предоставлял имейла. Отлично, мы эту ветку, вообще говоря, закончили, да, нас больше тут ничего не интересует. Следующая ветка. Если человек сказал не старт, то есть это не а первое его сообщение, мы здесь хотим добавить нашу первую а первое обращение к нейронке. Как я уже сказал ранее, мы не будем с вами а обращаться сейчас к агенту, да? То есть у нас есть нода, которая называется AI Agent. Мы её уже несколько раз использовали. Я вам сейчас покажу пока пошагово, как работает агент внутри. Для этого мы создадим просто обычное обращение к нейронке, ответ от ней неронки и посмотрим, как это внутри работает для того, чтобы бот работал круто. Для этого мы просто прокидываем basic Lamp chain. Мы взяли его, закинули сюда. Так, присоединяем сюда. Мы его
13:02

LLM Chain вручную

называем is there email. То есть теперь, если это не стартовое сообщение, мы хотим узнать, мы попросили же человека в нашем первом сообщении email оставить, оставил ли он email. Да, для этого мы делаем, мы указываем define below. Соответственно, мы указываем, что мы сюда закидываем all the data item message, то есть это у нас вот сам текст, который сказал человек, да? И мы хотим ещё добавить системное сообщение, которое мы отсылаем нейронку. И здесь первый интересный момент, да, мы говорим, что ты ассистент, который записывает пользователя лист ожидания, твоя задача прочитать user месседж и выяснить, отдал ли пользователь нам email. Да, если это полноценный email, если там содержится, мы хотим, чтобы он вернул true. А если не полноценный, хотим верну, чтобы он вернул фse. Можно ли это сделать без нейронки? Да, это можно сделать без нейронки. Мы можем вычленить, если имеil в тексте, но нам интересно разобраться, а, в сути происходящего, потому что условия вы можете прописывать совершенно разные сюда. Следующая интересная вещь, мы указываем обязательно пункт require specific output, да? Почему это важно? Теперь мы можем добавить парсер к нашему запросу. Что для этого нужно? Мы здесь
14:11

Подключаем парсер

прямо так и пишем, а, parser, да, structured output parser. Добавляем его и там прописываем. Давайте его сразу соединим. И да, мы прописываем этот парсер. Очень, ну, мощная вещь. Мы показываем нейронке формат, чего мы от неё ожидаем. И мы показываем, что если, ну, в промте, да, промт, помните, мы сказали, есть ли email вообще в этом сообщении, если имеil есть, он вернёт jсончик, где будет из email true, то есть там есть email. И нам же интересно, раз уже, ну, неронка делает свою работу, она вернёт и сам email. То есть это, если это будет некоторый большой текст и внутри только будет маленький имеil, нам интересно его вычленить для того, чтобы впоследствии использовать. Мы просим нейронку вернуть из email true или false, да, если имейла нет, и если он есть, то будет сам имеil во втором элементе джисона. Мы давля мы добавляем модель, да, неронку. Как всегда, мы добавляем Open AI Chat Model. Опять же, посмотрите, в предыдущем видео мы уже несколько раз создавали креды для Open AI, добавили сюда нейронку, и теперь нам нужен ещ нужна ещё одна развилка if. Теперь-то мы уже можем, а, так как нам возвращает нейронка trueue илифse на наличие имейла, добавить опять а ноду if, если, да, мы её добавляем. И теперь мы просто называем её из email, да, прямо подсоединяем. Давайте попробуем отправить, например, какой-то имеil. Нас сейчас интересует поток true, да? Сможет ли он найти, а, email в каком-нибудь даже рандомном сообщении? Да. Пишем, пишем. Скажем, скажем 111, да, 2 ц отослали. Проверяем ноду. Так, делать, дела, делать. Отлично. Что он у нас выдал? Email is email true. Да, и сам email он его нашёл. Прекрасно. Соответственно, мы можем дальше пойти по номе. Да, он сказал, что всё, я понял, il есть. Соответственно, мы хотим ответить пользователю, что имеil мы твой запомнили, да, и всё в порядке. Для этого мы добавляем опять ноду Telegram response send message, да, и там пишем так как мы получили на вход, а, опять же, сам само сообщение, вернее чат ID, да, вставили сюда и просто очень в вежливой манере говорим: "Я запомнил твой имеil". Да, сам email мы извлекли заблаговременно, да, и, соответственно, мы можем теперь поместить это в промт. Взяли, накинули просто в промт и, соответственно, появляется, он рендерит сразу этот имеil, говорит: "Я твой имеil запомнил". В принципе, человек уже сразу же автоматически получит нотификацию, а что email есть. Давайте попробуем тестп. Так, смотрим, что Смотрите, я запомнил твой email. Всё в порядке, но нам недостаточно просто в Telegram отослать этот email. Мы же хотим его ещё в нашу базу поместить, поэтому мы берём аналогичную, а, аналогичную функцию. Мы прямо её можем скопировать, вставить сюда, открыть. И тогда мы в тот же самый хотим поместить все те же самые знания, но мы хотим добавить subscribed, потому что в этот момент человек нам отдал email, соответственно, мы уже проценили, что всё, имеil у нас есть, задача выполнена. И более того, так как у нас есть и сам email, у нас для этого есть отдельная колоночка. Мы можем нажать сюда, добавить column to send. И вот его добавить email. И мы сюда можем прокинуть именно email. Вот отсюда is there email, да, email есть. И, соответственно, мы сюда можем прокинуть этот email, да. И что тогда произойдёт, если мы сейчас протестируем этот шаг? Смотрите, он создал новую запись в базе, где уже прокинут email, да? То есть, который извлечён из хаотичного сообщения и прокинут как отдельный имеil. Если мы пойдём сюда, мы увидим, что вот появился наш email в нашей базе. И самое важное, что здесь появился флажок Subscribe true. То есть после этого мы сможем в базе отфильтровать по этому флажку, да, по этому булину и в принципе получить всех всесх людей, которые подписались. По сути, нам осталось сделать ещё одну ветку. если человек а уже не начинает, то есть если не пошёл по ветке старт, да, но и не ответил нам с имейлом. Мы хотим сделать так, чтобы бот его поуговаривал оставить имеilл, да, чтобы не оставлял его просто так. И здесь мы подходим к очень интересной вещи. А если бы мы использовали ноду агент и мы бы к ней подключили постгress, агент сам внутри бы себя организовал некоторый оборот знаний, да? То есть он бы все новые сообщения пользователя засылал бы туда. в эту базу как свою кратковременную память для того, чтобы хранить контекст дискуссии. И потом перед каждым своим сообщением мы он бы ещё доставал предыдущие четыре или пять сообщения для того, чтобы, в принципе, ну, на базе этого тоже отвечать, чтобы не было такого, что человек что-то сказал в предыдущем сообщении, а вот про это забыл. А мы сейчас это сделаем вручную для того, чтобы мы понимали, каким образом это работает. Чтобы это сделать вручную, мы должны по сути обратиться к этой же базе данных. Ведь у нас здесь есть все сообщения, которые пользователь уже присылал нам. Соответственно, мы можем достать эти сообщения и отдать наши нейронки в наши сообщения как контекст.
19:30

Пишем SQL

Это ровно то, что делает агент под капотом, а мы всё сделаем вручную. Для этого нам потребуется немножечко пописать SQL, да? А мы должны добавить ноду, которая называется Pastgess. И здесь нам нужно найти execute SQL query, да? То есть это выполнение некоторого запроса. Соответственно, запрос, а мы не будем прямо с вами сейчас его писать вручную. Я его уже написал. Что в этом SQL? Он выглядит монструозно, да? А мы сейчас вкратце просмотрим. Мы хотим сагрегировать новую строку, создать новую строку, которую мы составим из значений в колонке message. То есть, да, если мы вернёмся вот сюда, мы хотим забрать последние пять или 10 сообщений от пользователя и сагрегировать их одну строку, чтобы передать нашему агенту как контекст. Параллельно мы ещё проверяем, есть ли в этой базе в IT weight listat ID - это, собственно, наш ID, который мы сейчас ведём с пользователем. То есть мы под чат ID понимаем, с каким пользователем мы сейчас работаем. Если у этого пользователя запись с аргументом subscribeue, да? То есть, если где-то у пользователя запись для вот этого чаid, где есть subscribe true. Это очень важно, я позже объясню, почему. Мы опять же идём в IT weightlist, да, чат ID забираем из нашего из all the data, да, и возвращаем последние 10 сообщений для того, чтобы последние 10 сообщений пользователя мы могли слепить в одно, а, в одну строчку. Давайте попробуем это выполнить, да? То есть мы чат ID прокинули, тестируем. Отлично. Смотрите, а мы только что, давайте сделаем табличку. Мы только что получили себе, а, item с форматаed messages и subscribe true или false. Смотрите, он взял вернул последние, а, два сообщения, потому что у нас больше и пока нету в переписке, и вернул, что этот пользователь уже subsced. Да, если мы проверим и посмотрим сюда, мы увидим, что, да, у пользователя есть такие два сообщения, и он уже subscribe true. Это прекрасно. Теперь мы можем этим воспользоваться очень гибко. Теперь мы можем добавить ещё одну ноду к нашей нейронке. Да, мы хотим, чтобы эта нейронка отреагировала, да, то есть мы сейчас понимаем, что пользователь нам что-то ответил, но там не было имейла, и мы хотим сделать ему такую развилочку. Ведь пользователь может написать своё сообщение перед этим уже оставив имеil, да? То есть мы сейчасделаем такую сложную работу перепроверки, но так как мы уже вернули отсюда и саму историю переписки, и subscribe, мы можем сказать, что если это сообщение не содержит имейла, но пользователь уже subscribed true, тогда в этом случае просто веди непринуждённую беседу. Мы знаем, что этот пользователь уже подписался, от него нам больше пока ничего не нужно. Но если пользователь ещё subscribed false, то есть он не подписывался, тогда мы дружелюбно напоминаем ему, что: "А не мог бы ты отдать нам свой email?" Отлично, как всегда к этой модели, да, мы подключаем Open AI, и нам осталось сделать буквально парочку вещей. Мы также хотим ответить, да? То есть мы опять же берём, копируем, да, и отвечаем несколько иную историю, да, и мы ответ, который нам дала Неронка, отдаём ему, да, то есть чат ID тот же. И, соответственно, мы хотим добавить такую же запись в нашу базу данных, да? То есть мы понимаем, что мы уже прокоммуницировали, человек что-то спросил, что-то сказал, да, но при этом мы снимаем эту галочку, да, почему, например, если человек уже до этого подписывался и после этого продолжает общение, нам не нужно каждый раз про проставлять subбсcй, потому что а у нас уже есть одна запись, и наш скрипт настроен так, что если хотя бы одна запись есть subscbe, то тогда а мы будем знать постоянно, что этот человек подписан. Соответственно, мы засовываем это в базу данных. Теперь, в принципе, мы готовы протестировать этот Wordflow. Мы нажимаем тест Workflow и прямо идём с самого начала. Если мы заново скажем старт, видим, как идёт workflow, исполняется верхняя ветка. Старт, мы рассказали про некоторые условия и предлагаем ему оставить свою почту в ответном сообщении. Ещё раз нажимаем тест. И я говорю, когда вы меня при пригласите в группу. Так, идёт нижняя ветка, да? Оп, пошла, пошла, пошла. Привет. Я вижу, что ты уже записан в лист ожидания. Каким образом это произошло? Да, бот, если мы посмотрим, как он выполнил свою задачу, да, в логе, смотрите, он получил себе системный пром, да, что-то ассистент, который записывает. Дальше он получил chatт history, да, то есть всё, о чём уже пользователь его спрашивал. И дальше самое главное, он получил и subscribe true, да? Поэтому теперь, если мы, например, вернёмся в нашу базу, да, и здесь true поменяем на false и попробуем ещё раз сделать то же самое, да, workflow, я скажу, а записан ли я уже? Смотрим, каким образом выполняется, да, как какую информацию он получает, готовит ответ. Пока нет, да? И, соответственно, если я теперь укажу, тогда запиши 222 33 CC. Нажимаем testworflow, отправляем, смотрим, как исполняется бот. И пошёл по верхней ветке. Я запомнил твой email, да? И теперь мы переходим обратно, обновляем. видим, что было false, fф, false, false, true. И самое главное, извлечён конкретный email из этого сообщения, а не всё сообщение. Хотя всё сообщение мы тоже сохранили для будущих задач. В оригинальном флоу
25:10

Отрабатываем ошибки

который я вам показывал, а, в самом начале, есть пару дополнительных нодов. Здесь мы отрабатываем а варианты ошибки, да. Если мы а посмотрим на то, как работает обычный запрос к нейронке. Здесь есть сеттинги, да? Мы здесь можем указать, что происходит на ошибку. Что мы сейчас видим, когда активно используем вот такие workflлоow? Нейронка - это не самая надёжная, не самый надёжный инструмент для того, чтобы быть на 100% уверенным, что вы отошлёте запрос и в ожидаемое, в обозримое время получите ответ. Там иногда бывают ошибки, то есть возвращается ошибка. Неронка не смогла исполнить свой запрос. В этом случае мы предусмотрели такую историю, что если она вдруг сломалась, мы просто ответим пользователю, что я сломался, напиши ещё разок. Да, соответственно, пользователь ещё раз напишет своё сообщение, и в следующий раз неронка с большей вероятностью ему выдаст какой-то ответ. Это всё. Ещё раз напомню, что обязательно подпишитесь на YouTube канал. Это очень важно. Обязательно по-братски оставьте там коммент. Чем больше комментов, тем больше YouTube продвигает это видео и, в принципе, канал Jon. Я вот прямо сейчас его скачиваю и отсылаю в бесплатный Telegram-канал в описании. А на этом всё. Хорошо дня.

Ещё от ИИшенка | AI Automation

Ctrl+V

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

Транскрипты, идеи, методички — всё самое полезное из лучших YouTube-каналов.

Подписаться