establecer parámetros en EventInput en Dialogflow V2 API

Intento desesperadamente establecer parámetros en una

dialogflow.types.EventInput 

en python.

Este documento dice que los parámetros deben ser de tipo Struct .

Leí aquí que los parámetros deben ser un google.protobuf.Struct. Pero no funciona para mí.

¿Hay otro tipo de Struct equivalente en python?

Si envío el EventInput sin parámetros, la intención se detecta correctamente.

Intenté esto hasta ahora:

 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) 

¿Alguien que tenga experiencia con este caso de uso?

Cosas que también probé

  1. Pasa una class llamada p rendimientos:

    El parámetro para MergeFrom () debe ser una instancia de la misma clase: esperado Struct got p. para el campo EventInput.parameters

  2. Pasar un dictado

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

    rendimientos

    El mensaje de protocolo Struct no tiene un campo de “nombre de stack”.

  3. Generar Struct con constructor:

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

    cede a veces:

    Excepción en el hilo ptvsd.stopping (lo más probable es que se haya generado durante el cierre del intérprete):

Esta es la sección de parámetros si mi intención

/ EventInput

Así es como hice esto:

 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) 

Nota:
En la consola de dialogflow, debe dar los valores predeterminados de los parámetros como #even_name.parameter_name .
En este caso, para el given-name parámetro given-name sería #greetPerson.given-name y para last-name sería #greetPerson.last-name .

Referencia de documentos:
Estamos usando DetectIntent , en el que estamos usando QueryInput , en el que finalmente estamos usando EvenInput

Espero eso ayude.

La información en la respuesta aceptada es incorrecta.

No tienes que proporcionar valores por defecto.

Puede hacer referencia a los parámetros de eventos directamente en la columna Valor de la tabla Parámetros.

Para hacer referencia a un parámetro de evento en la tabla de parámetros o una respuesta, use el siguiente formato: # event-name.parameter-name.

documentos de flujo de diálogo

Por lo tanto, poner # greetPerson.given-name en Value sería suficiente.