Проблема в том, что все , которое вы хотите сделать с результатом вашего вызова API с fetch
, должно обрабатываться как часть разрешения Promise. Работа Promises заключается в том, что код после того, как он будет продолжать выполняться при его первоначальном запуске, но то, что находится в блоке then()
, будет вызываться после завершения Promise.
Кроме того, вам необходимо убедиться, что вы также вернули обещание, чтобы диспетчер Intent Handler знал, что нужно дождаться выполнения обещания.
Первая часть обрабатывается путем помещения всего, включая вызов conv.ask()
в часть then()
. Вторая часть обрабатывается путем возврата обещания. Это может выглядеть примерно так:
// Make sure you return this promise
return foo().then(function(response){
// access the value inside the `then`
currentquestion = response[2].n111.toString(); //assigning variable works
// Make sure you build the response, and ask it inside the promise resolution
const ssml =
'<speak>' +
'<audiosrc="https://test.mp3">You have just been made sheriff...</audio>'+
currentquestion +
'</speak>';
conv.ask(ssml);
});