Да, это возможно, хотя точные детали того, как вы это делаете, зависят в первую очередь от того, как вы обрабатываете ответы пользователя.
Самое важное, что нужно иметь в виду, чтобы справиться с этим. это, однако, следует помнить, что Intents представляют то, что пользователь говорит , а не то, как вы обрабатываете или как вы отвечаете .
Этот последний бит дает самый простой ответ на ваш вопрос - вы, конечно, можете ответить так, как хотите, чтобы бот отвечал после каждого раунда. Похоже, вы смогли реализовать logi c, который говорит, что если он получил результат, который ему не нужен - вы можете расширить его, добавив счетчик, который просто использует следующий вопрос в качестве ответа после нескольких попыток.
Более сложная часть состоит в том, чтобы удостовериться, что вы знаете, на какой вопрос отвечает пользователь, и убедиться, что вы зафиксировали правильное значение в случае, если они пытаются go ответить и ответить на предыдущий вопрос.
Общее решение этой проблемы имеет два аспекта:
- Имейте одно намерение, которое принимает прямой ответ на вопрос, на котором вы в данный момент находитесь, но оно срабатывает только при определенных входных контекстах. Затем установите этот контекст на действительный, когда вы задаете вопрос, и удалите контекст, когда на вопрос дан ответ.
- Есть другие намерения, которые конкретно отвечают на то, как пользователь может сформулировать вопрос, если он собирался ответить это.
Например, если вы спросили: «Какое программное обеспечение вы используете?» Вы можете установить контекст «спросите-программное обеспечение используется». Тогда у вас будет два Intents:
Один с входным контекстом «ask-software-used», который принимает только действительные имена программ.
Другой без входного контекста, но в котором могут быть обучающие фразы, такие как
- «Я использую программное обеспечение XXXX»
- «Мы работаем с пакетом XXXX»
как только пользователь ответит на вопрос, очистите контекст «ask-software-used», задайте следующий вопрос и установите его Context.
Вы также можете используйте это, чтобы отслеживать, сколько раз вам приходилось повторять вопрос, ожидая ответа. Если этот счетчик достигнет предела, сделайте то же самое: очистите контекст, задайте следующий вопрос и установите его контекст.