У меня есть проект агента в Dialogflow v2.И мой код оценивает агента через Web API (я использую код Python без каких-либо библиотек диалоговых потоков).
Чтобы проверить исходное значение сущности, я использую outputContexts
в queryResult
с помощью detectIntent
функции.
Но я обнаружил, что queryResult
иногда не содержит outputContexts
.Результаты зависят от содержания входного текста.Я использую пользовательские объекты и системные объекты в моем агенте.И я обнаружил, что sys.date
сущность иногда не возвращает outputContexts
через веб-API.Однако он возвращает outputContexts
, когда я тестировал тот же текст ввода через консоль графического интерфейса Dialogflow.
https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/v2beta1/DetectIntentResponse?hl=ja
outputContexts []: object (Context)
Коллекциявыходных контекстов.Если применимо, outputContexts.parameters содержит записи с именем .original, содержащие исходные значения параметров перед запросом.
Обновление 1
Я обнаружил, что outputContexts
появляются только тогда, когда некоторые необходимые слоты отсутствуют в диалоге.Например, intentA
содержит два обязательных слота.Если я ввожу текст, содержащий только один слот, ответ показывает outputContexts
, а если текст включает два слота (все слоты, то есть allRequiredParamsPresent=True
), ответ не показывает outputContexts
.Это правда?Трудно прочитать эту спецификацию из документа Dialogflow.
Обновление 2
Я нашел хорошее решение для получения исходных значений сущностей из приведенного ниже потока.Чтобы получить исходные значения, мне нужно подготовить специальные объекты для извлечения original
данных из произвольных слотов.Это original
применимо для системных и пользовательских объектов.
неоднозначность диалогового потока с одинаковыми синонимами для разных значений объекта