Cas d’usage de Butler

Découvrir ce qui est arrivé à cet appel

Vous avez un numéro, et peut-être une heure. Vous devez savoir où l’appel a échoué et à qui revient la faute. C’est de loin la demande la plus fréquente adressée à Butler.

La situation

Quelqu’un s’est plaint d’abord. C’est presque toujours comme ça que tout commence, que la plainte vienne d’un utilisateur final, d’un revendeur ou d’un collègue sur un autre canal, et ce qui vous parvient se résume à un seul identifiant : un numéro composé, parfois une heure, parfois rien de plus que « à l’instant ».

Y répondre aujourd’hui suppose d’ouvrir un outil de trace, de savoir quel contrôleur de session en bordure (SBC) examiner, de retrouver l’appel, de lire un diagramme SIP et de savoir ce que signifie un 480 dans ce contexte. Butler réduit tout cela à une phrase tapée dans la fenêtre de chat que vous avez déjà ouverte.

Les réponses

Choisissez une question et lisez l’échange complet

Ces échanges proviennent tous d’un même après-midi, sans retouche, avec les identifiants masqués. Lisez le deuxième pour voir ce que fait Butler quand il n’a pas les données demandées.

#voice-opsChat
IN

Ingénieur 10:19
@VI - Butler Notre opérateur nous a envoyé ce Call-ID et affirme que l’appel ne lui est jamais parvenu : 021CC6ECFA8140000005CEAE@TS_VOIP1. Que sait-on de cet appel ?
B

VI - Butler APP 10:19
vitrace_find_sessions  call_idvitrace_get_chain  session_uuid
Monsieur, j’ai trouvé l’appel. Le Call-ID que l’opérateur vous a donné appartient à un tronçon interne, un saut de transit entre nos deux SBC, et non à l’appel qui lui était destiné.
CHEMIN DE L’APPEL13140644549 → 105112125644549 (normalisé en +1 212 564 4549) Saut 1 sbc-sut-00 reçu du client sur DOMESTIC_ATTSaut 2 sbc-sut-01 acheminé en sortie sur DOMESTIC_VERIZON
Le tronçon sorti de sbc-sut-01 vers l’opérateur utilise un Call-ID différent : 021CC6ECFA8140000003107D@TS_VOIP0. Celui qu’il vous a donné correspond à la liaison interne entre nos SBC. Il ne pouvait pas le voir.
Ce qui s’est réellement passé

  • L’appel a été décroché à 10:16:10 UTC
  • Durée de 87 secondes, avec de l’audio dans les deux sens
  • Libération normale par l’appelant, et les deux tronçons indiquent release_source ConnectedLeg : le côté opérateur était donc établi et connecté à la fin de l’appel
Si l’opérateur affirme ne jamais avoir reçu cet appel, je lui demanderais plutôt de rechercher le Call-ID 021CC6ECFA8140000003107D@TS_VOIP0.

Un opérateur niait avoir reçu un appel et citait un Call-ID pour le prouver. Butler a retrouvé l’appel, puis a remarqué le détail qui clôt le débat : le Call-ID cité correspond au saut entre deux de nos propres SBC, donc l’opérateur ne pouvait pas le voir. Il a fourni celui que l’opérateur devait chercher, et confirmé que l’appel avait été décroché et avait duré 87 secondes. Cela représente vingt minutes dans une capture de paquets, et le résultat est une phrase que vous pouvez envoyer telle quelle à l’opérateur.

#voice-opsChat
IN

Ingénieur 10:19
@VI - Butler Un appel a échoué avec un 503 ce matin. Je dois savoir si c’était de notre côté ou de celui de l’opérateur avant de répondre au client.
B

VI - Butler APP 10:19
Monsieur, pour retrouver l’appel, il me faut un peu plus d’informations : le numéro concerné, l’heure approximative et le fuseau horaire, et le SBC par lequel il est passé si vous le savez.
IN

Ingénieur 10:24
@VI - Butler Désolé, l’appelant était le 13140758499, vers 09:40 UTC ce matin. Je ne sais pas quel SBC.
B

VI - Butler APP 10:24
vitrace_find_sessions  number, 09:00 to 10:30, sip_code=503vitrace_get_chain
Le 503 venait de l’opérateur, sur le NAP DOMESTIC_VERIZON.
09:42 UTCentré dans sbc-sut-00 via DOMESTIC_ATT 09:42:07routé SUT-00 → SUT-01 → SUT-02 et retourchaque tronçon sortant vers l’opérateur 503échec après ~3 s, 13 tentatives de routage
Les preuves

  • Le release_source de chaque tronçon sortant est LocalLeg, avec un sip_final_response 503
  • L’original_cause est 503_SERVICE_UNAVAIL(503)
  • Votre SBC a envoyé l’INVITE et l’opérateur a renvoyé 503 Service Unavailable
Vous pouvez dire au client que l’échec s’est produit du côté de l’opérateur, et non sur votre plateforme.

C’est le premier message qui vaut la peine d’être lu. Interrogé sur « un appel qui a échoué avec un 503 ce matin », Butler n’a pas choisi un appel au hasard en espérant tomber juste. Il a demandé un numéro, une heure approximative et un SBC, puis l’a retrouvé grâce à un filtre côté serveur sur le code de réponse, au lieu de parcourir les lignes une à une. La réponse cite les preuves utilisées avant de tirer sa conclusion, et c’est ce qui permet de transmettre la dernière ligne telle quelle.

#voice-opsChat
IN

Ingénieur 10:19
@VI - Butler L’utilisateur final jure que son téléphone n’a jamais sonné, mais de notre côté l’appel apparaît comme occupé. Qui a raison ? Prends le plus récent que tu trouves.
B

VI - Butler APP 10:19
vitrace_find_sessions  cause=UserBusyvitrace_get_chainvitrace_get_sip_ladder
Votre côté a raison. L’appel était réellement occupé.
07:52:27 UTC180 Ringing ← 07:52:27.353486 Busy Here ← 07:52:27.373 (20 ms plus tard)
Pourquoi le téléphone n’a jamais sonné

  • Le 180 Ringing a été envoyé par le commutateur de terminaison, pas par le terminal de l’utilisateur final
  • La sonnerie visible dans le diagramme n’est que de la signalisation : l’extrémité distante indiquait qu’elle tentait d’alerter la destination
  • Le 486 est revenu 20 ms plus tard, si bien que le combiné n’a très probablement jamais eu le temps de sonner physiquement
Le 486 Busy Here était bien réel. L’utilisateur final n’a peut-être pas entendu sonner, mais le réseau a bien tenté l’acheminement et a reçu un signal d’occupation de son côté.

Les deux parties avaient raison, et c’est pour cela que la discussion tournait en rond. Le réseau a bien tenté l’acheminement et le téléphone n’a pas sonné : vingt millisecondes suffisent à tout expliquer. Remarquez que Butler n’a pas choisi un camp pour le défendre. Il a lu ce que disait réellement la signalisation, qui s’est révélée plus précise que chacune des deux parties.

#voice-opsChat
IN

Ingénieur 10:19
@VI - Butler Combien de temps cet appel a-t-il mis à s’établir, et où est passé ce temps ? 70e68306-b1ae-41ab-a499-bf40ac150242
B

VI - Butler APP 10:19
vitrace_get_chainvitrace_get_session_legs
Le temps d’établissement a été d’environ 2,9 secondes. Voici sa répartition :
PHASE DURÉE SIGNIFICATIONDélai post-numérotation 295 ms de l’INVITE à la 1re sonnerie : routage et traitement par la destinationDurée de sonnerie 2 884 ms de la 1re sonnerie au décrochageTotal jusqu’à la connexion ~2,9 s
L’appel a commencé à 10:16:07.141 et a été décroché à 10:16:10.025. Les deux tronçons ont été décrochés presque simultanément : le délai venait donc surtout de l’attente que le correspondant décroche.

Un chiffre qui ne dit rien, découpé en deux chiffres qui disent quelque chose. Sur près de trois secondes d’établissement, 295 millisecondes relevaient du délai post-numérotation, c’est-à-dire du routage et du traitement propre à la destination, et les 2,9 secondes restantes correspondaient au correspondant qui ne décrochait pas. La première partie concerne la plateforme, la seconde non, et les confondre, c’est passer un après-midi à dépanner le mauvais système.

