我正在使用Angular RC5和Dialogflow开发一个Chatbot .
我对代理的仪表板有意图,它会提示用户输入他的名字,然后提示其他一些数据 . 意图与'PROMPT_DATA'事件相关联 . 使用eventRequest从客户端(前端)触发意图,以便在初始化聊天时向用户显示消息 .
对话框流的响应是提示“你的名字是什么?”,在此之后用户输入一些名称并且代码发送带有任何输入的textRequest,对话框流的响应再次提示,就像它与名称不匹配 .
如何发送用户输入的内容并将其与提示相对应?我的猜测是,Dialogflow将输入视为另一个文本,并尝试将其与意图匹配,而不是提示本身 .
这是我的代码,用于发送文本并向用户显示响应 .
this.client.textRequest(msg)
.then(res => {
console.log(res);
const speech = res.result.fulfillment.speech;
const botMessage = new Message(speech, 'bot');
this.update(botMessage);
});
它只是简单地从响应中接收语音数据并将其显示给用户 . 这是enterid有效数据后的响应 .
{
"id": "067c2dc2-aa24-475d-8312-e62baf514a74",
"timestamp": "2018-03-01T06:30:12.656Z",
"lang": "es",
"result": {
"source": "agent",
"resolvedQuery": "12312321321",
"action": "input.prompt",
"actionIncomplete": true,
"parameters": {
"usernit": "",
"username": ""
},
"contexts": [
{
"name": "1_-_prompt_datos_dialog_params_usernit",
"parameters": {
"usernit": "",
"username.original": "",
"usernit.original": "",
"username": ""
},
"lifespan": 1
},
{
"name": "1_-_prompt_datos_dialog_context",
"parameters": {
"usernit": "",
"username.original": "",
"usernit.original": "",
"username": ""
},
"lifespan": 2
},
{
"name": "saludo",
"parameters": {
"usernit": "",
"username.original": "",
"usernit.original": "",
"username": ""
},
"lifespan": 1
},
{
"name": "ec9aad4b-721a-4ec7-827c-272ef72cf852_id_dialog_context",
"parameters": {
"usernit": "",
"username.original": "",
"usernit.original": "",
"username": ""
},
"lifespan": 2
}
],
"metadata": {
"intentId": "ec9aad4b-721a-4ec7-827c-272ef72cf852",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "1 - Prompt_Datos"
},
"fulfillment": {
"speech": "¿Cuál es tu número de identificación o NIT?",
"messages": [
{
"type": 0,
"speech": "¿Cuál es tu número de identificación o NIT?"
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success",
"webhookTimedOut": false
},
"sessionId": "91e7178b-711b-6ffd-cc5f-779dc23690ff"
}
一个好的回应的例子是
bot -> prompt
user -> 21042014910
bot -> response (saying it is okay)