PDA

Voir la version complète : Comment faire réagir asterisk en fonction de la rèponse à la question.



xunil2003
07/01/2014, 15h49
Bonjour,

Tout est dans le titre.

Exemple avec "extensions.conf :

exten => 2301,1,Answer()
exten => 2301,n,Playtones(ring)
exten => 2301,n,wait(10)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bonjour)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bienvenue)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/Question_que_voulez_vous_faire)
Mais comment faire pour qu'asterisk sache lorsque l'utilisateur tape
1 fait ça !
2 faits cela !
3 ou ceci !
4 ou encore ça !
etc...

J'ai pensé faire un switch, des cases mais je sais pas comment faire avec asterisk ?
Pouvez-vous m'aiguiller ?

Merci.

jean
07/01/2014, 19h22
tu as soit la commande background qui te branchera sur l'extension tapée par l'utilisateur, soit read puis gotoif

j.

xunil2003
07/01/2014, 21h28
Bonjour,

Je n'ai pas compris
Pouvez vous me donner un exemple

merci.

jean
07/01/2014, 21h35
http://www.voip-info.org/wiki/view/Asterisk+cmd+BackGround

http://www.voip-info.org/wiki/view/Asterisk+cmd+Read

y'a des exemples tout fait

xunil2003
08/01/2014, 04h46
Bonjour,

C'est bien ce que j'ai vu en effectuant une recherche sur le net.
Utilisons l'exemple avec blackground
http://www.voip-info.org/wiki/view/A...cmd+BackGround

Désolé je ne comprend pas ou dois je mettre ceci :

exten => s,1,Answer
exten => s,2,Background(thanks) ; "Thanks for calling. Press 1 for sales, 2 for support, ..."
exten => 1,1,Goto(submenu,s,1)
exten => 2,1,Hangup
Faut il le mettre dans un context particulier dans le fichier /etc/asterisk/extensions.con ?
Ou faut il y placer dessous ceci :

exten => 2301,1,Answer()
exten => 2301,n,Playtones(ring)
exten => 2301,n,wait(10)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bonjour)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bienvenue)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/Question_que_voulez_vous_faire)
exten => 2301,n,Read(N0,,1)
exten => 2301,n,SayNumber(${N0})
.......

Pouvez-vous m'en dire plus ?

Merci.

YBDOMO
08/01/2014, 10h24
Bonjour,

Je ferai qqchose comme ceci.

exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bonjour)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bienvenue)
exten => 2301,n,Background(/lib/asterisk/sounds/custom/Question_que_voulez_vous_faire)
;;;;;;;;;;;;;;;exten => 2301,n,Playback(/lib/asterisk/sounds/custom/Question_que_voulez_vous_faire)
exten => 2301,n,Read(N0,,1,,,2) ;;;;;;;;;;Read(N0,,1)
exten => 2301,n,SayNumber(${N0})

A+

jean
08/01/2014, 20h18
exten => s,1,Answer
exten => s,2,Background(thanks) ; "Thanks for calling. Press 1 for sales, 2 for support, ..."
exten => 1,1,Goto(submenu,s,1)
exten => 2,1,Hangup


quand tu fais ca, bckground joue le message, et asterisk continue sur l'extension que l'utilisateur a tapée. par exemple dans ce cas, il se branche sur un sous menu (non fourni dans l'exemple) si on presse 1, et raccroche si on presse 2
=> ca correspond à ta demande initiale ( 1=> fais ci, etc...)


exten => 2301,1,Answer()
exten => 2301,n,Playtones(ring)
exten => 2301,n,wait(10)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bonjour)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bienvenue)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/Question_que_voulez_vous_faire)
exten => 2301,n,Read(N0,,1)
exten => 2301,n,SayNumber(${N0})
.......


la, c'est plus artisinal, apres le SayNumber, tu peux faire un
exten => 2301,n,GotoIf($["${N0}" == "1"]?menu1)

et asterisk ira trouver la prio menu1 dans l'extension courante - ou tu fais ce que tu veux

xunil2003
08/01/2014, 20h57
bonjour,

He ben voilà tout fonctionne, Merci pour votre aide.

j'ai fait ceci :
Dans mon fichier "/etc/asterisk/extensions.conf" à mon context [maison], j'ai ajouté :

; Domotique Z-wave : Que voulez vous faire ?
; Fichier : /var/lib/asterisk/agi-bin/domotique_z-wave_choix1.agi
exten => 2301,1,Answer()
exten => 2301,n,Playtones(ring)
exten => 2301,n,wait(10)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/bonjour)
exten => 2301,n,Playback(/lib/asterisk/sounds/custom/domotique_z-wave_bienvenue)
exten => 2301,n,Background(/lib/asterisk/sounds/custom/domotique_z-wave_Que_voulez_vous_faire)
exten => 2301,n,Background(/lib/asterisk/sounds/custom/c-est-a-vous)
exten => 2301,n,Read(N0,,1,,,2)
exten => 2301,n,SayNumber(${N0})
exten => 2301,n,Goto(choix${N0},1, 2)

