Caso de uso de Butler

Averiguar qué pasó con esta llamada

Tiene un número y quizás una hora. Necesita saber dónde murió la llamada y de quién fue la culpa. Es, por lejos, lo que más le preguntan a Butler.

La situación

Primero alguien se quejó. Casi siempre empieza así, ya sea un usuario final, un revendedor o un colega en otro canal, y lo que le llega es un único identificador: un número marcado, a veces una hora, en ocasiones nada más que “hace un momento”.

Responder hoy implica abrir una herramienta de trazas, saber qué controlador de borde de sesión (SBC) revisar, encontrar la llamada, leer un diagrama SIP y saber qué significa un 480 en ese contexto. Butler reduce todo eso a una frase escrita en la ventana de chat que ya tiene abierta.

Las respuestas

Elija una pregunta y lea el intercambio completo

Todos estos intercambios salen de una misma tarde, sin editar, con los identificadores ocultos. Lea el segundo para ver qué hace Butler cuando no tiene los datos que le pidió.

#voice-opsChat
IN

Ingeniero 10:19
@VI - Butler Nuestro operador nos envió este Call-ID y dice que la llamada nunca le llegó: 021CC6ECFA8140000005CEAE@TS_VOIP1. ¿Qué sabemos de ella?
B

VI - Butler APP 10:19
vitrace_find_sessions  call_idvitrace_get_chain  session_uuid
Señor, encontré la llamada. El Call-ID que le dio el operador pertenece a un tramo interno, un salto de tránsito entre nuestros dos SBC, no a la llamada hacia ellos.
FLUJO DE LA LLAMADA13140644549 → 105112125644549 (normalizado a +1 212 564 4549) Salto 1 sbc-sut-00 recibida del cliente por DOMESTIC_ATTSalto 2 sbc-sut-01 enrutada hacia DOMESTIC_VERIZON
El tramo que salió de sbc-sut-01 hacia el operador usa un Call-ID distinto: 021CC6ECFA8140000003107D@TS_VOIP0. El que le dieron es el enlace interno entre nuestros SBC. Ellos nunca podrían verlo.
Lo que realmente pasó

  • La llamada fue contestada a las 10:16:10 UTC
  • Duración de 87 segundos, con audio conectado en ambos sentidos
  • Liberación normal por parte de quien llamó, y ambos tramos indican release_source ConnectedLeg, así que el lado del operador estaba activo y conectado cuando terminó
Si el operador dice que nunca recibió esta llamada, le pediría que busque el Call-ID 021CC6ECFA8140000003107D@TS_VOIP0.

Un operador negaba haber recibido una llamada y citaba un Call-ID para probarlo. Butler encontró la llamada y luego notó el detalle que zanja la discusión: el Call-ID citado pertenece al salto entre dos de nuestros propios SBC, así que el operador no podía haberlo visto. Devolvió el que deberían buscar y confirmó que la llamada fue contestada y duró 87 segundos. Eso son veinte minutos en una captura de paquetes, y el resultado es una frase que puede enviar directamente al operador.

#voice-opsChat
IN

Ingeniero 10:19
@VI - Butler Esta mañana falló una llamada con un 503. Necesito saber si fue de nuestro lado o del operador antes de responderle al cliente.
B

VI - Butler APP 10:19
Señor, para encontrar la llamada necesito un poco más: el número de teléfono involucrado, la hora aproximada y en qué zona horaria, y por qué SBC pasó, si lo sabe.
IN

Ingeniero 10:24
@VI - Butler Perdón, el que llamaba era el 13140758499, más o menos a las 09:40 UTC de esta mañana. No sé qué SBC.
B

VI - Butler APP 10:24
vitrace_find_sessions  number, 09:00 to 10:30, sip_code=503vitrace_get_chain
El 503 vino del operador, en el NAP DOMESTIC_VERIZON.
09:42 UTCentró a sbc-sut-00 por DOMESTIC_ATT 09:42:07enrutada SUT-00 → SUT-01 → SUT-02 y de vueltacada tramo de salida hacia el operador 503falló tras ~3 s, 13 intentos de enrutamiento
La evidencia

  • El release_source de cada tramo de salida es LocalLeg, con sip_final_response 503
  • El original_cause es 503_SERVICE_UNAVAIL(503)
  • Su SBC envió el INVITE y el operador devolvió 503 Service Unavailable
Puede decirle al cliente que la falla fue del lado del operador, no de su plataforma.

El primer mensaje es el que vale la pena leer. Cuando le preguntaron por “una llamada que falló con un 503 esta mañana”, Butler no eligió una llamada al azar con la esperanza de acertar. Pidió un número, una hora aproximada y un SBC, y luego la encontró con un filtro del lado del servidor sobre el código de respuesta, en lugar de recorrer filas. La respuesta nombra la evidencia que usó antes de sacar la conclusión, y eso es lo que permite reenviar la última línea tal cual.

#voice-opsChat
IN

Ingeniero 10:19
@VI - Butler El usuario final jura que su teléfono nunca sonó, pero de nuestro lado la llamada aparece como ocupada. ¿Quién tiene razón? La más reciente que encuentres.
B

