У меня есть некоторый код, который я тестировал, и он работает в моей среде, я изменил agent.add (значение) на console.log (значение), и результат был напечатан. Тем не менее, когда я пытаюсь выполнить это в диалоговом потоке, он не запускает ответ, а тело всегда неопределено.
Кто-нибудь знает, что может заставить код не работать в Dialogflow Fulfillment. Спасибо.
function SearchKnowwledgeBaseMethod(intention){
var username = "something";
var password = "something";
var auth = "Basic " + Buffer.from(username + ":" + password).toString('base64');
var result;
return new Promise(function(resolve, reject){
rq(
{
url : `https://xxxxxx/api/now/table/kb_knowledge?sysparm_query=textCONTAINS${intention}`,
headers : {
"Authorization" : auth
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
if (typeof body !== undefined) {
const obj = JSON.parse(body);
if (obj.result.length > 0){
result = obj.result[0].text;
}
}
}else {
reject("I have a problem");
}
resolve(result);
});
});
}
function SearchKnowledgeBase(agent){
var intention = agent.parameters.intention;
return SearchKnowwledgeBaseMethod(intention).then(function(result){
if (result !== undefined){
console.log(result);
return agent.add(result);
} else {
var stringArray = intention.split(' ');
stringArray.forEach(function (item) {
return SearchKnowwledgeBaseMethod(item).then(function(answer){
console.log(answer);
return console.log(answer);
});
});
}
});
}
let intentMap = new Map();
intentMap.set('Default Fallback Intent', fallback);
intentMap.set('search_knowledge_base', SearchKnowledgeBase);
// intentMap.set('your intent name here', yourFunctionHandler);
// intentMap.set('your intent name here', googleAssistantHandler);
agent.handleRequest(intentMap);