首页 > 解决方案 > Dialogflow - 通过 v2 API 创建带有输入上下文的 Intent

问题描述

我正在编写一个脚本来以编程方式创建一堆意图。我想将这些意图的输入上下文设置为特定值。我有创建完整意图的工作代码 - 但我无法让输入上下文的参数工作。

这有效(在 python 中),但不创建输入上下文:

intents_client = dialogflow_v2beta1.IntentsClient.from_service_account_json(PROJECT_JSON)
parent = intents_client.project_agent_path(PROJECT_ID)
training_phrases = []
part1 = dialogflow_v2beta1.types.Intent.TrainingPhrase.Part(text="hello ")
parts = []
parts.append(part1)
training_phrase = dialogflow_v2beta1.types.Intent.TrainingPhrase(parts=parts)
training_phrases.append(training_phrase)
text = dialogflow_v2beta1.types.Intent.Message.Text(text=["say hello"])
message = dialogflow_v2beta1.types.Intent.Message(text=text)
messages = []
messages.append(message)

intent = dialogflow_v2beta1.types.Intent(
  display_name='Mike_Hello',
  training_phrases=training_phrases,
  messages=messages)
response = intents_client.create_intent(parent, intent, language_code=LANGUAGE)

但是,当我将以下内容添加到我的 Intent 定义中时:

intent = dialogflow_v2beta1.types.Intent(
    display_name='Mike_Hello',
    input_context_names=['5000'],
    training_phrases=training_phrases,
    messages=messages)

(即 - 添加input_context_names参数)

意图创建失败并出现错误:

资源名称与格式“projects/{project_id}/agent/sessions/{session_id}/contexts/{context_id}”不匹配

我尝试使用上下文客户端和创建上下文create_context,但它失败并出现相同的错误。在create_context我看来,API 与创建输入的上下文更相关detect_intent,因为它需要一个实时的 SESSION_ID 作为输入。

我可以["5000"]在上面的 input_context中替换为'projects/PROJECT_ID/agent/sessions/-/contexts/5000',我得到同样的错误。

漏洞?还是我错过了什么?

标签: pythondialogflow-es

解决方案


发现了问题。

实体字符串: 'projects/' + PROJECT_ID + '/agent/sessions/-/contexts/my_ctx_name'

效果很好。

实体字符串: '/projects/' + PROJECT_ID + '/agent/sessions/-/contexts/my_ctx_name'

不起作用。我的问题是“项目”之前的领先“/”。


推荐阅读