VI - Butler APP 10:19
vitrace_find_sessions  cause=UserBusyvitrace_get_chainvitrace_get_sip_ladder
Su lado tiene razón. La llamada estaba realmente ocupada.
07:52:27 UTC180 Ringing ← 07:52:27.353486 Busy Here ← 07:52:27.373 (20 ms después)
Por qué el teléfono nunca sonó

  • El 180 Ringing lo envió el conmutador de terminación, no el dispositivo del usuario final
  • El timbre que aparece en el diagrama es solo señalización: el extremo remoto indicaba que estaba intentando alertar al destino
  • El 486 llegó 20 ms después, así que es casi seguro que el teléfono no tuvo tiempo de sonar físicamente
El 486 Busy Here fue real. Es posible que el usuario final no lo haya oído sonar, pero la red sí intentó entregar la llamada y recibió una señal de ocupado de su lado.

Las dos partes tenían razón, y por eso la discusión no iba a ninguna parte. La red sí intentó entregar la llamada y el teléfono no sonó: veinte milisegundos son toda la explicación. Observe que Butler no eligió un bando para defenderlo. Leyó lo que realmente decía la señalización, que resultó ser más precisa que cualquiera de las dos partes.

#voice-opsChat
IN

Ingeniero 10:19
@VI - Butler ¿Cuánto tardó en conectarse esta llamada y en qué se fue el tiempo? 70e68306-b1ae-41ab-a499-bf40ac150242
B

VI - Butler APP 10:19
vitrace_get_chainvitrace_get_session_legs
El tiempo de conexión fue de unos 2.9 segundos. Así se distribuyó:
FASE DURACIÓN SIGNIFICADORetardo posmarcación 295 ms del INVITE al primer timbre: enrutamiento y procesamiento en el destinoTiempo de timbre 2,884 ms del primer timbre a la respuestaTotal hasta conectar ~2.9 s
La llamada empezó a las 10:16:07.141 y fue contestada a las 10:16:10.025. Ambos tramos contestaron casi al mismo tiempo, así que la demora se debió principalmente a la espera de que el destinatario atendiera.

Una cifra que no dice nada, dividida en dos que sí dicen algo. De casi tres segundos de conexión, 295 milisegundos fueron retardo posmarcación, es decir, el enrutamiento y el procesamiento propio del destino, y los otros 2.9 segundos fueron el destinatario sin atender. Lo primero es un tema de plataforma y lo segundo no, y confundirlos es la forma de pasar una tarde resolviendo problemas en el sistema equivocado.

#voice-opsChat
IN

Ingeniero 10:18
@VI - Butler Dame dos frases sobre la llamada fallida más reciente de hoy que pueda pegar en un ticket para el cliente. Sin jerga, no es ingeniero.
B

VI - Butler APP 10:18
vitrace_find_sessions  status=failed, limit=1vitrace_get_chain
La llamada fallida más reciente fue a las 10:04 UTC de esta mañana. Una llamada entrante del 13140530598 al 205112125530598 no pudo completarse porque el número de destino no se encontró en el sistema del operador. La llamada terminó de inmediato con una respuesta de “número no encontrado”.

La objeción habitual a poner un asistente frente a una mesa de soporte es que va a enterrar al equipo en detalles. Este es el contraejemplo. Detrás de esa respuesta, Butler recorrió una cadena de tres saltos y seis tramos, y luego descartó casi todo: sin códigos de respuesta, sin nombres de NAP, sin topología. Tres frases simples que la persona que abrió el ticket realmente puede leer.

#voice-opsChat
IN

Ingeniero 15:23
@VI - Butler Dame un resumen de un intento de llamada al 5XX 6600 a las 13:15 13:38
B

VI - Butler APP 15:23
vitrace_find_sessions  callee_number=“5XX 6600”, 13:00 to 14:00
Señor, encontré 6 llamadas al 5XX 6600 entre las 13:00 y las 14:00. Estas son las más cercanas a sus horarios:
Franja de las 13:1513:18:50 de 6XX XX2469 46 segundos COMPLETADA Franja de las 13:3813:38:02 de 5XX 5202 29 segundos COMPLETADA13:38:42 de 5XX 5202 234 segundos COMPLETADA
Las dos llamadas de las 13:38 vinieron del mismo número. La primera duró 29 segundos y la segunda casi 4 minutos. Todas las llamadas se completaron con normalidad. ¿Obtengo el diagrama SIP de alguna de las llamadas de las 13:38, señor?
IN

Ingeniero 15:25
@VI - Butler El usuario dice que estas llamadas fallaron y se cortaron antes de tiempo. Incluye porfa el diagrama SIP de las dos
B

VI - Butler APP 15:26
Llamada 1: 13:38:02 (29 segundos)INVITE (198.51.100.10 → 203.0.113.20)100 Trying ←180 Ringing ←200 OK ←ACK →BYE → (Normal Clearing)200 OK ←
Desconexión iniciada por quien llamó, con liberación normal. La llamada 2 de las 13:38:42 muestra el mismo diagrama durante 3 min 54 s.
Evaluación. Ambas llamadas se completaron con éxito y terminaron con normalidad. En los dos casos, el BYE lo envió quien llamó, con Normal Clearing. No se ve ninguna falla ni desconexión prematura en el diagrama SIP. Las llamadas terminaron del lado del origen, no del destino.
IN

