IBM Watson转换为对话框

时间:2017-11-16 12:57:17

标签: watson-conversation watson-dialog

我使用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 ?>...?

1 个答案:

答案 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