Я использую открытый API карты погоды, чтобы получить информацию о текущей погоде, а затем интегрировать ее с watson помощник (я использовал это как ссылку для кода помощника Watson) перед развертыванием на терминале. вот мой код:
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!']
всякий раз, когда я использую какой-либо сторонний API, вместо того, чтобы отвечать сразу после ввода ключевых слов триггера, терминал просит меня ввести еще одну запись (в приведенном выше сценарии я ничего не ввел) перед ответом. однако, когда я пытаюсь ввести ключевые слова, связанные с намерениями, ответы на которые сразу же извлекаются из помощника Watson (как и в случае с end_conversation), терминал отвечает сразу.
Есть ли способ заставить терминал запрашивать только один раз?