Ingeniero 15:33
@VI - Butler En la llamada 1; qué códec se negoció y se usó en la llamada. No qué códecs estaban disponibles, sino qué códec se usó realmente.
B

VI - Butler APP 15:34
Ambos tramos de la llamada usaron PCMA (G.711 ley A). Esto se confirma en los datos de los tramos CDR de la cadena, así que PCMA fue el códec negociado y el que realmente se usó durante toda la llamada.

El ingeniero dijo que las llamadas fallaron. La evidencia decía que no, y Butler lo dijo, con el diagrama como prueba. Observe también que nadie repitió nada: para el tercer mensaje la pregunta es solo “en la llamada 1”, y Butler todavía tiene ambas llamadas presentes. Una respuesta digna de confianza es una que está dispuesta a llevarle la contraria.

Cómo pedirlo

Las consultas y a dónde lleva cada una

Copie una y reemplace los números por los suyos. Las preguntas de seguimiento importan más que la primera.

¿Qué pasó con la llamada al 5XX 6600 hace un momento?
Cuándo pedirlo

Alguien se quejó y lo único que tiene es el número. Sin hora, sin dirección, sin SBC.

Lo que obtiene

La llamada, la causa de desconexión y qué tramo la generó.

Luego pregunte

Muéstrame el diagrama en ASCII¿Es el tramo entrante o el saliente?¿Hubo audio?
Necesito ambos tramos. ¿Por cuál NAP de salida salió la llamada y con qué causa de liberación?
Cuándo pedirlo

Está por abrir un ticket con un operador aguas arriba y necesita que sea indiscutible.

Lo que obtiene

El NAP de entrada, el NAP de salida, el origen de la liberación y la causa de desconexión, que convierten “la llamada falló” en “salió por esta troncal y ese operador la rechazó”.

Luego pregunte

¿Intentó por otro lado?Genera un PDF que pueda reenviar
¿Qué decía exactamente el 503?
Cuándo pedirlo

El código de estado no es la respuesta. Quiere el texto exacto del encabezado de motivo.

Lo que obtiene

La frase de motivo, más cualquier encabezado Reason o Warning que la acompañe, que es la parte que un panel no le puede mostrar.

Luego pregunte

¿Qué lado lo envió?¿Cuántos más como este hubo hoy?
¿Qué códec se usó realmente, y no cuáles estaban disponibles?
Cuándo pedirlo

Una queja de audio, y la oferta SDP lista cinco códecs que no le dicen nada.

Lo que obtiene

El códec negociado en cada tramo, leído de los registros de los tramos y no de la oferta.

Luego pregunte

¿Cuál fue el MOS en cada tramo?¿Hubo transcodificación?
Más ejemplos, para cuando todavía está buscando la llamada

¿Tuve alguna llamada al 4XX 9002?
Busco 3 llamadas hechas el 26/08 del 6XX 2467 al 5XX 7366. ¿Puedes ubicar los Call-ID?
¿La llamada de las 08:07 UTC tuvo un problema de audio? El MOS aparece en cero.
En el día a día

Cómo leer lo que recibe

Un MOS vacío significa “sin medios”, no una mala puntuación. La cifra solo existe cuando realmente hubo medios, así que en una llamada de duración cero Butler la reporta como ausente en lugar de mostrar un cero que parecería una calificación de calidad. Esas son justamente las llamadas por las que más se pregunta, así que es el campo cuyo comportamiento vale la pena conocer.
Deje que los Nodes lo detecten y luego pregúntele a Butler por qué. Las alertas de umbral las generan de forma programática los Voice Intelligence Nodes, según las reglas que usted define. Traiga la alerta al chat y Butler averiguará qué hay detrás.
Pida el archivo en la aplicación que use su equipo. Slack, Teams y Telegram se comportan igual para todo lo que aparece en esta página. La única diferencia es la entrega: los archivos llegan a la conversación en Slack y Telegram, y en Teams Butler los envía por correo electrónico y le avisa que lo está haciendo.
Casos de uso de Butler

¿Qué pasó con esta llamada?

Un número y, quizás, una hora. Butler encuentra la llamada e indica de qué lado se terminó.

Conteos, agrupaciones, umbrales y KPI sobre un conjunto de llamadas.

Tablas de enrutamiento, expresiones regulares y perfiles SDP en lenguaje sencillo.

Pregunte en francés, español o portugués y obtenga la respuesta a partir de la documentación en inglés.

Cambios, informes, archivos y correos, cada uno a la espera de su confirmación.

Pegue la queja con las palabras del cliente y deje que Butler encuentre la llamada.

Todos los casos de uso de Butler

Pregúntele a Butler por su propia llamada fallida

Implementado en 48 horas, mes a mes, en la aplicación de chat que su equipo ya tiene abierta.

Al enviar este formulario, su información será procesada de acuerdo con nuestra Política de privacidad.