es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Twilio Voz: Las llamadas entre clientes no se realizan

Cuando se realiza una llamada en la aplicación telefónica de un cliente a otro cliente, la llamada termina con un error y la consola de Twilio muestra que el número del cliente marcado se convierte en números en lugar de client:name. Por ejemplo: client:adam.weissert aparece en la consola de Twilio como 254368232693477378. Si ayuda, actualmente tengo la aplicación ejecutándose en un teléfono e intento llamar a un usuario registrado en nuestra aplicación web correspondiente.

Por lo que sé acerca de registrar un cliente de Twilio, ambos deben tener un token de acceso registrado. Para los intentos de llamadas que he realizado, esto no debería ser un problema, lo que me deja confundido acerca de cómo esto podría suceder.

Este es el código utilizado para realizar una llamada saliente:

// Código que ayuda a reproducir el problema
private fun placeCall(callerID: String) {
    val nonAlphaNum = "[^a-zA-Z0-9]".toRegex()
    var callIdFormat = ""

    if (!callerID.contains(".")) { // si no es un ID de cliente y es un número
        callIdFormat = callerID.replace(" ", "")
        callIdFormat = callIdFormat.replace(nonAlphaNum, "")
    } else {
        callIdFormat = callerID
    }

    params["To"] = callIdFormat

    val connectOptions = ConnectOptions.Builder(UserService.twilioAccessToken!!)
        .params(params)
        .build()

    activeCall = Voice.connect(requireContext().applicationContext, connectOptions, callListener)
}

Twilio intenta marcar el ID del cliente, coloca exitosamente una llamada en nuestro número de Twilio, pero no logra realizar una llamada a un cliente.

Este registro no se muestra en el lado del cliente, pero aparece en la consola de Twilio y solo se muestra en la llamada saliente.

Dial: Twilio no admite llamar a este número o el número no es válido

Diría que esta es una funcionalidad crítica del SDK, lo que me hace pensar que tal vez me esté acercando incorrectamente a esto. Agradecería cualquier consejo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el fragmento de código proporcionado, parece que el problema podría estar en la forma en que se establece la variable callIdFormat. Si la variable callerID no contiene un punto (.), lo cual indica que es un ID de cliente, entonces la variable callIdFormat se establece como la variable callerID sin los caracteres no alfanuméricos. Esto podría provocar que la API de Twilio interprete el número de teléfono como un ID de cliente, de ahí la conversión a números.

    Para solucionar este problema, es recomendable asegurarse de que la variable callerID siempre esté correctamente formateada como un ID de cliente (en el formato cliente:nombre) o como un número de teléfono. Un enfoque podría ser utilizar una expresión regular para verificar si callerID es un número de teléfono, y si es así, formatearlo correctamente antes de establecerlo en el campo params["To"].

    Por ejemplo, podrías agregar el siguiente código antes de establecer el campo params["To"]:

    if (!callerID.contains(".")) { // verifica si callerID es un número de teléfono
      val formattedNumber = callerID.replace(nonAlphaNum, "") // elimina los caracteres no alfanuméricos del número de teléfono
      params["To"] = "+$formattedNumber" // agrega el prefijo del código de país al número de teléfono
    } else {
      params["To"] = callerID // callerID ya es un ID de cliente
    }
    

    Este código verifica si callerID es un número de teléfono al comprobar si contiene un punto (.). Si es un número de teléfono, elimina los caracteres no alfanuméricos y agrega el prefijo del código de país (+) antes de establecerlo en el campo params["To"]. Si ya es un ID de cliente, establece params["To"] como la variable callerID tal cual.

    Al formatear correctamente el campo params["To"], la API de Twilio debería poder interpretar correctamente si es un ID de cliente o un número de teléfono y realizar la llamada de manera adecuada.

Comments are closed.