Estoy trabajando en una aplicación simple que pasará por DialogFlow (Google) y me enviará las intenciones que se recogieron en función de los comentarios de los usuarios.
tengo el siguiente código.
let writeToExcel = []; var promises = xlData.map(data => { detectIntentText(data.QUESTION); }); Promise.all(promises).then(function(results) { console.log(results); console.log(writeToExcel); }) Sin embargo, la matriz que imprime no está definida y se imprime antes de que la función detectIntentText termine todo en el mapa. Podría haber más de 1000 entradas.
¿Cuál es la mejor manera de hacer que esto funcione?
Aquí está la función detectIntentText
async function detectIntentText(userText) { const sessionId = Math.random().toString(36).substring(7); const sessionPath = client.projectLocationAgentSessionPath( projectId, location, agentId, sessionId ); console.info(sessionPath); const request = { session: sessionPath, queryInput: { text: { text: userText, }, languageCode, }, }; const [response] = await client.detectIntent(request); // console.log(`User Query: ${userText}`); var intent = ""; for (const message of response.queryResult.responseMessages) { if (message.text) { // console.log(`Agent Response: ${message.text.text}`); } } if (response.queryResult.match.intent) { // console.log( // `Matched Intent: ${response.queryResult.match.intent.displayName}` //); intent = response.queryResult.match.intent.displayName; } // console.log( // `Current Page: ${response.queryResult.currentPage.displayName}` // ); let jsonToWrite = { CX_QUESTION: userText, INTENT: intent } // console.log(jsonToWrite); writeToExcel.push(jsonToWrite); }No está devolviendo nada del map . Si detectIntentText() devuelve Promise , entonces su código debería ser
var promises = xlData.map(data => { return detectIntentText(data.QUESTION); }); Promise.all(promises).then(function(results) { console.log(results); console.log(writeToExcel); }) Puede deshacerse de la palabra clave de return como esta,
var promises = xlData.map(data => detectIntentText(data.QUESTION));