Моя компания в настоящее время пытается создать многопользовательского чат-бота с помощью Google Dialogflow. Мы изучаем имеющиеся в нашем распоряжении инструменты, но документация по topi c все еще немного скудна. Наше понимание и определение многопользовательской аренды в этом контексте позволило бы нам иметь немного разные разговорные потоки в зависимости от компании, в которой работает конечный пользователь. Например:
Пользователь A от компании Foo хочет заказать мороженое. Компания Foo предоставляет набор вкусов (шоколад, ваниль, мята) и обслуживает только конусы мороженого, но позволяет пользователям добавлять гарниры к их мороженому (шоколадная стружка, сахарная посыпка).
Пользователь B от компании Bar хочет заказать мороженое. Компания Бар предоставляет набор вкусов (клубника, фисташка, лимон) и предлагает мороженое и чашки, но не предлагает гарниров.
У обоих пользователей должен быть одинаковый точный разговор, за исключением , что доступные списки вкусов и контейнеров для мороженого будут зависеть от арендатора. Кроме того, также должна быть возможность расширить частей этого диалогового потока, таких как компания A, предоставляющая возможность добавлять гарниры. Оба разговора должны начинаться и заканчиваться одним и тем же намерением (я хочу мороженое / я готов заплатить).
Нашей вторичной целью здесь было бы свести к минимуму избыточность на стороне Dialogflow: в идеале должен быть только один агент, и в идеале намерения, которые не требуют дублирования, не должны дублироваться.
Наша архитектура не управляется клиентом; клиент всегда перехватывается нашим внутренним сервером (C#), который отвечает за обработку взаимодействия с Dialogflow. Мы считаем, что это дает нам большую гибкость и лучшую интеграцию с нашим существующим стеком.
Мы определили следующие многообещающие функции:
- Суб-намерения
- Входные контексты
- Переопределяемые объекты
- Мега / субагенты
Но мы еще не определили четкого пути. Мы также рассматриваем доступные альтернативы, такие как Microsoft BotBuilder, Amazon AWS Chatbot и ChatterBot с открытым исходным кодом.
Короче говоря, есть ли лучшая практика, когда дело доходит до этого? Если нет, то любые идеи и мысли по этому вопросу будут приветствоваться.