Сравнительно недавно пишу в ООП нотации, изучаю Ларавел, пытаюсь разобраться с DI. Так же есть надобность написать Бота, который сможет отвечать на вопросы, и выполнять некие действия в рамках всего приложения. Сделать это я могу, но хотелось бы сделать это правильно, и идеально было бы оформить как отдельный пакет.
Но когда я смотрю на задачу, я вижу что реализация требует и хранения данных, и работу с моделями, которые есть в приложении. Можно ли это вообще в отдельный пакет оформить.. или это обязательно должна быть часть моего приложения?
Задача просто заменить менеджера ЦТ на бота). И тут не просто ответ на FAQ, но и обращения типа: "А как мои девайсы поживают?" Или в случае готового ремонта, это уже выставление ссылки для оплаты, с расчетом стоимости посылки. Здесь получается, что на каком-то этапе общения боту надо дернуть метод класса из основного приложения. И было бы классно это использовать повторно, настраивая этапы беседы и методы, которые бот будет дергать. Потому что основной алгоритм ведения бесед, явно меняться не должен, только правила и схема.
Пока настройка бота совсем интуитивно не понятна... и пока это можно назвать скетч на коленках. Ну и он привязан к приложению, так как в конструктор подаются все те объекты, которые он дергает и даже отправщик, который отправит пользователю что-то, если бот знает что отправить, или если не совсем понял, уточнит тему запроса и попросит перефразировать, если не знает то ничего не отправит,и сообщение будет не отвеченное... и им уже будет заниматься человек.
P.S>
Я ничего не имею против менеджеров центров технического обслуживания, но они часто отвечают на одни и те же вопросы, и делают одни и те же операции. Оставить им только "интересны" вопросы считаю крайне правильно.
Сделать это я могу, но хотелось бы сделать это правильно, и идеально было бы оформить как отдельный пакет.
Давайте начнём по порядку. Выделять в некоторый пакет имеет смысл код, который будет переиспользоваться.
Вы работаете в какой-то веб-студии, которая печёт как пирожки по пять проектов в месяц и вам в каждом втором нужна функциональность ботов?
Если да – то потребность выделять в отдельный пакет бота есть, если же нет и проект у вас разовый – то можно и не выделять.
Где-то встречал даже примерный подход к переиспользованию кода: первый раз просто пишем код, второй раз берём из предыдущего проекта, а на третий раз оформляем отдельный пакетом. То есть только на третий раз мы начинаем уже понимать, какие функции войдут в пакет, а какие – останутся за бортом, как специфичные для конкретного проекта.
Если у вас разовый проект, то вообще можно начать с поиска готовых ботов. Нашли пять проектов, выбрали себе один – и пользуйтесь на здоровье. Или не нашли – пишите свой.
Если же хочется в учебных (образовательных целях) что-то сделать, то можно как пойти по пути "сделать разовый проект", так и попробовать сделать пакет.
Выбирать вам, это вам виднее. Единственное, что похвально будет сделать проект открытым на гитхабе (особенно, если таких ещё не было), чтобы другие могли (форкнуться и) позднее использовать какие-то части в своих проектах.
Можно ли отделить бота от приложения – думаю, что вполне можно. При этом можно будет как сделать абстракции, которые не зависят от транспорта (и делать бота для телеграм, для фейсбука и других вещей), можно отделить специфику приложения (настраивать вопросы через базу).
Если вам непонятно, что и как оформить в модуль – сначала просто напишите работающее приложение. Ваш вопрос сейчас не только вам самому кажется слишком общим, но и остальным участникам stackoverflow. Когда будет готовый код – либо сами поймёте, либо уже сможете более детально задать вопрос.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
С minishop2 раньше не работалКак можно реализовать функционал для товаров с разными ценами(скидкой) в зависимости от вида как на этой странице...
Необходимо составить запрос который ищет возможные совпадения, но надо что бы он срого учитывал 2 условия