триггер Onage. Выбрали, добавили. Дальше мы добавляем по сгресду. Соответственно, мы понимаем, да, что у нас, а, Subabase работает на основе Postgress. Соответственно, мы можем работать через эту ноду Supase. Как это делается? Здесь находим пострес. Здесь выбираем select rose from the table. Добавляем креды. Опять же, как добавляются креды для постгресноды, также посмотрите в этом видео про Superbase. Это просто делается. Как только вы добавите правильные креды, у вас здесь будет, во-первых, выбор схемы, да, и здесь у вас уже будет выбор таблиц, который есть в вашей базе данных. Здесь выбираете from list, выбираете название вашей таблицы, которую только что создали. И здесь у вас будет кнопка add condition, то есть это добавить условия для выбора как раз столбцов. Нас интересует такой кондиition. Мы хотим по столбцу user adit, помните, мы его выбирали как первичный. Вот он у нас здесь будет, да? И он у нас должен равняться некоторой некоторому айдишнику, который к нам прилетает из Телеграма. Каким образом это работает? Давайте пробовать. Запускаем workflow и говорим здесь, например, привет. Так, отлично. Смотрите, Telegram нам вернул ID того, кто написал. И, соответственно, если мы этот айдишник подставим вот сюда, то база нам вернёт запись, которая соответствует именно этому адишнику. Отлично. Но так как у нас ещё нету никаких записей, понятно, что ответ пустой. Теперь добавим ещё одну ноду, которая называется Edit Fields. Накидываем её и здесь зафиксируем всю нашу информацию, которой мы будем пользоваться в этой автоматизации. Например, давайте мы ещё раз исполним. Напишем опять: "Привет" и посмотрим, что мы сюда можем прокинуть. Мы сюда можем прямо из Telegram-тригра про прокинуть, а сам меessдтекст, да? Давайте это сделаем. Давайте прокинем user ID, потому что это прямо краеугольная штука. И смотрите, здесь прокинем такую штуку. Так как мы в нашей базе создали столбец, который называется статус, вот он. Это значит, что предыдущая нодачекстатус нам вернёт, вообще говоря, статус. И давайте пропишем вот такой вот expression. Если статус есть, то мы хотим его сохранить в этой ноде all the data, а если статуса нет, то мы хотим сохранить non. И сюда ещё пропишем, например, сумму, которую мы хотим брать как компенсацию за доступ к нашему боту. Ну, пускай будет 100 руб. Выполним эту ноду. И смотрите, теперь у нас на выходе остаётся совсем простой Jon, да, есть messageте, привет. Есть user ID, это ID того человека, который нам написал. Статус, так как там ничего нету, да, в базе нету. Значит, мы прокинули NAN и, в принципе, вот прокинули количество в рублях, да, которые мы хотим чаржить с наших пользователей. Так, добавляем ещё свичер. Так как мы это делаем, прямо ищем ноду switch. И здесь прописываем вот такое правило. Так как мы уже сохранили data messageте, да, он нам понадобится. Если messageтек будет сsub, мы будем пользоваться такой командой, чтобы сформировать ссылку для оплаты. Тогда мы пойдём по ветке, которая называется sub. И здесь обязательно нажмите options. Здесь у вас будет пункт fall output. И здесь выберите extra output. Это что значит? Это значит, что если свичер встречает условия, тогда идёт по этому условию. Если не встречает никакого условия, да, тогда он идёт по фулбеку. Это очень полезно как раз, чтобы отрабатывать все кейсы, когда это не команда саб. Давайте сразу выполним. Так, мы видим, что это фолбек, потому что сама команда, вернее, сам текст - это привет, да, а не саб. Давайте организуем проверку пользователя, да, то есть добавим ноду if и здесь пропишем вот такую историю, да, jonatus - это как раз тот самый статус, который мы забрали из базы, и проверяем, он active либо не active, да? Active - это значит, что оплачено что-то. Если active, тогда мы хотим вернуть true. Если не active, мы вернём false. Так как сейчас jon status n, да, это вернулось к нам из ноch и здесь добавим сразу последовательность нот. Что мы хотим сделать? А если пользователь не активирован, да, то есть он ничего не оплачивал, мы, во-первых, хотим ему это сказать. Как мы настраиваем эту ноду? Мы добавляем ноду sendтемесдж из Телеграма. Кому шлём? Ну, тому же человеку, да? То есть у нас user ID уже сохранён. Соответственно, мы шлём ему обратно и пишем такой текст: "У тебя нет активной подписки. Нажми Сб и погнали". Telegram сам распарсает такую конструкцию, как слш и какое-то слово, и превратит его в команду. Это значит, что очень удобно можно будет на неё нажимать. Но это ещё не всё, потому что человек сначала нажимает старт, да, а потом уже развивается какая-то коммуникация. Соответственно, любой человек, который с нами в первый раз прокоммуницировал, идёт по веткой фолс, потому что у него точно нету никакой подписки. Он в первый раз с нами коммуницирует. Поэтому мы добавляем ноду if. И если статусн, а мы знаем, что мы сами позаботились о том, что если нету никакого активного статуса, то нам вернётся nн. И мы в этот момент добавляем ещё одну ноду погрос с теми же самыми параметрами, но заполняем всё, что мы хотим заполнить. Например, мы хотим сохранить user ID, да, уникальное поле. Если вам что-то ещё нужно, тоже сохраняйте. Вот нам в этой в этом видео не понадобится даже там usernр, но главное, мы ещё хотим добавить статус contacted, то есть первый контакт произошёл. Делаем такое и пробуем тогда исполнять вот эта нода. Смотрите, у тебя нет активной попи подписки. Жми саб и погнали. То есть нам уже вернулся ответ. Потом проверяем на статус. Да, статус у нас nonн. То есть идём по ветке true и выполняем запись в нашу базу данных. Но больше всего нас интересует, что тут есть конкретно user ID и есть статус contacted. Это отлично. Возвращаемся обратно в нашу автоматизацию. И теперь у нас такое такая развилка. Мы человеку предложили подписаться, нажав на кнопку sub, вернее, на команду sub. Нам теперь нужно отработать нажатие на эту команду. Мы с вами уже заблговременно позаботились о том, что у нас Switch распределяет как раз наши команды. Да, если это, то он пойдёт по ветке sub. Если нет, то это extra output. Доба. Давайте добавим обработчик на ветку САП. Какой обработчик нам нужен? Ну, конечно же, мы на кнопку СА хотим сформировать ссылку для оплаты, чтобы человек смог оплатить, э, коммуникацию с нашим ботом. Что мы для этого делаем? Так как я уже сказал, что мы будем пользоваться
юкассой, что нам нужно? Мы забиваем в поисковике AS. ru и здесь нажимаем создать новый кабинет. Что нужно понимать? Чтобы вы смогли при принимать платежи, у вас должен быть какой-то, скажем так, юридический статус. Вы должны быть либо самозанятыми, либо ИП и либо юролицом. Как физик вы не можете с помощью каса принимать платежи. Возможно, какие-то сервисы дают такую возможность, но это такая сомительная зона, потому что тут встаёт вопрос с налогами и прочим, прочим. Самозанятость, если вам реально нужно принимать платежи, делается, наверное, минут за 10. Соответственно, делайте себе самозанятость. Нажимаете здесь создать новый аккаунт, и вас там спросят, какой у вас INN, и создадут вам аккаунт на Юкасе. Как только вы создаёте себе аккаунт, вы попадаете вот на такой дашборд, где у вас очень минималистичный интерфейс. Здесь у вас слева будет выбор ваш боевой магазин либо ваш тестовый магазин. Обязательно переходите сначала в тестовый магазин. Вот я сейчас в нём, потому что там можно проводить платежи без фактического их проведения и тестировать нашу функциональность. Здесь нас больше всего интересует вкладка ключи API. Вы сюда нажмёте, у вас там уже будет сформированный ваш API ключ. Забираете его. И вторая вкладка - это HTTP уведомление. Это как раз, где можно настроить, на какой URL мы ловим вебхуки, которые будут нам говорить об успешной оплате нашего заказа. Ну давайте сначала настроим создание платежа, да, потом уже каким образом мы его будем ловить. Смотрите, здесь у вас API ключ, вы его забрали, а здесь у вас shop ID, да, вот этот, вы его тоже забрали, и возвращаетесь обратно в NVCM. Мы здесь добавляем HTTP ноду, и здесь нужно будет довольно много всего прописать. Опять же, вы прямо, если заберёте у меня из Telegram-канала вот эту автоматизацию, там будет уже всё прописано, кроме API ключей, конечно же, но весь вся суть, вы сможете её повторить. Смотрите, мы отправляем постзапрос, да, вот на этот URL, на Payments от юкасы. Здесь аутентификации, да, вам нужно выбрать generic credenal type. В следующем поле надо будет выбрать базовую аутентификацию basic и здесь нужно будет нажать новые кренлы. И здесь ввести user и password. User - это ваш shop ID, помните, вы его забрали, да? А password - это ваш API ключ. Вы его сюда ввели, нажима нажали save. И, соответственно, у вас этот headдер будет прокидываться в каждый ваш HTTP запрос, который вы будете слать из Envoc с этим хедером. Так, дальше. В хедере должен быть уникальный ключ. Вот он так называется. Я даже его не выговорю. Здесь у меня рандомная функция, которая от текущего времени создаёт некоторый хэш. Просто её тоже себе заберите. Это значит, что тут значение будет всегда уникальным. Так. И дальше само тело запроса. Здесь сначала, да, идётountу, соответственно, мы хотим прокинуть количество денег, которые мы берём, потом валюта, потом confirmation, куда будет организован переход после оплаты. Description - это само описание заказа, да? Введите здесь, за что вы берёте деньги. И последняя мегаважная штука - это метаданные. То есть API UASIS позволяет нам прокинуть в метаданные любую информацию, которая нам нужно. Это значит, что при успешной либо неуспешной оплате нам вернётся какой-тохук, и там уже будет те же самые методанные. Соответственно, мы можем понять, кто именно оплачивал. Сюда я предлагаю засунуть user ID и прокинуть как раз тот самый user ID, который нам написал. Так, ну что, давайте пробовать. Сохраняем и давайте прокинем. А давайте запустим flow и нажмём Sub. По идее, у нас должен прокинуться сюда и уже сформировать нам платёж. Так, что у нас? Ох, смотрите, всё зелёненькое. Смотрим, что у нас вернуло Юкаса. Смотрите, всёвсёвсё прошло. Он сказал: "Я сформировал вам счёт на оплату". Да, у него статус пендинing, счёт будет на 100 руб. И дальше confirmation URL - это тот самый URL, при переходе на который человек попадёт на страницу оплаты. И дальше, обратите внимание, метаданные, да, то есть user ID прокинулся прям прямо куда нужно. Дальше нам осталось только добавить специальную ноду, чтобы мы предоставили URL для оплаты нашему клиенту. Добавляем Telegram ноду. Здесь пишем твоя ссылка для оплаты. А дальше добавляем такую историю. Здесь в reply Markup нам нужно добавить inлаline keyбор текст и дальше URL. Да, текст, например, скажем, оплатить, а URL как раз у нас же UKASA уже вернула наш URL. Соответственно, мы за засовываем в эту кнопку оплатить. Таким образом, в ответном сообщении у нас появится кнопка. Давайте пробовать. Так, отлично. И смотрите, у нас вернулось красивое сообщение. Написано: "Твоя ссылка для оплаты и сама кнопка оплатить". Давайте нажмём на эту кнопку, посмотрим, что произойдёт. Да, хотим открыть. Смотрите, у нас Юкаса нам рисует очень красивый, а карти, очень красивый экран оплаты, да, где есть разные, а, способы оплаты. Например, здесь есть ю-кошелёк, новая карта. Здесь масса тестовых возможностей, да, то есть реальный платёж, а, проводиться не будет, но смотрите, если вы используете метод новая карта, то а Юкаса даже предоставляет вам набор тестовых а номеров карт. То есть вы можете прямо забрать вот этот номер, ввести его вот сюда, и у вас пройдёт реально тестовый платёж, и ваша система ЮКАСа ответит вам, как будто бы платёж совершился. Это очень удобно для тестирования. Если вам не охота, а, морочиться с данными карточками, да, нажимайте кошелёк, он про прокинется просто так. Но большой вопрос, вот сейчас мы нажмём оплатить, а что дальше? Да, каким образом? То есть в Юкасе-то мы будем знать, что платёж прошёл, но нам-то нужно получить это оповещение в N8N. Сейчас мы как раз это сделаем. Давайте вернёмся в наш cement, добавим такую ноду, как webhook. Да, добавили Webhook. И здесь, допустим, напишем - каса. Это значит, что у нас наш cement сформирует URL, на которой мы можем принимать, вообще говоря, любые ответы, да, любые постзапросы. Единственное, поменяем, давайте, на пост. И получается, вот этот webхуhook готов слушать любой запрос, который мы пошлём вот на этот URL. Это значит, что мы можем забрать вот этот URL, вернуться в нашу Юкасу, в админку, да, здесь нажать HTTP уведомления, здесь нажать изменить настройки и вот здесь вставить вот именно тот URL, который мы получили из вебху. Обязательно отметьте все-всевсе галочки, нажмите сохранить. Так, что-то пока получается. Давайте уже сразу, знаете, как попробуем? Давайте нажмём, а, отслушивать события. И здесь, получается, нажмём заплатить. И по идее, если настройки все верны, то мы уже в N8N получим оповещение об удачном платеже. Заплатить. В течение, буквально, секунды нам уже прилетает от Юкассы некоторое оповещение. Самое главное, на что мы хотим ориентироваться, на event, да, это payment succeeded. Это именно то, что мы ждём, что платёж был, а, успешный. Нам также ещё прилетает value, да, то есть сколько человек заплатил. Это как раз то, что мы просили. Амount соберёт свои комиссии, соответственно, вот платёж за вычетом комиссии. И дальше в самом низу опять же наши метаданные. То есть вы уже, наверное, улавливаете связь, да? Мы задали метаданные, когда настраивали этот платёж. И когда платёж свершился, эти же данные вернулись нам обратно. И таким образом у нас всегда есть трекшн того, кто что когда заплатил. Давайте добавим ещё один свитчер. И мы хотим завязаться на то, чтобы как раз ивент у нас был payment succeeded, да, чтобы не получалось так, что нам придёт, например, payment cancel, а мы отработаем это как обычный webхhook. Мы сразу себе устанавливаем правила только если payment succeeded. Мы идём дальше. И дальше нам понадобится ещё одна Postgressда. Здесь нам нужно сделать всё то же самое. Мы тут здесь общаемся с той же самой табличкой users demo, но здесь мы добавляем операцию insert or update. Именно из-за того, что мы сделали user ID primary key, он здесь будет доступен для выбора. Если вы этого не сделали, здесь будет только ID первичный, да, ключ. Соответственно, обязательно сделайте в базе первичным ключом user ID. Это значит, что по нему будет искаться сопоставление. И что мы делаем дальше? Если мы получаем такой вебху, мы идём в ту же самую базу, ищем этого юзера, который по факту инициировал платёж, даём ему статус active и прокидываемount, потому что он у нас уже как раз вернулся из нашего вебхука. Соответственно, вот наши 100 руб., вот наш ID, да? То есть мы, по идее, должны сейчас выполнив ноду, найдём этот ID и добавим ему статус active. Давайте пробуем. Идём обратно. Смотрите, был контакed, стал actтив. Это что значит? Вот у нас уже круг замыкается, да? Человек заплатил, мы отследили платёж, мы его схватили обратно, и мы поменяли ему статус на active. Ну и дальше правило хорошего тона, да, мы хотим дать какое-нибудь оповещение человеку, что теперь я готов отвечать на твои вопросы. То есть ровно после того, как человек всё оплатил, получил статус actтив, мы ему ответим: "Давайте пробовать. Выполняем. Теперь я готов отвечать на твои вопросы". И теперь у нас осталась последняя вилка. Так как мы заблаговременно уже обо всём позаботились. Каждый раз, когда человек пишет, мы сначала проверим его статус. И дальше, если это какой-то вопрос, да, то есть не команда subб, мы проверяем нашу наш статус на if active, да, если он активен. И теперь, так как он активен, нам нужно уже добавить ноду, которая начнёт пользователю отвечать на его вопросы. Я добавлю вот такую стандартную конструкцию, да, то есть это агент, который обращается в какую-то нейронку. Опять же нейронку вы выберете сами, да, Simple Memory, прямо от NVM. И здесь, как мы уже в самом начале говорили, вы можете через стул подключить вашу векторную базу данных, чтобы агент отвечал на основе вашей информации и ваших компетенций. Мы добавляли уже Vector Store массу раз в тех же самых видео про Superbase. Обязательно всё добавляйте. Это значит, что любой вопрос, который нам прилетает через Telegram, обрабатывается агентом, отвечается на основе нашей информации. И дальше мы формируем ответ. Сюда мы прокидываем Jon output, потому что именно в этом поле приходят ответ от нейронки. И, в принципе, будет ответ. Ну