ASTERISK – Configuration de files d’attentes

Comme son nom l’indique, nous allons maintenant nous atteler à la configuration de files d’attentes. Si vous ne savez pas ce que c’est je vais vous expliquer rapidement. Lorsque vous appelez un SAV par exemple, vous choisissez le service que voulez joindre et généralement une voix vous annonce qu’on va prendre votre appel et que vous êtes le 10ième par exemple et que votre temps d’attente est de 5 minutes. Nous allons voir comment créer ceci de manière à ce que plus tard, les appels entrants ne soient pas gérés qu’un par un mais que les personnes puissent attendre que l’on prenne leur appel ce qui est très bénéfique dans le cas où l’entreprise reçoit de nombreux appels. Dans notre cas nous allons mettre au point 3 files d’attentes, une file d’attente « Commercial », une file d’attente « service technique » et une file d’attente « autres questions » comme nous l’avons paramétré dans notre IVR.

Une fois n’est pas coutume nous allons commencer par renommer le fichier queues.conf en queues.conf.old et créer un nouveau fichier. Pour commencer nous allons mettre les paramètres généraux du fichier :

[general]

persistentmembers=yes ;Les membres d’une queue sont persistant

announce-holdtime = yes ;Définir si on annonce le temps d’attente ou pas

announce-position = yes ;Définir si on annonce la position dans la file d’attente

announce-frequency = 60 ;Fréquence en seconde des annonces

Voilà maintenant que nous avons fait ça nous allons créer nos trois files d’attentes avec les même paramètres. Pour exemple je vais vous montrer la configuration de la file d’attente commercial :

[Commercial]

musiconhold=default

strategy=ringall

timeout=20

retry=15

wrapuptime=15

joinempty=no

leavewhenempty=yes

member => SIP/105

Voilà maintenant je vais vous expliquer un peu ce que ça signifie tout ça :

Musiconhold : défini le contexte des musiques d’attente

Strategy : La stratégie de sonnerie il y en a 6 différents :

– ringall : fait sonner tous les téléphones des membres de la file d’attente disponible

– random : appelle un agent de la queue au hasard

– rrmemory : appelle le membre qui vient après le dernier membre appelé

– fewestcalls : appelle le membre qui a le moins été appelé de cette queue

– roundrobin : fait sonner les membres de la queue un près l’autre cycliquement

– leasrecent : fait sonner le dernier membre appelé

Timeout : on définit le temps avant que l’appel passe à un autre membre. Si vous êtes en ringall au bout d’un certain temps le téléphone s’arrête de sonner et reprend à un certain temps.

Retry : Temps en seconde au quel le téléphone se remet à sonner s’il n’y a pas eu de réponse à l’appel.

Wrapuptime : temps en seconde qui définit après combien de temps un membre peut être rappelé après avoir raccroché.

Joinempty : ici on définit si oui ou non les clients peuvent rejoindre la file d’attente s’il n’y a pas de membre présent pour répondre

Leavewhenempty : si des clients sont dans la file d’attente et que les membres se déconnecte alors les clients peuvent être basculés sur messagerie directement.

Enfin member permet de définir les membres présents des leurs connexion dans la file d’attente. Ici dans la file commerciale j’ai assigné directement le numéro 105 qui correspond à Martine notre responsable commercial. Si vous voulez en rajouter d’autre vous pouvez rajouter la même ligne en dessous avec le numéro que vous voulez. Voici mon fichier de configuration en rajoutant les autres files d’attente.

Maintenant nous allons faire en sorte que notre menu interactif renvoie les appels dans la file d’attente convenue. Pour se faire on va se rendre dans le fichier extensions.conf.

Pour commencer mettez-vous à la fin du fichier et créez un contexte appelé [File_Attente]. Ensuite rajoutez les lignes suivantes :

exten => 910,1,Answer()

exten => 910,2,agi(googletts.agi,"Merci de bien vouloir patienter.",fr,any,1.3)

exten => 910,3,agi(googletts.agi,"Nous allons prendre votre appel",fr,any,1.3)

exten => 910,4,Queue(Commercial,t)

exten => 910,5,Voicemail(105@Bureau_Interne)

Concrètement là nous avons assigné le numéro 910 à la queue commerciale, on répond au téléphone, on dit un message au client, on l’ajoute à la queue commerciale. Surtout ne pas oublier le ,t sinon il vous sera impossible de récupérer les appels de la file d’attente. Et enfin si personne n’est disponible on bascule sur la boite vocale de notre chère Martine qui est la responsable commerciale. Enfin voici le contexte File_Attente rempli en entier avec les deux autres files d’attentes :

Voilà maintenant que nous avons configuré cela nous allons reprendre les lignes de notre menu interactif pour qu’elle fasse appel directement à nos files d’attentes plutôt qu’un appel en direct à l’utilisateur.

Voici les ligne à modifier :

;Si l'utilisateur appuis sur 1 on va à la priorité 1 du numéro 910 (Commercial)

exten => 1,1,Goto(File_Attente,910,1)

;Si l'utilisateur appuis sur 2 on va à la priorité 1 du numéro 920 (Technique)

exten => 2,1,Goto(File_Attente,920,1)

;Si l'utilisateur appuis sur 3 on va a la priorité 1 du numéro 930 (Autres question)

exten => 3,1,Goto(File_Attente,930,1)

Voilà maintenant pour effectuer les tests je vous conseille de vous connecter sur X-Lite avec un compte faisant partie d’une de vos queues. Pour moi je vais utiliser le compte 103 qui correspond à Julien du service Technique. N’oubliez pas de faire un Reload dans la console Asterisk. Si vous voulez voir si la configuration des files d’attentes a bien fonctionné tapez queue show dans la console d’Asterisk et vous devriez voir un tableau s’afficher comme ceci :

Là on peut voir que mes trois files d’attentes sont créées, que l’utilisateur 103 est bien connecté, Not in use signifie et qu’il n’est actuellement pas au téléphone, et que les deux autres utilisateurs ne sont eux pas connectés (unavailable).

Maintenant appelez le 8001, appuyez sur le service que vous voulez contacter et normalement vous entendrez le texte qu’on a paramétré pour la file d’attente et vous serez mis en attente avec une musique de fond. Voilà maintenant vous avez un standard digne des grandes entreprises.

Cependant la configuration des files d’attente n’est pas finie. Tout d’abord imaginez que vous devez partir en pause et donc vous devez vous absenter le temps de votre pause. Ou alors imaginez que Julien Pox est malade et ne viendra pas travailler, vous devez pouvoir vous connecter dynamiquement à une file d’attente pour pouvoir récupérer les appels sinon ils seront redirigés directement vers la boite vocale et avouez que ce n’est pas une solution viable. Nous allons voir tout cela maintenant.

Pour commencer nous allons faire en sorte que les utilisateurs puissent partir en pause. Ceci est très simple à mettre en place. Rendez-vous dans le fichier extension.conf à la fin du contexte [Bureau_Interne] après la ligne exten => 8001,1,Goto(IVR_FR,${EXTEN},1). Lorsque vous y êtes rajoutez les lignes suivantes :

