- Опубликовано
Создание чат-бота на XState
- Автор
- Имя
- Счастливый тимлид | ♥ Frontend
- Telegram
- Счастливый тимлид | ♥ Frontend2204 подписчика692 поста
Чат-бот
От Алексея я загорелся идеей написать чат-бота пару месяцев назад. Изначально хотелось сделать быстро, на каком-нибудь SaaS, но с возможностью кастомизации и селф-хостинга. Но круче BotMother ничего не нашлось, а сам по себе BotMother как сервис хоть и мощный, но вообще не френдли, да и кастомизация там довольно ограничена. Хотя на примере Игры в жизнь точно можно уверенно сказать — бота там собрать можно и можно даже деньги на нем зарабатывать.
Потыкав красивый, но бесполезный для наших целей TypeBot, я отправился ресечить какие вообще есть решения. Я уже жаловался, что где в интернете не задашь вопрос про технологии для чат-ботов, везде пихают фреймворки для телеграма. Самый крутой GrammY, кстати.
Я потыкал Botkit и Bot Builder и даже написал тестовый сценарий за пару дней. В тестовой тулзе все работало отлично, но когда я попытался к бекенду прикрутить фронт, я таки уперся в вендор-лок — Bot Builder умеет работать только через Azure и никак иначе. Просто взять и общаться с ботом через веб-сокет или хотя бы через HTTP никак не получится, не переписывая сам фреймворк. Чего мне конечно совсем не хотелось. Тем более поддержка там так себе, он еле живой. Скорее всего как раз-таки из-за вендор-лока.
Но и с XState меня ждала засада. Под влиянием React'а, кажется они свернули не туда. Как минимум не туда, куда мне надо. И сделали стейт-машину для фронта. У них даже код сразу под React генерируется. Кстати, рекомендую потыкать, крутая тема, хоть и многословная. Конечно, они даже пишут, что они фреймворк агностик и вот это вот все, запускайте где хотите, все будет чики-пики.
Я погуглил и нашел несколько проектов. Конечно же из 2020-2021 годов, когда был пик чат-ботов, а потом они все умерли.
Вот этот OpenSource проект для чатботов на XState от Министерства Цифровизации Индии (охренеть!) мне запустить так и не удалось, хотя на него было больше всего надежд. Там даже моя любимая кафка настроена.
А во втором я почитал код и понял что такое я переиспользовать не хочу: Nestjs, Rxjs и redis — полный комплект того, что я изучать не планировал.
Так вот, и эти проекты тоже того.
В итоге, пришел к выводу: хочешь сделать хорошо — сделай это сам. И пусть в конце концов получится велосипед на костылях, зато полностью адаптированный под цели проекта.
В рамках размышлений пришлось продумать архитектуру проекта, количество сервисов и выбрать технологии, продумать структуры данных как для типичных сущностей типа пользователей, так и более сложные — сценарии, по которым будет ходить юзер.
Я вообще изначально планировал использовать в качестве источника сценариев Гугл таблицы, но мечты разбились о реальность. При проектировании структуры таблицы уперся в тот факт, что тупо не представляю как в одной таблице описать связи многие к одному. А использовать несколько связанных гугл таблиц — это взрыв мозга для всех. В первую очередь для тех, кто будет эти сценарии придумывать. Поэтому просто пока решил описывать в JSON с фиксированной структурой. Получается намного понятнее.
В целом, я доволен результатом. Я убедился, что могу на достаточно хорошем для себя уровне писать бек, что могу спроектировать, а затем реализовать систему с нуля и она будет работать ровно так, как я и задумал, а еще размял мозги и закрыл гештальт. Больше программировать пока не тянет, пойду лучше вопросики решать :D
Хорошей пятницы, друзья! Рекомендую изучить ссылки и поделиться постом с друзьями)
Предыдущий пост
- Опубликовано
Где заказчивается фронтенд?
Закрепленные
Свежие посты
- Опубликовано
Как сделать страницу с халявой и промокодами
- Опубликовано
Встречайте геймификацию в комментах
- Опубликовано
Когда проще завайбкодить чем нагуглить
- Опубликовано
весёлая дискуссия в канале Деплой о резюме
- Опубликовано
Жизнь по скраму
- Опубликовано
не забудь завести будильник
- Опубликовано
Каникулы в регионе без интернета
- Опубликовано

