Mise en place du SVI
Source : http://tsrit.unblog.fr/2014/06/04/tuto-svi-sous-xivo/
Ou sont les fichiers sons ?
Musiques d'attente :
Les musiques d'attentes peuvent êêtre gérégérées directement par interface graphique sur :
Le repertoire default est le rérépertoire xivo original. Nous pouvons crécréer un autre rérépertoire, ici a étéété créécréé le repertoire attente , grâgrâce au "+" en haut àà gauche:


Ce rérépertoire contient les musiques d'attente qui seront jouéjouées de façfaçon aléaléatoire lors l'appelant sera en attente.
Ici : Musique-attente-CCP.10min.wav


Ces musiques d'attente peuvent tout a fait faire office d'offre promotionnelles en fonction des listes d'attente.
TODO : Voir avec Philemon si on peut faire un RAZ du rérépertoire default.
Pour info, les fichiers sons sont dans :
/var/lib/asterisk/moh
Fichiers voix (annonces):
Les fichiers voix originaux sont dans dans
/var/lib/xivo/sounds/svi-frsvi/fr_FR pour le svi françfrançais.
Comment fonctionne le SVI ?
-> S'en inspirer si modifications a apporter.
Le SVI se préprésente sous la forme d'un fichier de configuration.
Le fichier de configuration utiliséutilisé dans notre cas est est :
/etc/asterisk/extensions_extra.d/svi-ccp-demo.conf
[svi-ccp-prenat]
exten = s,1,NoOp(### selection de la langue en fonction du prefixe national ###)
same = n,NoOp(XIVO_SRCNUM=${XIVO_SRCNUM})
same = n,Set(PRENAT4=PRENAT=${XIVO_SRCNUM:0:4}2})
same = n,NoOp(PRENAT4=PRENAT=${PRENAT4})
same = n,Set(PRENAT5=${XIVO_SRCNUM:0:5})
same = n,NoOp(PRENAT5=${PRENAT5}PRENAT})
;same = n,Gotoif($[${PRENAT4}PRENAT}=0044]?uk)
;same = n,Gotoif($[${PRENAT4}=0034]?es)
;same = n,Gotoif($[${PRENAT4}=0049]?de)
;same = n,Gotoif($[${PRENAT4}=0039]?it)
;same = n,Gotoif($[${PRENAT5}=00351]06]?pt)
;same = n,Gotoif($[${PRENAT4}=0031]?nl)
same = n,NoOp(Destination fr par dédéfaut)
same = n(fr),Goto(svi-ccp-fr,s,1)
;same = n(uk),Goto(svi-ccp-uk,s,1)
;same = n(es),Goto(svi-ccp-es,s,1)
;same = n(it),Goto(svi-ccp-de,s,1)
;same = n(de),Goto(svi-ccp-it,s,1)
;same = n(pt),Goto(svi-ccp-pt,s,1)
;same = n(nl),Goto(svi-ccp-nl,s,1)
[svi-ccp-fr]
exten = s,1,NoOp(### svi fr camping car park ###)
same = n,Set(CHANNEL(language)=fr_FR)
same = n,Set(Langage=${CHANNEL(language)})
same = n,NoOp(Set the directory containing your ivr sounds)
same = n,Set(GV_DIRECTORY_SOUNDS=/var/lib/xivo/sounds/svi/${Langage})
same = n,NoOp(the system answers the call and waits for 1 second before continuing)
same = n,Answer(1000)
;same = n,DumpChan()
same = n,NoOp(the system plays the first part of the audio file "welcome to ...")
same = n(first),Playback(${GV_DIRECTORY_SOUNDS}/Message1)
same = n,Playback(${GV_DIRECTORY_SOUNDS}/Message12)Message4)
same = n,NoOp(variable "counter" is set to 0)
same = n(beginning),Set(counter=0)
same = n,NoOp(variable "counter" is incremented and the label "start" is defined)
same = n(start),Set(counter=$[${counter} + 1])
same = n,NoOp(counter variable is now = ${counter})
same = n,NoOp(waiting for 1 second before reading the message that indicate all choices)
same = n,Wait(1)
same = n,NoOp(play the message ivr-example-choices that contain all choices)
same = n,Background(${GV_DIRECTORY_SOUNDS}/Message3)
same = n,NoOp(waiting for DTMF during 5s)
same = n,Waitexten(5)
;##### CHOICE 1 #####
exten = 1,1,NoOp(pressed digit is 1, redirect to queue FR-ASSCLT in default context)
exten = 1,n,Goto(default,100,1)
;##### CHOICE 2 #####
exten = 2,1,NoOp(pressed digit is 2, redirect to queue FR-RENSEIGNT in default context)
exten = 2,n,Goto(default,150,1)
;##### CHOICE 3 #####
exten = 3,1,NoOp(pressed digit is 3, redirect to first label in this context)
exten = 3,n,Goto(s,start)
;##### TIMEOUT #####
exten = t,1,NoOp(no digit pressed for 5s, process it like an error)
exten = t,n,Goto(i,1)
;##### INVALID CHOICE #####
exten = i,1,NoOp(if counter variable is 3 or more, then goto label "error")
exten = i,n,GotoIf($[${counter}>=3]?error)
exten = i,n,NoOp(pressed digit is invalid and less than 3 errors: the guide ivr-exemple-invalid-choice is now played)
exten = i,n,Playback(${GV_DIRECTORY_SOUNDS}/Message6)
exten = i,n,Goto(s,start)
exten = i,n(error),Playback(${GV_DIRECTORY_SOUNDS}/Message6)
exten = i,n,Playback(${GV_DIRECTORY_SOUNDS}/Message15)
exten = i,n,Hangup()
[svi-ccp-uk]pt]
exten = s,1,NoOp(###### svi en camping car park06 ######)
same = n,Set(CHANNEL(language)=en_EN)
same = n,Set(Langage=${CHANNEL(language)})pt_PT)
same = n,NoOp(Set the directory containing your ivr sounds)
same = n,Set(GV_DIRECTORY_SOUNDS=/var/lib/xivo/sounds/svi/${Langage})
same = n,NoOp(the system answers the call and waits for 1 second before continuing)
same = n,Answer(1000)
;same = n,DumpChan()
same = n,NoOp(the system plays the first part of the audio file "welcome to ...")
same = n(first),Playback(${GV_DIRECTORY_SOUNDS}/Message1)
same = n,Playback(${GV_DIRECTORY_SOUNDS}/Message12)
same = n,Playback(${GV_DIRECTORY_SOUNDS}/Message4)
same = n,NoOp(variable "counter" is set to 0)
same = n(beginning),Set(counter=0)
same = n,NoOp(variable "counter" is incremented and the label "start" is defined)
same = n(start),Set(counter=$[${counter} + 1])
same = n,NoOp(counter variable is now = ${counter})
same = n,NoOp(waiting for 1 second before reading the message that indicate all choices)
same = n,Wait(1)
same = n,NoOp(play the message ivr-example-choices that contain all choices)
same = n,Background(${GV_DIRECTORY_SOUNDS}/Message3)
same = n,NoOp(waiting for DTMF during 5s)
same = n,Waitexten(5)
;##### CHOICE 1 #####
exten = 1,1,NoOp(pressed digit is 1, redirect to queue EN-PT-ASSCLT in default context)
extensame = 1,n,Goto(default,101,105,1)
;##### CHOICE 2 #####
exten = 2,1,NoOp(pressed digit is 2, redirect to queue EN-RENSEIGNT in default context)
exten = 2,n,Goto(default,151,1)
;##### CHOICE 3 #####
exten = 3,1,NoOp(pressed digit is 3, redirect to first label in this context)
exten = 3,n,Goto(s,start)
;##### TIMEOUT #####
exten = t,1,NoOp(no digit pressed for 5s, process it like an error)
exten = t,n,Goto(i,1)
;##### INVALID CHOICE #####
exten = i,1,NoOp(if counter variable is 3 or more, then goto label "error")
exten = i,n,GotoIf($[${counter}>=3]?error)
exten = i,n,NoOp(pressed digit is invalid and less than 3 errors: the guide ivr-exemple-invalid-choice is now played)
exten = i,n,Playback(${GV_DIRECTORY_SOUNDS}/Message6)
exten = i,n,Goto(s,start)
exten = i,n(error),Playback(${GV_DIRECTORY_SOUNDS}/Message6)
exten = i,n,Playback(${GV_DIRECTORY_SOUNDS}/Message15)
exten = i,n,Hangup()
C'est du code asterisk, il peu s'ééditer dans la fenêfenêtre d'administration Xivo ou bien directement dans vim
Un svi peut êêtre affectéaffecté àà un SDA, cela signifie que chaque numénuméro appeléappelé peut avoir son propre SVI
Le Svi s'affecte par une commande.
Ici, :
Goto(svi-ccp-prenat,s,1)
Le SVI pointe dans un premier temps vers le fichier de conf, et ensuite exéexécute la fonction svi-ccp-prenat

