установить параметры в EventInput в Dialogflow V2 API - PullRequest
0 голосов
/ 15 января 2019

Я отчаянно пытаюсь установить параметры в

dialogflow.types.EventInput

в питоне.

Это документ говорит о том, что параметры должны быть типа Struct.

Я прочитал здесь , что параметры должны быть google.protobuf.Struct. Но это не работает для меня.

Есть ли другой эквивалент типа Struct в python?

Если я отправляю EventInput без параметров, намерение определяется правильно.

Я пробовал это до сих пор:

import dialogflow_v2 as dialogflow
session_client = dialogflow.SessionsClient()

session = session_client.session_path(project_id, session_id)
parameters = struct_pb2.Struct()
parameters['given-name'] = 'Jeff'
parameters['last-name'] = 'Bridges'

event_input = dialogflow.types.EventInput(         
    name='greetPerson',
    language_code='de',
    parameters=parameters)

query_input = dialogflow.types.QueryInput(event=event_input)

response = session_client.detect_intent(
    session=session, query_input=query_input)

Кто-нибудь имеет опыт использования этого варианта использования?

То, что я тоже пробовал:

  1. Передача class именованных значений p:

    Параметр MergeFrom () должен быть экземпляром того же класса: ожидается Структура получила р. для поля EventInput.parameters

  2. Передайте диктовку:

    parameters = {
        'given-name': 'Jeff',
        'last-name': 'Bridges'} 
    

    выходы:

    Протокол сообщения Struct не имеет поля "имя-имени".

  3. Создание структуры с помощью конструктора:

    from google.protobuf.struct_pb2 import Struct, Value
    parameters = Struct(fields={
        'given-name':Value(string_value='Jeff'),
        'last-name':Value(string_value='Bidges')
    })
    

    иногда дает:

    Исключение в потоке ptvsd.stopping (скорее всего, возникает во время отключение переводчика):

This is the parameter section if my intent

/ EventInput

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Информация в принятом ответе неверна.

Вам не нужно указывать значения по умолчанию.

Вы можете ссылаться на параметры события непосредственно в столбце Значение таблицы параметров.

Для ссылки на параметр события в таблице параметров или ответ, используйте следующий формат: # event-name.parameter-name.

документы диалогового потока

Таким образом, достаточно ввести # greetPerson.given-name в Value.

0 голосов
/ 15 января 2019

Вот как я это сделал:

import dialogflow
from google.protobuf import struct_pb2

session_client = dialogflow.SessionsClient()
session = session_client.session_path(project_id, session_id)

parameters = struct_pb2.Struct()
parameters["given-name"] = 'Jeff'
parameters["last-name"] = 'Bridges'

query_input = {
    'event': {
        "name": "greetPerson",
        "parameters": parameters,
        "language_code": "de"
    }
}

response = session_client.detect_intent(
    session=session,
    query_input=query_input)

Примечание:
В консоли диалогового потока вы должны задать значения параметров по умолчанию как #even_name.parameter_name.
В этом случае для параметра given-name это будет #greetPerson.given-name, а для last-name это будет #greetPerson.last-name.

Документы Ссылка:
Мы используем DetectIntent , в котором мы используем QueryInput , в котором, наконец, мы используем EvenInput

Надеюсь, это поможет.

...