#voice-opsChat
IN

Ingénieur 10:18
@VI - Butler Résume-moi en deux phrases le dernier appel échoué d’aujourd’hui, que je puisse coller dans un ticket pour le client. Sans jargon, il n’est pas ingénieur.
B

VI - Butler APP 10:18
vitrace_find_sessions  status=failed, limit=1vitrace_get_chain
Le dernier appel échoué a eu lieu à 10:04 UTC ce matin. Un appel entrant du 13140530598 vers le 205112125530598 n’a pas pu aboutir, car le numéro de destination est introuvable dans le système de l’opérateur. L’appel s’est terminé immédiatement avec une réponse « numéro introuvable ».

L’objection habituelle quand on place un assistant devant un support, c’est qu’il va noyer l’équipe sous les détails. En voici le contre-exemple. Derrière cette réponse, Butler a parcouru une chaîne de trois sauts et six tronçons, puis en a écarté presque tout : pas de codes de réponse, pas de noms de NAP, pas de topologie. Trois phrases simples que la personne qui a ouvert le ticket peut vraiment lire.

#voice-opsChat
IN

Ingénieur 15:23
@VI - Butler Fais-moi un résumé d’une tentative d’appel vers le 5XX 6600 à 13:15 13:38
B

VI - Butler APP 15:23
vitrace_find_sessions  callee_number=“5XX 6600”, 13:00 to 14:00
Monsieur, j’ai trouvé 6 appels vers le 5XX 6600 entre 13:00 et 14:00. Voici ceux qui sont les plus proches de vos horaires :
Créneau de 13:1513:18:50 de 6XX XX2469 46 secondes ABOUTI Créneau de 13:3813:38:02 de 5XX 5202 29 secondes ABOUTI13:38:42 de 5XX 5202 234 secondes ABOUTI
Les deux appels de 13:38 provenaient du même numéro. Le premier a duré 29 secondes, le second près de 4 minutes. Tous les appels se sont terminés normalement. Voulez-vous que je récupère le diagramme SIP de l’un des appels de 13:38, Monsieur ?
IN

Ingénieur 15:25
@VI - Butler L’utilisateur signale que ces appels ont échoué et ont été coupés trop tôt. Ajoute le diagramme SIP des deux stp
B

VI - Butler APP 15:26
Appel 1 : 13:38:02 (29 secondes)INVITE (198.51.100.10 → 203.0.113.20)100 Trying ←180 Ringing ←200 OK ←ACK →BYE → (Normal Clearing)200 OK ←
Déconnexion à l’initiative de l’appelant, avec une libération normale. L’appel 2 à 13:38:42 présente le même diagramme sur 3 min 54 s.
Évaluation. Les deux appels ont abouti et se sont terminés normalement. Dans les deux cas, le BYE a été envoyé par l’appelant avec Normal Clearing. Le diagramme SIP ne montre aucun échec ni aucune déconnexion prématurée. Les appels ont été terminés du côté de l’appelant, pas de la destination.
IN

Ingénieur 15:33
@VI - Butler Pour l’appel 1 : quel codec a été négocié et utilisé pendant l’appel. Pas les codecs disponibles, le codec réellement utilisé.
B

VI - Butler APP 15:34
Les deux tronçons de l’appel ont utilisé PCMA (G.711 loi A). C’est confirmé par les données des tronçons CDR de la chaîne : PCMA est donc le codec négocié et réellement utilisé pendant toute la durée de l’appel.

L’ingénieur disait que les appels avaient échoué. Les preuves disaient le contraire, et Butler l’a dit, diagramme à l’appui. Remarquez aussi que personne n’a rien eu à répéter : au troisième message, la question se résume à « pour l’appel 1 », et Butler a toujours les deux appels en tête. Une réponse digne de confiance, c’est une réponse capable de vous contredire.

Comment le demander

Les requêtes, et où chacune mène

Copiez-en une et remplacez les numéros par les vôtres. Les relances comptent plus que la question de départ.

Qu’est-il arrivé à l’appel vers le 5XX 6600 à l’instant ?
Quand le demander

