У меня проблема с контекстами диалогового потока, когда я пытаюсь изменить их через выполнение.Когда я хочу добавить (или очистить, установив для lifespanCount значение -1) контекст, я обычно использую этот код:
const {WebhookClient} = require('dialogflow-fulfillment');
const agent = new WebhookClient({ request, response });
/*Irrelevant Code Here*/
var context=agent.session+"/contexts/contextName";
agent.setContext({
"name":context,
"lifespanCount": 1
});
Если я использую этот фрагмент, контекстами можно успешно управлять.Однако теперь я пытаюсь использовать этот фрагмент при отправке запроса-обещания , и, основываясь на ответе на этот запрос, я хочу иметь разные выходные данные.По какой-то причине это действие не дает никаких результатов, я не могу очистить контексты или создать их, так как они не появляются в журналах Firebase, когда я печатаю JSON.stringify (request.body) .
return new Promise( (resolve,reject) => {
const request = require('request-promise-native');
const options = {
uri: 'link',
method: 'POST',
headers: {
'api-token': 'token'
},
body: {
someData:"someData",
},
json: true
};
request(options)
.then(function (body) {
if (body.status===0)
agent.add("Option 1");
else {
var sessionIdArray=agent.session.split("/");
var sessionId=sessionIdArray[sessionIdArray.length-1];
var context=agent.session+"/contexts/contextName";
agent.setContext({
"name":context,
"lifespanCount": 1
});
agent.add("type something");
}
resolve();
})
.catch(function (err) {
// POST failed...
agent.add("An error happened during your last call.");
console.log(err.stack);
resolve();
});
});
Это как запрос-обещание мешает агенту установить контекст.Кто-нибудь знает, как заставить это работать?Заранее спасибо!