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.
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 variablecallerID
no contiene un punto (.
), lo cual indica que es un ID de cliente, entonces la variablecallIdFormat
se establece como la variablecallerID
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 formatocliente:nombre
) o como un número de teléfono. Un enfoque podría ser utilizar una expresión regular para verificar sicallerID
es un número de teléfono, y si es así, formatearlo correctamente antes de establecerlo en el campoparams["To"]
.Por ejemplo, podrías agregar el siguiente código antes de establecer el campo
params["To"]
: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 campoparams["To"]
. Si ya es un ID de cliente, estableceparams["To"]
como la variablecallerID
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.