Puis j'ai créer un context choix1 pour y mettre ceci :

[choix1]
exten => 1,1,Answer()
exten => 1,n,Background(/lib/asterisk/sounds/custom/domotique-z-wave-Allumer-eteindre-lumiere)
exten => 1,n,Background(/lib/asterisk/sounds/custom/c-est-a-vous)
exten => 1,n,Read(CHOIX1_1,,1)
exten => 1,n,SayNumber(${CHOIX1_1})
exten => 1,n,Background(/lib/asterisk/sounds/custom/domotique_z-wave_commutateur)
exten => 1,n,Read(CHOIX1_2,,1)
exten => 1,n,SayNumber(${CHOIX1_2})
exten => 1,n,AGI(domotique-zwave-choix1.agi,${CHOIX1_1},${CHOIX1_2})
exten => 1,n,Playback(/lib/asterisk/sounds/custom/domotique_appel_domotique_z-wave_aurevoir)
exten => 1,n,HangUp() ; racroche

Ensuite j'ai créer un nouveau context choix2 pour y mettre ceci :

; extention
; ---> /var/lib/asterisk/agi-bin/domotique-zwave-choix2.agi
[choix2]
exten => 1,1,Answer()
exten => 1,n,Background(/lib/asterisk/sounds/custom/domotique-z-wave-Allumer-eteindre-lumiere)
exten => 1,n,Background(/lib/asterisk/sounds/custom/c-est-a-vous)
exten => 1,n,Read(CHOIX1_1,,1)
exten => 1,n,SayNumber(${CHOIX1_1})
exten => 1,n,Background(/lib/asterisk/sounds/custom/domotique-z-wave-variateur-lumiere)
exten => 1,n,Background(/lib/asterisk/sounds/custom/c-est-a-vous)
exten => 1,n,Read(CHOIX1_2,,3)
exten => 1,n,SayNumber(${CHOIX1_2})
exten => 1,n,AGI(domotique-zwave-choix2.agi,${CHOIX1_1},${CHOIX1_2})
exten => 1,n,Playback(/lib/asterisk/sounds/custom/domotique_appel_domotique_z-wave_aurevoir)
exten => 1,n,HangUp() ; racroche

Et dans le dossier /var/lib/asterisk/agi-bin/ j'ai créer deux fichiers "domotique-zwave-choix1.agi" et "domotique-zwave-choix2.agi" avec avec le contenu suivant :

Fichier /var/lib/asterisk/agi-bin/domotique-zwave-choix1.agi

#!/bin/bash

# Choix1 domotique Z-wave

CHOIX1=$1
CHOIX2=$2

case $CHOIX1 in
01 | 1) ID=99 ;; # Lampe variable bureau serveur
02 | 2) ID=89 ;; # Lumière du couloir du r.d.c
03 | 3) ID=11 ;; # Lampadaire du salon
*) ;;
esac

case $CHOIX2 in
00 | 0) ACTIONNEUR=0 ;; # Eteindre la lumière
01 | 1) ACTIONNEUR=1 ;; # Allumer la lumière
*) ;;
esac

#------- CONFIGURATION -------------
IP_VERA="192.168.0.5"
PORT_VERA="3480"


curl 'http://'$IP_VERA':'$PORT_VERA'/data_request?id=action&output_format=xml&DeviceNum='$ID'&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue='$ACTIONNEUR' '

exit 0

Fichier /var/lib/asterisk/agi-bin/domotique-zwave-choix1.agi

#!/bin/bash

# Choix2 domotique Z-wave

CHOIX1=$1
CHOIX2=$2
#VARIATION=$2

case $CHOIX1 in
01 | 1) ID=99 ;; # Lampe variable bureau serveur
02 | 2) ID=89 ;; # Lumière du couloir du r.d.c
03 | 3) ID=11 ;; # Lampadaire du salon
*) ;;
esac

