Как реализовать дилаог бота с пользователем? Необходимо сделать простенького бота (без распознования сложных предложений и тп)
Часть ответов будет представлена просто кнопками, текстовый ввод это в основном данные типа ФИО.
Вопрос, как реализовать поведение бота для сценариев типа:
Спросить имя - Проверить и переспросить - Спросить дату рождение ...
Я прочитал про конечные автоматы и вроде как с помощью них и реализовавыются подобные схемы, сама проблема выглядит довольно распространненной, диалоги при звонках в колл центры и тп, тоже основаны на вопросах ответах. Вроде как получается некое дерево по которому ты двигаешься, но можешь возвращаться на предыдущие шаги.
Буду признателен за консультацию по данному вопросу, референсы и паттерны и примеры реализации. Возможно есть какие-то фреймворки под подобные задачи. Хочется поглубже изучить варианты решения подобных задач.

21 Авг 2019 в 06:23
213 +1
0
Ответы
1

Для реализации диалога бота с пользователем с использованием конечного автомата (state machine), вы можете использовать язык программирования, который вам более всего удобен, например Python.

Сначала определите все возможные шаги диалога и возможные ответы пользователя на каждом шаге. Затем создайте конечный автомат, где каждый узел представляет собой отдельный шаг диалога, а ребра - возможные ответы пользователя, которые переводят бота на следующий шаг.

Вы также можете реализовать возможность возврата к предыдущим шагам, добавив соответствующие ребра в вашем конечном автомате.

Есть различные фреймворки и библиотеки, которые могут помочь вам при реализации подобных задач, например Dialogflow от Google или Rasa. Они предоставляют инструменты для создания и обучения чат-ботов с использованием машинного обучения и обработки естественного языка.

Вот пример простого конечного автомата на Python:

states = {
'start': {'text': 'Привет! Как тебя зовут?', 'next': 'name'},
'name': {'text': 'Приятно познакомиться, {name}! Когда у тебя день рождения?', 'next': 'birthday'},
'birthday': {'text': 'Спасибо за информацию! Удачного дня!'}
}
current_state = 'start'
while current_state != 'finish':
state = states[current_state]
user_input = input(state['text'] + '\n')
if current_state == 'start':
name = user_input
current_state = state['next']
elif current_state == 'birthday':
birthday = user_input
current_state = 'finish'
if '{name}' in state['text']:
state['text'] = state['text'].format(name=name)

Этот код задает простой диалог бота, который спрашивает у пользователя его имя, затем день рождения, и благодарит за информацию. В зависимости от ответов пользователя, бот переходит к следующему шагу.

Надеюсь, этот пример будет полезен для вас. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь обращаться!

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир