Alors voila, imagine que tu es capable de modifier les valeurs de astdb, peu importe par quel moyen, (manager en telnet, script ..)
Le but est en fonction de données dans l'astdb de forwarder l'appelant.
Nous devons penser à 3 choses:
1: Permettre au utilisateurs de modifier leur statut
2: Répertorier l'ensemble de varialbles pour coder chaque etat
3: Créer un script utilise pour l'ensemble d'utilisateurs qui route l'appel en fonctionne de leur état.
Nous allons partir sur l'exemple ultra simple. On imagine que chaque utilisateur à le droit d'activer ou désactiver le renvois vers sa messagerie immédiatement.
Pour ça il nous fait:
1: Un mini script qui modifier cette variable pour les utilisateurs
2: Une variable, avec l'état 0 (messagerie immédiate désactive) et 1 messagerie immédiate activé. Nous allons utiliser une clé simple, une pour chaque utilisateur.
Le format de clé est le suivant:
Family/key = VALEUR
Nous avons utilisateur Toto et Tata, et pour eux les clé seront
Toto/Messagerie = 0 Ou 1
Tata/Messagerie = 0 Ou 1
Je te le conseille de les nommer tous de cette maniere, c'est plus faciler a gérer quand tu as pas mal de clefs, on voit directement la liste plus humainement. (choix perso a toi de voir) Sache que on peur les regrouper par service également du type
Messagerie/toto =0/1
Messagerie/tata =0/1
Nous allons prendre le premier. Les mini scripts que je vais te monter c'est pour asterisk 1.4, asterisk 1.6 à une manière différente de travailler avec les clefs, je te laisse adapter si tu es en 1.6.
Script pour entrer la variable par utilisateur, nous allons dire a tata et titi les truc suivant:
Votre préfixe pour activer la messagerie est 501
Votre préfixe pour désactiver la messagerie est 500
exten => _50[01],1,Set(DB(${CALLERID(name)}/messagerie)=${EXTEN:2})
exten => _50[01],2,NoOp(La variable de messagerie est ${EXTEN:2})
Il faut bien nommer toto et tata dans sip.conf avec le nom correct pour récupérer la variable. callerid=toto <7000> callerid=tata <7001>
On imagine que la messagerie de toto est désactivé et de tata est activé, les variables sont:
toto/messagerie=0
tata/messagerie=1
Dont avant appeler toto ou tata il nous faut vérifier cette variable.
extensions.conf
[bureau]
exten => 7000,1,GotoIf($[${DB(toto/messagerie)}=1]?2:3)
exten => 7000,2,Voicemailman()
exten => 7000,3,Dial(Sip/toto)
exten => 7001,1,GotoIf($[${DB(tata/messagerie)}=1]?2:3)
exten => 7001,2,Voicemailman()
exten => 7001,3,Dial(Sip/tata)
Note que nous avons vérifié pour chaque utilisateur ses variables, c'est loin d'être parfait si tu as 36 options, le but est de créer un macro qui récupère le nom d'utilisateur de la personne qui est appelé est vérifier ces variables, et router l'appel en fonction de ses choix. Mais ça je te laisse de découvrir, c'est relativement simple.
Autre chose, ce n'est pas un luxe de créer un menu interactif pour l'utilisateur vocal, avec les confirmation des ses choix.
Citation:
- Si l'usager est présent son statut est : Answer (Disponible)
- Si l'usager est occupé son statut est : Busy (Occupé au téléphone ou réunion, du coup transfert vers boite vocale par exemple ou téléphone portable).
- Si l'usager est absent de son poste son statut est : NoAnwser (indisponible, donc transfert vers son portable par exemple).
Pour ton but il te faut pas plus de 3 variables.
Courage.
P.S Pour les plus amples informations je te conseille
http://astbook.asteriskdocs.org/en/2...-6-SECT-6.html