编程语言
首页 > 编程语言> > python – 在Dialogflow V2 API中的EventInput中设置参数

python – 在Dialogflow V2 API中的EventInput中设置参数

作者:互联网

我绝望地尝试在a中设置参数

dialogflow.types.EventInput

在python中.

这个doc表示参数必须是Struct类型.

我在here读到参数需要是google.protobuf.Struct.
但它对我不起作用.

python中是否有另一个Struct类型的等价物?

如果我发送没有参数的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)

有没有这个用例的经验?

我也尝试过的事情:

>传递一个名为p yield的类:

Parameter to MergeFrom() must be instance of same class: expected
Struct got p. for field EventInput.parameters

>通过一个词典:

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

收益率:

Protocol message Struct has no “given-name” field.

>使用构造函数生成Struct:

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

有时产量:

Exception in thread ptvsd.stopping (most likely raised during
interpreter shutdown):

This is the parameter section if my intent

/ EventInput

解决方法:

这就是我这样做的方式:

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)

注意:
在dialogflow控制台中,必须将参数的默认值设置为#even_name.parameter_name.
在这种情况下,对于参数given-name,它将是#greetPerson.given-name,对于姓氏,它将是#greetPerson.last-name.

文档参考:
我们正在使用DetectIntent,我们正在使用QueryInput,最后我们使用的是EvenInput

希望能帮助到你.

标签:python,dialogflow,protocol-buffers,chatbot
来源: https://codeday.me/bug/20191002/1844271.html