Я использую открытую карту погоды api , чтобы получить информацию о текущей погоде и затем интегрировать ее с помощником Уотсона (я использовал это как справку для Ватсонакод помощника) перед развертыванием на терминале.Вот мой код:
var city = "Seattle";
weather.setCity(city);
function processResponse(err, response){
if(err){
console.log(err);
return;
}
var endConversation = false;
if(response.intents[0]){
if(response.intents[0].intent=="CurrentWeather"){
weather.getDescription(function(err, desc){
weather.getTemperature(function(err, temp){
console.log("It is " + desc + " today with a temperature of " + temp + " degrees Celsius.");
)};
)};
}
else if(response.intents[0].intent=="end_conversation"){
console.log(response.output.text);
endConversation = true;
}
}
if(!endConversation){
var newMessageFromUser = prompt(">> ");
service.message({
workspace_id: workspace_id,
input: {
text: newMessageFromUser
},
context: response.context
},processResponse);
}
}
это работает, но тогда ответ выглядит так:
>> what is the weather today in seattle
>>
It is few clouds today with a temperature of 29 degrees Celsius.
>> bye
['See ya!']
всякий раз, когда я использую любой сторонний apis, вместо того, чтобы отвечать сразу после того, как я вхожу в триггерключевые слова, терминал просит меня ввести другую запись (в сценарии выше, я ничего не вводил), прежде чем ответить.однако, когда я пытаюсь ввести ключевые слова, связанные с намерениями, чьи ответы только что были получены сразу же от помощника Ватсона (как и в случае с end_conversation), терминал отвечает сразу же.
Есть ли способ заставить меня заставитьтерминал спросить только один раз?