Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

296
Views
La aplicación TwiML y Firebase lanzan un rechazo de promesa no controlado: Error: no se pudieron cargar las credenciales predeterminadas

Contexto:

Mi aplicación utiliza VoIP mediante TwiML, almaceno registros de llamadas y datos adicionales en Firebase. Cuando se crea una llamada, Twilio es un punto central donde se crea/cancela la llamada. Por esta razón, cuando hago una llamada utilizo Firebase para crear una entrada de llamada en Firebase.


Busqué alguna documentación en línea para este problema, soporte o problemas similares, pero se quedó corto. El asunto es bastante simple:

Salida de registro:

Veo salida de registro hasta este mensaje:

obteniendo el perfil de

entonces recibe este error:

Advertencia de rechazo de promesa no controlada: rechazo de promesa no controlada: error: no se pudieron cargar las credenciales predeterminadas. Vaya a https://cloud.google.com/docs/authentication/getting-started para obtener más información. en GoogleAuth.getApplicationDefaultAsync (/var/task/node_modules/google-auth-library/build/src/auth/googleauth.js:180:19) en processTicksAndRejections (internal/process/task_queues.js:97:5) en async GoogleAuth .getClient (/var/task/node_modules/google-auth-library/build/src/auth/goo...


Código de la aplicación TwiML similar a las funciones de Firebase :

 const AccessToken = require('twilio').jwt.AccessToken; const VoiceGrant = AccessToken.VoiceGrant; const VoiceResponse = require('twilio').twiml.VoiceResponse; // Import the functions you need from the SDKs you need const firebase = require("firebase-admin") const firebaseConfig = { apiKey: "", authDomain: "", databaseURL: "", projectId: "", storageBucket: "", messagingSenderId: "", appId: "", measurementId: "" }; // Initialize Firebase console.log("initializing firebase") const app = firebase.initializeApp(firebaseConfig); exports.handler = async function(context, event, callback) { console.log("Running make-call") const from = event.From; let to = event.to; //... console.log("getting profile from") // exception is thrown at this line below var callerProfileSnap = await firebase.firestore(app).collection("profiles").doc(from).get(); // originally had this, but attempted loading the app manually as "credentials" couldn't be loaded made me think this might be an issue // var callerProfileSnap = await firebase.firestore().collection("profiles").doc(from).get(); // ... continuation of code var voiceResponse; callback(null, voiceResponse); }

¿Alguna idea de qué puede causar esto/por qué ocurre esto? No encontrar mucho en el camino de las soluciones en línea

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La solución fue simple, provocada por un descuido.

Twilio antepone automáticamente "cliente:" al campo event.From . Este fue un intento de encontrar un client:abcd1234... en firestore que no existía.

Sin embargo, el error fue engañoso, ya que no tenía nada que ver con credenciales incorrectas, sino que, de hecho, era un documento de Firestore que faltaba.


Soluciones posibles:

  1. Desinfectar entrada:

Compruebe si event.From contiene "cliente:", si es así, llame a .split(":")[1] para obtener el ID o la última parte del parámetro From .

  1. Utilice los parámetros personalizados de Twilio enviados desde el cliente, que se incluirán en el objeto de payload .

por ejemplo, agregar parámetros personalizados como:

 customParams: { "hello": "world", "another": "entry" }

entonces estará disponible en la carga útil de esta manera:

  • payload.hello
  • payload.another
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!