;DialPlan pour se mettre en pause (ne plus recevoir d'appel)

exten => 9001,1,PauseQueueMember(,SIP/${CALLERID(num)})

exten => 9001,2,agi(googletts.agi,"Vous pouvez maintenant partir en pause.",fr,any,1.3)

exten => 9001,3,Hangup()

PauseQueueMember est la fonction à appeler pour mettre un utilisateur en pause. En paramètre on lui passe simplement le numéro de l’utilisateur qui appelle ce numéro. Ici j’ai configuré le numéro 9001, lorsqu’on l’appelle, notre statut passe en pause. Nous allons maintenant faire la même chose mais pour sortir de pause. A la suite des lignes que vous venez d’ajouter, ajoutez celle-ci :

;Dial plan pour s'enlever de pause

exten => 9002,1,UnPauseQueueMember(,SIP/${CALLERID(num)})

exten => 9002,2,agi(googletts.agi,"Vous venez de reprendre le travail.",fr,any,1.3)

exten => 9002,3,Hangup()

Ici on effectue la même chose sauf qu’on appelle la méthode UnPauseQueueMember qui va nous enlever du mode pause. Ici j’ai paramétré le numéro 9002. Voilà maintenant pour effectuer votre test, utilisez un compte sur X-Lite qui appartient à une file d’attente, dans mon cas j’utilise l’utilisateur 103 Julien Pox. Pensez à faire un reload dans la console Asterisk. Lorsque vous appelez le 9001 vous devez entendre une voix vous dire que vous pouvez partir en pause, vous pouvez faire un queue show et voir que à côté de l’utilisateur il y a marqué paused comme ceci :

Et si vous appelez le 9002 après vous verrez que cet attribut est parti.

Maintenant nous allons voir comment s’ajouter et s’enlever dynamiquement d’une file d’attente. Sachez cependant que cela n’est possible que pour les membres non définis dans une file d’attente, c’est-à-dire qu’il ne sera pas possible à julien de s’enlever de la file d’attente technique mais il pourra s’ajouter à la file d’attente commercial s’il le souhaite par exemple. Donc restons dans le fichierextension.conf dans le contexte [Bureau_Interne] après les lignes que nous avons ajoutées précédemment. Maintenant ajoutez les lignes suivantes :

;Dial Plan pour s'ajouter ou se supprimer d'une queue d'appel

;File d'attente Commercial

exten => 9010,1,Addqueuemember(Commercial,SIP/${CALLERID(num)})

exten => 9010,2,agi(googletts.agi,"Vous venez de vous connecter à la file d'attente des appels commerciaux.",fr,any,1.3)

exten => 9010,3,UnPauseQueueMember(Commercial,SIP/${CALLERID(num)})

exten => 9010,4,Hangup()

Maintenant que je vous explique un peu. On vient de définir le numéro 9010 pour s’ajouter dynamiquement à la file d’attente Commercial. La fonction AddQueueMember permet d’ajouter un utilisateur à une file d’attente, ici on passe en paramètre la queue qu’on veut rejoindre donc ici Commercial, et le numéro de la personne qu’on veut ajouter, ici on passe en paramètre le numéro de la personne qui appelle le 9010. Si vous avez remarquez, avant de raccrocher je fais appel à la méthode UnPauseQueueMember pour être sûr que celui-ci sera directement connecté et opérationnel. Maintenant nous allons faire la même chose pour se déconnecter d’une file d’attente dynamiquement. Il vous faut rajouter ceci à la suite :

exten => 9015,1,Removequeuemember(Commercial,SIP/${CALLERID(num)})

exten => 9015,2,agi(googletts.agi,"Vous venez de vous déconnecter de la file d'attente des appels commerciaux.",fr,any,1.3)

exten => 9015,3,Hangup()

Ici on définit le numéro 9015 pour se déconnecter d’une file d’attente. On fait appel à la fonction RemoveQueueMember pour déconnecter l’utilisateur qui prend en paramètre les mêmes paramètres que AddQueueMember. Maintenant si vous voulez faire vos tests dans X-Lite appelez le numéro 9010 pour vous ajouter dynamiquement à la file d’attente commercial et le 9015 pour vous y déconnecter. Si vous voulez voir si ça marche faites la commande queue show lorsque vous avez composez le 9010 et vous devrez voir que l’utilisateur dans mon exemple julien pox (103) a été ajouté à la file d’attente commercial :

Et si vous composez le 9015 et que vous refaites la commande queue show vous verrez que l’utilisateur a disparu. Voilà maintenant il reste à faire ça pour toutes les files d’attentes paramétrées. Voici à quoi ressemble mon fichier extension.conf après avoir pris en compte les autres files d’attentes :

Bon, nous avons maintenant tout pris en compte, cependant il reste un petit détail à régler avant de faire la configuration des appels entrants et sortants de l’entreprise.

Leave a Reply

Your email address will not be published. Required fields are marked *