Использование DialogFlow Deteintent не работает должным образом - PullRequest
0 голосов
/ 06 ноября 2019

Я использую DialogFlow v2 (и пытаюсь с v2Beta1), использую SDK в python, с проблемой, что метод deteIntent не распознает параметры в входных данных запроса.

Итак, в поисках решения я воссоздал проблему, используя простые вызовы cUrl.

Далее следует cUrl для создания типа EntityType:

curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://dialogflow.googleapis.com/v2beta1/projects/myproject_id/agent/entityTypes?languageCode=es" \
--data "{
    'displayName': 'customer',
    'kind': 'KIND_MAP',
    'autoExpansionMode': 'AUTO_EXPANSION_MODE_DEFAULT',
    'entities': [
        {
            'value': 'one',
            'synonyms': [
                'one', 'uno'
            ]
        },
        {
            'value': 'two',
            'synonyms': [
                'two', 'dos'
            ]
        }
    ],
    'enableFuzzyExtraction': true
}"

Это прекрасно работаети EntityType создан.

Теперь намерение создания:

curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://dialogflow.googleapis.com/v2beta1/projects/myproject_id/agent/intents" \
--data "{
    'displayName': 'ExampleIntent',
    'priority': 500000,
    'mlDisabled': false,
    'trainingPhrases': [
        {
            'type': 'EXAMPLE',
            'parts': [
                {
                    'text': 'start '
                },
                {
                    'text': 'one',
                    'alias': 'customer',
                    'entityType': '@customer',
                    'userDefined': true
                }
            ]
        },
        {
            'type': 'EXAMPLE',
            'parts': [
                {
                    'text': 'begin '
                },
                {
                    'text': 'one',
                    'alias': 'customer',
                    'entityType': '@customer',
                    'userDefined': true
                }
            ]
        },
        {
            'type': 'EXAMPLE',
            'parts': [
                {
                    'text': 'do '
                },
                {
                    'text': 'one',
                    'alias': 'customer',
                    'entityType': '@customer',
                    'userDefined': true
                }
            ]
        }
    ],
    'action': 'start',
    'messages': [
        {
            'text': {
                'text': [
                    'Hi'
                ]
            }
        }
    ],
}"

Также отлично работает.

А теперь я пытаюсь определить намерение:

curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://dialogflow.googleapis.com/v2beta1/projects/myproject_id/agent/sessions/0:detectIntent" \
    --data "{
        'queryInput': {
            'text': {
                'text': 'do one',
                'languageCode': 'es'
            }
        }
    }"

Ответ без параметра:

{
"responseId": "de68c5f5-6aa9-4716-ac22-626a22fc5d43-b81332aa",
"queryResult": {
    "queryText": "do one",
    "action": "start",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Hi",
    "fulfillmentMessages": [
    {
        "text": {
        "text": [
            "Hi"
        ]
        }
    }
    ],
    "intent": {
    "name": "projects/myproject_id/agent/intents/20ab36d6-e8c8-40d6-87dc-78a61e2de600",
    "displayName": "ExampleIntent"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "es"
}
}

Я пытался тренироваться:

curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://dialogflow.googleapis.com/v2beta1/projects/myproject_id/agent:train"

И результат тот же.

Но, если я захожу в веб-консоль, введите намерение и нажмите кнопку сохранения ... обнаружение начала работать.

{
"responseId": "45c919dc-677d-4ae4-8572-588955cd5414-b81332aa",
"queryResult": {
    "queryText": "do one",
    "action": "start",
    "parameters": {
    "customer": [
        "one"
    ]
    },
    "allRequiredParamsPresent": true,
    "fulfillmentText": "Hi",
    "fulfillmentMessages": [
    {
        "text": {
        "text": [
            "Hi"
        ]
        }
    }
    ],
    "intent": {
    "name": "projects/myproject_id/agent/intents/20ab36d6-e8c8-40d6-87dc-78a61e2de600",
    "displayName": "ExampleIntent"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "es"
}
}

Чего мне не хватает?

Спасибо любомуподсказка, как заставить это работать.

1 Ответ

0 голосов
/ 08 ноября 2019

Ну ... после нескольких исследований я обнаружил проблему, мне не хватало параметра параметры в createIntent:

curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://dialogflow.googleapis.com/v2beta1/projects/myproject_id/agent/intents" \
--data "{
    'displayName': 'ExampleIntent',
    'priority': 500000,
    'mlDisabled': false,
    'parameters': [
        {
            'displayName': 'customer',
            'entityTypeDisplayName': '@customer',
            'value': '$customer'
        }
    ],
    'trainingPhrases': [
        {
...