在 Dialogflow V2 的 EventInput 中设置参数 API
set parameters in EventInput in Dialogflow V2 API
我拼命尝试在
中设置参数
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)
有人对这个用例有经验吗?
我也试过的东西:
传递一个 class
命名的 p 产量:
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.
使用构造函数生成结构:
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):
/事件输入
我是这样做的:
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, in which we are using QueryInput, in which finally we are using EvenInput
希望对您有所帮助。
已接受答案中的信息不正确。
您不必提供默认值。
您可以直接在参数table的值列中引用事件参数。
To reference an event parameter in the parameter table or a response,
use the following format: #event-name.parameter-name.
因此,将#greetPerson.given-name 放入 Value 即可。
我拼命尝试在
中设置参数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)
有人对这个用例有经验吗?
我也试过的东西:
传递一个
class
命名的 p 产量: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.
使用构造函数生成结构:
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):
/事件输入
我是这样做的:
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, in which we are using QueryInput, in which finally we are using EvenInput
希望对您有所帮助。
已接受答案中的信息不正确。
您不必提供默认值。
您可以直接在参数table的值列中引用事件参数。
To reference an event parameter in the parameter table or a response, use the following format: #event-name.parameter-name.
因此,将#greetPerson.given-name 放入 Value 即可。