0

我创建了一个带有 Watson 转换的项目。流程就像:(对不起,我无法显示我的对话流程,但我会尝试解释它)

(W:Watson,U:用户)

U:开户需要什么文件?W:姓名、电子邮件、联系方式。我可以给你打开吗?U:是 W:太好了,请输入您的姓名。U: XYZ W: XYZ 请输入您的联系电话。U:9999999999 W:XYZ,你做得很好,请输入你的电子邮件。U: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

这是我的流程,当我在 watson 中运行它时,它运行良好。但是当我试图从我自己的应用程序中运行它时,它只需要我的名字但没有进入循环意味着它没有获取其他信息。

reason is in json it pass:

{
"text":"XYZ"
}

但沃森表明它的意图无关紧要。

在我的项目中,我只想将用户数据从我的应用程序传递给 watson,并显示如上所述的输出。

is it support < ? input.text ?>...?
4

1 回答 1

0

对于 Watson Conversation 给出的意图不相关的部分,之所以如此,是因为您缺少将参数 conversation_id 作为上下文参数发送。

您将在响应中获得 conversation_id 并将其传递给 subsequest 调用。如果你不通过,那么每次都会生成一个新的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
于 2018-01-09T13:51:51.153 回答