gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:24:20 26 4
gpt4 key购买 nike

我拼命尝试在一个

中设置参数
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)

有人对这个用例有经验吗?

我也尝试过的事情:

  1. 传递一个名为 p 的 class 产生:

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

  2. 传递命令:

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

    产量:

    Protocol message Struct has no "given-name" field.

  3. 使用构造函数生成结构:

    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

/事件输入

最佳答案

我是这样做的:

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 而对于 last-name 它将是 # greetPerson.last-name.

文档引用:
我们正在使用 DetectIntent ,其中我们使用 QueryInput , 最后我们使用 EvenInput

希望对您有所帮助。

关于python - 在 Dialogflow V2 API 的 EventInput 中设置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com