# #node.js #dialogflow-es #chatbot #dialogflow-es-fulfillment #richtext
Вопрос:
Я успешно подключил свое приложение node к агенту Dialogflow, он способен определять правильные намерения и возвращать простые текстовые ответы. Однако ему не удалось отобразить расширенные сообщения (gif, полезную нагрузку и т. Д.). Как я должен изменить свой код таким образом, чтобы он мог отображать мои расширенные сообщения в пользовательском интерфейсе?
Я попытался изменить «Текст выполнения» на «Сообщения выполнения», он вернул богатый ответ в виде [объекта] в пользовательском интерфейсе.
Вот мой код для app.js и изображение ответа пользовательского интерфейса:
const dialogflow = require('@google-cloud/dialogflow');
const uuid = require('uuid');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 5000;
// A unique identifier for the given session
const sessionId = uuid.v4();
const { WebhookClient} = require('dialogflow-fulfillment');
app.use(bodyParser.urlencoded({
extended:false
}))
app.use(function (req,res,next){
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.post('/send-msg',express.json(), (req,res)=>{
runSample(req.body.MSG).then(data=>{
res.send({Reply:data})
});
});
/**
* Send a query to the dialogflow agent, and return the query result.
* @param {string} projectId The project to be used
*/
async function runSample(msg,projectId = 'subjectbotchallenger') {
// Create a new session
const sessionClient = new dialogflow.SessionsClient({
keyFilename:"C:/Users/Chee Keong Bong/Desktop/botui/subjectbotchallenger-2a9c694324b7.json"
});
const sessionPath = sessionClient.projectAgentSessionPath(projectId, sessionId);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
text: {
// The query to send to the dialogflow agent
text: msg,
// The language used by the client (en-US)
languageCode: 'en-US',
},
},
};
// Send request and log result
const responses = await sessionClient.detectIntent(request);
console.log('Detected intent');
const result = responses[0].queryResu<
console.log(` Query: ${result.queryText}`);
console.log(` Response: ${result.fulfillmentMessages}`);
if (result.intent) {
console.log(` Intent: ${result.intent.displayName}`);
} else {
console.log(' No intent matched.');
}
return result.fulfillmentMessages;
}
app.listen(port,()=>{
console.log("running on port " port)
})
Комментарии:
1. Не могли бы вы поделиться ожидаемым богатым откликом, которого вы ожидаете в тех случаях, когда вы делились экранами печати ?
2. Можете ли вы попробовать выполнить JSON. Укажите строку для ответа, который вы отправляете обратно в API. Я думаю, это должно решить вашу проблему.