Quelqu’un s’est plaint et vous n’avez que le numéro. Pas d’heure, pas de sens d’appel, pas de SBC.

Ce que vous obtenez

L’appel, la cause de déconnexion et le tronçon qui l’a provoquée.

Demandez ensuite

Montre-moi le diagramme en ASCIIC’est le tronçon entrant ou sortant ?Y avait-il de l’audio ?
J’ai besoin des deux tronçons. Par quel NAP sortant l’appel est-il parti, et avec quelle cause de libération ?
Quand le demander

Vous êtes sur le point d’ouvrir un ticket auprès d’un opérateur en amont et il doit être incontestable.

Ce que vous obtenez

Le NAP d’entrée, le NAP de sortie, la source de libération et la cause de déconnexion, qui transforment « l’appel a échoué » en « il est sorti par cette jonction et cet opérateur l’a refusé ».

Demandez ensuite

A-t-il essayé ailleurs ?Génère un PDF que je peux transmettre
Que disait exactement le 503 ?
Quand le demander

Le code d’état n’est pas la réponse. Vous voulez le texte exact de l’en-tête de motif.

Ce que vous obtenez

La phrase de motif, plus tout en-tête Reason ou Warning qui l’accompagne, c’est-à-dire la partie qu’un tableau de bord ne peut pas vous montrer.

Demandez ensuite

Quel côté l’a envoyé ?Combien d’autres comme celui-là aujourd’hui ?
Quel codec a réellement été utilisé, et non lesquels étaient disponibles ?
Quand le demander

Une plainte audio, et l’offre SDP liste cinq codecs qui ne vous apprennent rien.

Ce que vous obtenez

Le codec négocié pour chaque tronçon, lu dans les enregistrements des tronçons plutôt que dans l’offre.

Demandez ensuite

Quel était le MOS sur chaque tronçon ?Y a-t-il eu un transcodage ?
Autres exemples, quand vous cherchez encore l’appel

Ai-je eu des appels vers le 4XX 9002 ?
Je cherche 3 appels passés le 26/08 du 6XX 2467 vers le 5XX 7366. Tu peux retrouver les Call-ID ?
L’appel de 08:07 UTC a-t-il eu un problème audio ? Le MOS indique zéro.
Au quotidien

Comment lire ce qui revient

Un MOS vide signifie « pas de média », pas une mauvaise note. Cette valeur n’existe que lorsque du média a réellement circulé : sur un appel de durée nulle, Butler la signale donc comme absente plutôt que d’afficher un zéro qui ressemblerait à une note de qualité. Ce sont justement les appels sur lesquels on pose le plus de questions, c’est donc le champ dont il vaut la peine de connaître le comportement.
Laissez les Nodes le détecter, puis demandez à Butler pourquoi. Les alertes de seuil sont déclenchées par programme par les Voice Intelligence Nodes, selon les règles que vous définissez. Apportez l’alerte dans la conversation et Butler ira chercher ce qui se cache derrière.
Demandez le fichier sur l’application qu’utilise votre équipe. Slack, Teams et Telegram se comportent de la même façon pour tout ce qui figure sur cette page. La seule différence concerne la livraison : les fichiers arrivent dans la conversation sur Slack et Telegram, et sur Teams Butler les envoie par e-mail et vous le dit.
Cas d’usage de Butler

Qu’est-il arrivé à cet appel ?

Un numéro, et peut-être une heure. Butler retrouve l’appel et indique de quel côté il a été terminé.

Décomptes, regroupements, seuils et KPI sur un ensemble d’appels.

Tables de routage, expressions régulières et profils SDP en langage clair.

Posez vos questions en français, en espagnol ou en portugais et obtenez la réponse tirée de la documentation en anglais.

Modifications, rapports, fichiers et e-mails, chacun attendant votre feu vert.

Collez la réclamation dans les mots du client et laissez Butler retrouver l’appel.

Tous les cas d’usage de Butler

Interrogez Butler sur votre propre appel échoué

Déployé en 48 heures, sans engagement, dans l’application de messagerie que votre équipe utilise déjà.

En soumettant ce formulaire, vos informations seront traitées conformément à notre Politique de confidentialité.