Переход к следующему вопросу при отсутствии ответа - PullRequest
0 голосов
/ 28 января 2020

У нас был разработчик, который придумал прототип бота для вопросов бухгалтерии, и мы понимаем, что бот не идеален. Наша самая большая задача состояла в том, чтобы после 2-3 неудачных попыток бота получить соответствующий ответ, бот перешел к следующему вопросу и все. Наш предыдущий разработчик утверждал, что это невозможно, это правда или нет? В настоящее время бот просто сдается после пары попыток и все.

Я не технический человек, и я был бы очень признателен за помощь в этом.

Гипотетический пример идеального сценария:

В: Какое бухгалтерское программное обеспечение вы используете? A: askdnjsajld

Q: Не понял. Какое бухгалтерское программное обеспечение вы используете? A: asdkjnajksdn

Q: Извините, не понял. Давайте перейдем к следующему вопросу ... Когда вы хотели бы получить свои финансовые данные? A: конец месяца

Спасибо за помощь!

1 Ответ

0 голосов
/ 28 января 2020

Да, это возможно, хотя точные детали того, как вы это делаете, зависят в первую очередь от того, как вы обрабатываете ответы пользователя.

Самое важное, что нужно иметь в виду, чтобы справиться с этим. это, однако, следует помнить, что Intents представляют то, что пользователь говорит , а не то, как вы обрабатываете или как вы отвечаете .

Этот последний бит дает самый простой ответ на ваш вопрос - вы, конечно, можете ответить так, как хотите, чтобы бот отвечал после каждого раунда. Похоже, вы смогли реализовать logi c, который говорит, что если он получил результат, который ему не нужен - вы можете расширить его, добавив счетчик, который просто использует следующий вопрос в качестве ответа после нескольких попыток.

Более сложная часть состоит в том, чтобы удостовериться, что вы знаете, на какой вопрос отвечает пользователь, и убедиться, что вы зафиксировали правильное значение в случае, если они пытаются go ответить и ответить на предыдущий вопрос.

Общее решение этой проблемы имеет два аспекта:

  • Имейте одно намерение, которое принимает прямой ответ на вопрос, на котором вы в данный момент находитесь, но оно срабатывает только при определенных входных контекстах. Затем установите этот контекст на действительный, когда вы задаете вопрос, и удалите контекст, когда на вопрос дан ответ.
  • Есть другие намерения, которые конкретно отвечают на то, как пользователь может сформулировать вопрос, если он собирался ответить это.

Например, если вы спросили: «Какое программное обеспечение вы используете?» Вы можете установить контекст «спросите-программное обеспечение используется». Тогда у вас будет два Intents:

  • Один с входным контекстом «ask-software-used», который принимает только действительные имена программ.

  • Другой без входного контекста, но в котором могут быть обучающие фразы, такие как

    • «Я использую программное обеспечение XXXX»
    • «Мы работаем с пакетом XXXX»

как только пользователь ответит на вопрос, очистите контекст «ask-software-used», задайте следующий вопрос и установите его Context.

Вы также можете используйте это, чтобы отслеживать, сколько раз вам приходилось повторять вопрос, ожидая ответа. Если этот счетчик достигнет предела, сделайте то же самое: очистите контекст, задайте следующий вопрос и установите его контекст.

...