Я использую помощник IBM watson для NLU, а серверную часть я использую Nodejs для вызова API. Я могу подключиться и получить ответ JSON от помощника Watson. Для этого я использую приведенный ниже код.
Когда мое приложение отправляет текст сообщения в API и получает ответ мне нужно знать, какое было имя намерения, которое ответило на вопрос.
Я уже реализовал печать возвращенного JSON (см. Ниже), но я не могу идентифицировать на нем имя намерения.
Я был бы признателен за любую помощь в этом вопросе.
const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');
// Configurar o wrapper de serviço do Assistente.
const service = new AssistantV2({
version: '2019-02-28',
authenticator: new IamAuthenticator({
apikey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // replace with API key
})
});
const assistantId = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; // replace with assistant ID let sessionId;
// Create session.
service
.createSession({
assistantId,
})
.then (res =>{
sessionId = res.result.session_id;
zz = res.headers;
zz1 = res.statusText;
sendMessage({
messageType: 'text',
text: 'estou com muita dor', // start conversation with empty message
});
})
.catch(err => {
console.log(err)
}); // something went wrong });
// Send message to assistant.
function sendMessage(messageInput) {
service
.message({
assistantId,
sessionId,
input: {messageInput, options:{'return_context': true}}
})
.then (res =>{
processResponse(res.result);
console.log(JSON.stringify(res, null, 2));
})
.catch(err => {
console.log(err)
}); // something went wrong }); }
}
// Processe a resposta.
function processResponse(response) {
// Display the output from assistant, if any. Supports only a single // text response.
if (response.output.generic) {
if (response.output.generic.length > 0) {
if (response.output.generic[0].response_type === 'text') {
console.log (response.output.generic [ 0 ] .text); }
}
}
}
* JSON *
{
"status": 200,
"statusText": "OK",
"headers": {
"content-type": "application/json; charset=utf-8",
"content-length": "458",
"access-control-allow-origin": "*",
"access-control-allow-methods": "GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS",
"access-control-allow-headers": "Content-Type, Content-Length, Authorization, X-Watson-Authorization-Token,
X-WDC-PL-OPT-OUT, X-Watson-UserInfo, X-Watson-Learning-Opt-Out, X-Watson-Metadata",
"access-control-max-age": "3600",
"content-security-policy": "default-src 'none'",
"x-dns-prefetch-control": "off",
"x-frame-options": "SAMEORIGIN",
"strict-transport-security": "max-age=31536000; includeSubDomains;",
"x-download-options": "noopen",
"x-content-type-options": "nosniff",
"x-xss-protection": "1; mode=block",
"x-watson-session-timeout": "session_timeout=300",
"x-response-time": "40.583ms",
"x-global-transaction-id": "5e03ba22807bb45fd8df7dc92eee618a",
"x-dp-watson-tran-id": "5e03ba22807bb45fd8df7dc92eee618a",
"x-edgeconnect-midmile-rtt": "47",
"x-edgeconnect-origin-mex-latency": "172",
"date": "Thu, 18 Jun 2020 15:53:31 GMT",
"connection": "close"
},
"result": {
"output": {
"intents": [],
"entities": [],
"generic": [
{
"response_type": "text",
"text": "Olá.. eu sou a Dra. Home. Estou aqui para te auxiliar em informações sobre a clínica."
},
{
"source": "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSraIoUCWfz9tqBQRpvxZq8umDa85wBK0vtELzbrzpU94QdKyV1",
"response_type": "image"
}
]
},
"context": {
"global": {
"system": {
"turn_count": 1
},
"session_id": "52dbe39f-30b0-4eb1-ba34-f48d11c28270"
},
"skills": {
"main skill": {
"system": {}
}
}
}
}
}