python - 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'
,我得到同样的错误。
漏洞?还是我错过了什么?
解决方案
发现了问题。
实体字符串:
'projects/' + PROJECT_ID + '/agent/sessions/-/contexts/my_ctx_name'
效果很好。
实体字符串:
'/projects/' + PROJECT_ID + '/agent/sessions/-/contexts/my_ctx_name'
不起作用。我的问题是“项目”之前的领先“/”。
推荐阅读
- java - 从现有数据对象中提取信息的面向对象设计
- c# - Emgucv 将黑色背景变为透明
- python - 清理这个程序
- emscripten - 我们是否有任何工具可以提供 .wasm 文件中的函数大小
- angular - 如何使用 ngfor 访问数组中的 json 中的 json
- c++ - enable_if 继承的成员函数的名称查找错误
- javascript - 如何使用 jsPDF 表在分页符上管理更大的内容
- html - 具有行跨度的 HTML 表格中的备用行颜色
- android - 棉花糖和奥利奥中的共享元素有不同的结果
- tfs - 维护文件夹结构 jFrog Artifactory Deployer TFS 插件