case $CHOIX2 in
000 | 00 | 0) VARIATION=000 ;;
001 | 01 | 1) VARIATION=001 ;;
002 | 02 | 2) VARIATION=002 ;;
003 | 03 | 3) VARIATION=003 ;;
004 | 04 | 4) VARIATION=004 ;;
005 | 05 | 5) VARIATION=005 ;;
006 | 06 | 6) VARIATION=006 ;;
007 | 07 | 7) VARIATION=007 ;;
008 | 08 | 8) VARIATION=008 ;;
009 | 09 | 9) VARIATION=009 ;;
010 | 10 ) VARIATION=010 ;;
011 | 11 ) VARIATION=011 ;;
012 | 12 ) VARIATION=012 ;;
013 | 13 ) VARIATION=013 ;;
014 | 14 ) VARIATION=014 ;;
015 | 15 ) VARIATION=015 ;;
016 | 16 ) VARIATION=016 ;;
017 | 17 ) VARIATION=017 ;;
018 | 18 ) VARIATION=018 ;;
019 | 19 ) VARIATION=019 ;;
020 | 20 ) VARIATION=020 ;;
021 | 21 ) VARIATION=021 ;;
022 | 22 ) VARIATION=022 ;;
023 | 23 ) VARIATION=023 ;;
024 | 24 ) VARIATION=024 ;;
025 | 25 ) VARIATION=025 ;;
026 | 26 ) VARIATION=026 ;;
027 | 27 ) VARIATION=027 ;;
028 | 28 ) VARIATION=028 ;;
029 | 29 ) VARIATION=029 ;;
030 | 30 ) VARIATION=030 ;;
031 | 31 ) VARIATION=031 ;;
032 | 32 ) VARIATION=032 ;;
033 | 33 ) VARIATION=033 ;;
034 | 34 ) VARIATION=034 ;;
035 | 35 ) VARIATION=035 ;;
036 | 36 ) VARIATION=036 ;;
037 | 37 ) VARIATION=037 ;;
038 | 38 ) VARIATION=038 ;;
039 | 39 ) VARIATION=039 ;;
040 | 40 ) VARIATION=040 ;;
041 | 41 ) VARIATION=041 ;;
042 | 42 ) VARIATION=042 ;;
043 | 43 ) VARIATION=043 ;;
044 | 44 ) VARIATION=044 ;;
045 | 45 ) VARIATION=045 ;;
046 | 46 ) VARIATION=046 ;;
047 | 47 ) VARIATION=047 ;;
048 | 48 ) VARIATION=048 ;;
049 | 49 ) VARIATION=049 ;;
050 | 50 ) VARIATION=050 ;;
051 | 51 ) VARIATION=051 ;;
052 | 52 ) VARIATION=052 ;;
053 | 53 ) VARIATION=053 ;;
054 | 54 ) VARIATION=054 ;;
055 | 55 ) VARIATION=055 ;;
056 | 56 ) VARIATION=056 ;;
057 | 57 ) VARIATION=057 ;;
058 | 58 ) VARIATION=058 ;;
059 | 59 ) VARIATION=059 ;;
060 | 60 ) VARIATION=060 ;;
061 | 61 ) VARIATION=061 ;;
062 | 62 ) VARIATION=062 ;;
063 | 63 ) VARIATION=063 ;;
064 | 64 ) VARIATION=064 ;;
065 | 65 ) VARIATION=065 ;;
066 | 66 ) VARIATION=066 ;;
067 | 67 ) VARIATION=067 ;;
068 | 68 ) VARIATION=068 ;;
069 | 69 ) VARIATION=069 ;;
070 | 70 ) VARIATION=070 ;;
071 | 71 ) VARIATION=071 ;;
072 | 72 ) VARIATION=072 ;;
073 | 73 ) VARIATION=073 ;;
074 | 74 ) VARIATION=074 ;;
075 | 75 ) VARIATION=075 ;;
076 | 76 ) VARIATION=076 ;;
077 | 77 ) VARIATION=077 ;;
078 | 78 ) VARIATION=078 ;;
079 | 79 ) VARIATION=079 ;;
080 | 80 ) VARIATION=080 ;;
081 | 81 ) VARIATION=081 ;;
082 | 82 ) VARIATION=082 ;;
083 | 83 ) VARIATION=083 ;;
084 | 84 ) VARIATION=084 ;;
085 | 85 ) VARIATION=085 ;;
086 | 86 ) VARIATION=086 ;
087 | 87 ) VARIATION=087 ;;
088 | 88 ) VARIATION=088 ;;
089 | 89 ) VARIATION=089 ;;
090 | 90 ) VARIATION=090 ;;
091 | 91 ) VARIATION=091 ;;
092 | 92 ) VARIATION=092 ;;
093 | 93 ) VARIATION=093 ;;
094 | 94 ) VARIATION=094 ;;
095 | 95 ) VARIATION=095 ;;
096 | 96 ) VARIATION=096 ;;
097 | 97 ) VARIATION=097 ;;
098 | 98 ) VARIATION=098 ;;
099 | 99 ) VARIATION=099 ;;
100) VARIATION=100 ;;
*) ;;
esac

#------- CONFIGURATION -------------
IP_VERA="192.168.0.5"
PORT_VERA="3480"

curl 'http://'$IP_VERA':'$PORT_VERA'/data_request?id=action&output_format=xml&DeviceNum='$ID'&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget='$VARIATION' '

exit 0

Puis j'ai redémarrer Asterisk

sudo service asterisk restart

Puis j'ai fait un essai depuis mon smartphone, ça marche.
Le seul défaut est qu'il faut être rapide pour composer les chiffres au question de Asterisk, sinon ça raccroche automatiquement, je n'ai pas trouvé la solution pour rallonger le temps d'attente de la frappe.
Voilà je vais continuer la suite.

Encore une fois merci pour votre aide.

jean
08/01/2014, 21h28
c'est le dernier paramètre (je pense) du read le ,,3 en l'augmentant, ca doit être bon, sinon regarder le manuel de read ;-)