Passer au contenu principal

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 :  

https://telephonie-admin.campingcarpark.com/service/ipbx/index.php/pbx_services/musiconhold/?act=list

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.  

Plus d'infos

  

Comment fonctionne le SVI ?  

https://telephonie-admin.campingcarpark.com/service/ipbx/index.php/system_management/configfiles/?act=list#

-> 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