这是一个关于Watson Assistant API V1/V2差异的问题。医生这样说:
请注意,如果你的应用程序使用v1api,它会直接与对话技能进行通信,绕过助手的编排和状态管理功能。这意味着您的应用程序负责维护状态信息。这是使用上下文完成的,上下文是在应用程序和Watson Assistant服务之间来回传递的对象。应用程序必须通过保存每个响应收到的上下文,并在每个新消息请求中将其发送回服务来维护上下文。使用v2 API的应用程序也可以使用上下文来访问和存储持久信息,但上下文由助手自动维护(基于每个会话)。
似乎在V2中,“上下文由助手自动维护”。这到底是什么意思?如果我想向对话框流传递一些数据,我可以在“/message”上使用上下文。V2中是否允许使用?(似乎是的。)然后在V1天内,我必须从回复中接收上下文,并在每次请求时将其发送回。助手是否也会在V2中返回上下文?我的客户端应用程序在V2中应该做什么?欢迎提供详细信息。。谢谢
谢谢,@Vidyasagar Machupalli@data_henrik。(我创建了“答案”部分来粘贴下面的图片。)
然后我在上下文中发布用户变量,如下所示。
context={
"skills": {
"main skill": {
"user_defined": {
"myname": "ishida"
}
}
}
}
然后回应是:
{'output':{'generic':[{'response_type':'text','text':'Hi,ishida.}],'intents':[],'entities':[]}
似乎“技能”-
2) 我还发现了文档问题。我的问题的出发点是:“API V2 doc说我应该使用“技能”条目来处理用户变量,但没有比这更详细的信息……”@Vidyasagar Machupalli说,“根据V2 API文档,用户定义的是任意变量。”。。但我在API文档中找不到该段落。然后我发现a)当我选择“curl”选项卡时,会出现“user_defined”解释。b) 当我选择other(Java/Node/Python)选项卡时,不会显示任何解释。
当我提到“Python”选项卡时,我知道信息不在那里。我希望能尽快解决这个问题,以避免同样的困惑。我认为“技能”的事实-
首先回答第二个问题——如果您在这里查看Watson Assistant V2的API文档,则响应中有一个MessageContext对象,具有全局上下文和特定于技能的上下文值。
您还有一个示例请求,可以在其中手动传递上下文(全局和用户定义)
curl -u "apikey:{apikey}" -X POST -H "Content-Type:application/json" -d "{\"input\": {\"text\": \"Hello\"}, \"context\": {\"global\": {\"system\": {\"user_id\": \"my_user_id\"}}}}" "https://gateway.watsonplatform.net/conversation/api/v2/assistants/{assistant_id}/sessions/{session_id}/message?version=2018-11-08"
在客户端,您可以使用以下代码
service.message({
assistant_id: '{assistant_id}',
session_id: '{session_id}',
input: {
'message_type': 'text',
'text': 'Hello'
},
context: {
'global': {
'system': {
'user_id': 'my_user_id'
}
},
"skills": {
"main skill": {
"user_defined": {
"my_result_variable": "result_value"
}
}
}
}
}
参考链接
查看API方法摘要,了解目前V2中支持的内容。
V2中有一个新概念叫做Session。会话用于向技能发送用户输入并接收响应。它还可以维护对话的状态,自动为您提供上下文。
截至目前,V2 API支持运行时方法,这些方法使客户端应用程序能够与现有助手或技能进行交互(但不能修改)。您可以使用这些方法来开发面向用户的客户端,该客户端可以部署用于生产,也可以是代理助手和其他服务(如聊天服务或后端系统)之间通信的应用程序,或者是测试应用程序。
对我来说,完整的卷曲示例
curl -u "apikey:<API_KEY>" -X POST -H "Content-Type:application/json" -d "{
\"input\": {
\"text\": \"What's the time?\",
\"options\": {
\"alternate_intents\": true,
\"debug\": true,\"return_context\": true
}
},
\"context\": {
\"global\": {
\"system\": {
\"user_id\": \"derp\",\"turn_count\":1
}
}
},
\"skills\": {
\"main_skill\":{\"user_defined\": {
\"chosen_service\": \"dental\"
}}
}
}" "https://gateway.watsonplatform.net/assistant/api/v2/assistants/{ASSISTANT_ID}/sessions/{SESSION_ID}/message?version=2018-11-08"
对于会话ID,运行此命令
curl -u "apikey:<API_KEY>" -X POST "https://gateway.watsonplatform.net/assistant/api/v2/assistants/{ASSISTANT_ID}/sessions?version=2018-11-08"
响应包括用户定义的技能上下文
{"output":{"generic":[{"response_type":"text","text":"Hey ! how are you today? Let me know if you need any help or get stuck looking for information."}],"debug":{"nodes_visited":[{"dialog_node":"node_6_1475611948267","title":null,"conditions":"conversation_start"}],"log_messages":[],"branch_exited":true,"branch_exited_reason":"completed"},"intents":[{"intent":"General_Greetings","confidence":0.32179955244064334},{"intent":"General_Jokes","confidence":0.296911633014679},{"intent":"goodbye","confidence":0.2852578103542328},{"intent":"General_Ending","confidence":0.2513303637504578},{"intent":"off_topic","confidence":0.24435781836509707},{"intent":"select_detail","confidence":0.24206179082393647},{"intent":"list_options","confidence":0.22829059958457948},{"intent":"still-here","confidence":0.22606439888477325},{"intent":"html" target="_blank">select_service","confidence":0.22488142400979996},{"intent":"General_Security_Assurance","confidence":0.2210852071642876}],"entities":[]},"context":{"global":{"system":{"turn_count":1,"user_id":"derp"}},"skills":{"main skill":{"user_defined":{"chosen_service":"dental"}}}}}
我们开发了一个watson assistant聊天机器人,并与客户端应用程序集成。现在我们想知道每个用户从客户端应用程序调用watson服务的次数,以及每个用户的账单明细。 我们尝试使用沃森设置(传递用户id和客户id作为参数),但我们没有得到每个用户的详细信息,我们只得到总用户计数的详细信息。 请让我知道我们如何从应用程序端或任何其他替代方法实现这一点。 代码:
我正在尝试用Watson Assistant构建一个聊天机器人,它可以查询google sheets电子表格,并在聊天机器人中显示结果。所以我想知道怎么做?我知道这可以通过使用Webhook来实现,Webhook可以通过URLendpoint调用,但是我如何存储用户输入并将其与电子表格值匹配,然后存储返回的电子表格值并在对话时显示它们呢?。 这是我的电子表格链接,它会让你知道我在构建什么,http
我试图在Watson内部构建一个BMI计算器,但当你使用“多重条件反应”时,Watson似乎不支持数字比较。 此代码将抛出一个错误: 编辑:解决了。这是我自己的错。如果你在“多重条件反应”中设置条件,不要包括。 在本例中,您只需输入
我已将Watson assistant与Fb messenger集成。我能够向聊天机器人发送消息,因为我是FB页面的管理员,但如何公开聊天机器人,以便FB上的任何用户都可以向其发送消息。
我想问一下,是否可以在页面加载上扩展Watson Assistant聊天机器人?目前,当页面加载时,用户必须点击下面的小图标才能启动聊天机器人。 沃森助理聊天机器人图标 我使用的是Chrome,解决方案也应该在移动平台上运行。 到目前为止,我有以下带有聊天机器人脚本的空白页面:
我有一个指向Play商店应用程序的链接,该应用程序以“内部版本”发布,例如 https://play.google.com/store/apps/details?id=com.redacted 单击此链接所需的结果是打开Play商店到此应用程序的详细信息/安装页面。这在桌面浏览器和Android浏览器上都工作正常。 如果您在浏览器外的Android设备上单击此链接,例如从电子邮件应用程序,此链接应