我使用watson转换创建了一个项目。 流程就像:(抱歉,我不能显示我的对话流程,但我会尝试解释它)
(W:沃森,U:用户)
U:开户需要哪些文件? W:姓名,电子邮件,联系方式。我可以帮你打开吗? U:是的 W:很好,请输入你的名字。 U:XYZ W:XYZ请输入您的联系电话。 U:9999999999 W:XYZ,你做得很好请输入你的电子邮件。 你:xyz@domain.com
now come to watson dialog part.
W:Great, Please enter your name.(i used " < ? input.text ?>" to take user input)
{
"context":{"name":"< ? input.text ?>"}
"output":{"text":"Great,Please enter your name."}
}
U:XYZ
W:XYZ please enter your contact number
{
"context":{"contact":"< ? input.text ?>"}
"output":{"text":"$name, Please enter your contact number"}
}
U:9999999999
W: XYZ, you are doing great please enter your email.
{
"context":{"email":"< ? input.text ?>"}
"output":{"text":"$name, you are doing great please enter your email."}
}
U: xyz@domain.com
这是我的流程,当我在沃森里面运行时,它工作得很好。 但是当我试图从我自己的应用程序运行它时,它只需要我的名字,但没有输入循环意味着它没有采取其他信息。
reason is in json it pass:
{
"text":"XYZ"
}
但是沃森表明它的意图是无关紧要的。
在我的项目中,我只想将用户数据从我的应用程序传递给watson,并显示输出如上所述。
is it support < ? input.text ?>...?
答案 0 :(得分:0)
对于Watson Conversation赋予intent无关的部分,它是因为你缺少将参数conversation_id作为上下文参数发送。
您将获得conversation_id作为回应并在子请求调用中传递它。如果你没有传递,那么每次都会生成一个新的id
//Extract converstaionId from first call
String conversationId=msgResponse.getContext().get("conversation_id")
//Second call in which user gives his name
Map contextData=new HashMap();
context.put("conversation_id", conversationId); // conversationId will be in the response of previous call