我使用DialogFlow实现意图。
履行有这样的回应:
{
"outputContexts": [
{
"name": "search-results",
"lifespanCount": 9999,
"parameters": {
"foo": "bar",
}
}
]
}
在相同的意图(没有搜索结果作为输入上下文)中,我想在我的履行中使用outputContext上返回的参数来回复
不幸的是,当我运行此设置时,它不起作用。参数中没有任何内容,响应是"不可用"。即使我的输出上下文已设置。
如何在响应中立即使用输出上下文参数?一个可能的workarround将直接返回带有值的fulfillmentMessages - 但我发现维护单个变量并且过度杀戮更难!
答案 0 :(得分:2)
您不能通过相同的意图来执行此操作,这样做会填充参数,运行webhook实现并使用具有相同意图的输出上下文。
但是,您想要做的是通过创建单独的意图(例如 intent_show_search_results )来显示搜索结果,此意图将在输入中采用搜索结果上下文。并且,在文本响应中,您可以使用该上下文的参数来准备用户消息,使用#模式在消息中使用上下文参数来访问上下文参数,如此
Foo的值为#search-results.foo
Webhook对 v1 api 的履行的回应: -
{
"contextOut": [
{
"name": "search-results",
"lifespan": 9999,
"parameters": {
"foo": "bar"
}
}
],
"followupEvent": {
"name": "intent_show_search_results"
}
}
Webhook对 v2 api 的履行的回应: -
{
"outputContexts": [
{
"name": "projects/${PROJECT_ID}/agent/sessions/${SESSION_ID}/contexts/search-results",
"lifespanCount": 9999,
"parameters": {
"foo": "bar"
}
}
],
"followupEventInput": {
"name": "intent_show_search_results",
"languageCode": "en-US"
}
}