Routage avec
ACD pour Armenie-Yerevan
Oussama Hammami, 2009-11-10
Switzernet
Nous
avons constaté une mauvaise qualité de la voix pour les appels à destination de
l’Armenie – Yerevan (+37410).
Pour
l’améliorer on a décidé de router dynamiquement les appels vers le vendeur qui
offre une meilleur qualité.
Le
Billing route les appels vers le vendeur dont la
préférence est la plus grande mais ce type de routage n’est pas faible car on
envoie les appels vers un vendeur quelque soit son état (chargée, en panne) ce
qui provoque parfois des indisponibilités ou problèmes de qualité.
Par
contre pour ce nouveau routage, on va tenir compte de l’ACD (Moyenne de durée
d'appel) pour un intervalle dynamique ainsi que la préférence pour calculer une
probabilité de routage pour chaque vendeur.
L’algorithme
de routage utilisé est décrit dans :
ACD Routing
for Fighting Wrong Signal Supervision [091020 ii]
La
probabilité de routage est le complément à 100 du pourcentage de rejet, c’est
la probabilité pour que l’appel passe par le vendeur spécifié au premier lieu
en cas de rejet la probabilité passe à 100% pour le second vendeur.
L’appel
ne sera rejeté qu’une seul fois par notre système de routage.
Le
Billing route toujours les appels vers le vendeur
dont la préférence est la plus grande mais cette fois le vendeur n’est qu’une
interface réseau de notre serveur Kamailio. Ce dernier va décider selon la
probabilité de routage spécifié au vendeur caractérisé par l’interface qui
vient de recevoir l’appel s’il l’accepte ou non.
Un
script PHP calcule le pourcentage de rejection et l’ACD pour les X dernières
minutes. L’exécution est lancée par CRON chaque 10 minute mais l’intervalle
dont lequel on calcule les variables de décision n’est pas fixe.
La
durée minimale de cet intervalle est de 20 minutes et le nombre minimal
d'appels est de 20 appels, si l'une de ces deux conditions n'est pas satisfaite
alors l'intervalle reste ouvert jusqu'au prochain lancement et c’est pour cette
cause qu’on remarque que l’intervalle fait toujours un pas de 10 minutes.
Lorsque
ces deux conditions sont vraies l'intervalle est fermé, une nouvelle ligne est
ajoute à la table « acd_vendors » de la base « acd_armenia » avec des nouveaux valeurs qui vont changer le
comportement de serveur de routage selon la qualité offert par les vendeurs
pendant ce dernier intervalle.
Enfin,
il va uploader un fichier html via FTP aux serveurs web de Switzernet
(Switzernet.com et Unappel.ch) qui sert à suivre le comportement du système et
pour surveiller son activité ce fichier est mis à jour chaque 5 minute.
À
chaque rejet Kamailio incrémente un compteur présent dans la base de données
pour la période en cours et à chaque autorisation il incrémente aussi un autre
compteur dans la même base ainsi nous avons le nombre totales des appels
traitées et rejetées par Kamailio.
Pour
démonstration, une calculatrice en ligne est fournie. Le fichier Excel joint
montre également les implémentations des équations utilisées pour calculer le
taux de rejet en fonction de valeurs de l'ACD.
Les
statistiques sont disponibles à cette adresse :
ACD Routing
Statistics:
Configuration
de Kamailio (OpenSER) [091023]
Les
Testes de ACD-Routage [091023]
Le
Protocole SIP [091023]
Switzernet © 2009 by O.Hammami