PDA

Voir la version complète : [RESOLU] Renvoi immédiat.



mariop31
15/04/2014, 07h56
Bonjour.


Version os Debian 7.4
Version Asterisk 11.8.1
Pas de Freepbx
Une carte digium 2T0 et 4 analogiques


Cela fait deux semaines que je me suis mis à essayer de programmer plutôt que d'utiliser la version graphique. Effectivement c'est passionnant mais galère grave.
Je suis en train de buter sur le renvoi d'appel immédiat. J'ai consulté un grand nombre de page relatant le sujet mais je n'y arrive toujours pas.
Je suis en train de travailler avec un post écrit par Yansolo:
http://www.asterisk-france.org/archives_net/showpost.php?p=9708&postcount=3
Pas de renvoi immédiat, ça ne fonctionne pas.
J'aurais besoin d'aide pour comprendre un peu ce que je fait.
D'une part la valeur $(user) décrite dans le tuto à une valeur nulle chez moi. C'est quoi ce $(user) ??
Comment est passé la valeur de l'argument du numéro de poste sur lequel est effectué le renvoi???
Quelle est l'instruction qu'il faut écrire pour que quand on appelle le poste 1000 (renvoyé sur sur le 1003) fasse sonner le poste 1003???



Là je sèche.

mariop31
16/04/2014, 08h11
Vraiment personne pour me donner un coup de main, après plus de 50 consultations de mon post??

J'avais déjà posté à ce sujet en janvier 2007 et mon post est resté sans réponse. A l'époque cela m'avait conduit à laisser tomber Asterisk tout simplement.
Je me suis remis dessus récemment (Février 2014) avec une distro Asterisk Now, et là évidemment c'est un peu plus simple.
J'ai recommencé avec une distro Debian et j'ai installé Asterisk et Freepbx, là j'ai réussi aussi a faire ce que je voulais.

Certaine personnes de ce forum m'ont fortement invité à le faire "à la mano". Donc j'y suis, j'ai pour aide 3 livres:

1) Cahier de l'Admin de Nat Makarévitch
2) VOIP et TOIP de Sébastien DEON
3) La téléphonie Open Source de Jim Van MEGGELEN, Jared SMITH & Leif MADSEN

Au moment ou j'écris ce post, j'ai réussi grâce à ces livres à faire:
* appels internes
* appels externes
* appel sortant
* présentation de la sda
* implémentation de la sda
* transfert d'appels
* parcage et récupération (en interne et depuis un appel externe)
* messagerie Vocale
* salle de conférence

Bien sur je me suis aidé aussi du site http://www.voip-info.org/wiki/ et bien d'autres.
Comme je le dis dans le premier post, j'ai trouvé une amorce de script écrite par YANSOLO, dont voilà le contenu:

; #### FOREWARD Unconditional #########
; Pour activer un renvoi :
exten => 503,1,Answer()
exten => 503,n,Wait(0.5)
exten => 503,n,Set(DB(users/${USER}/FWD/Unc/Status)=1)
exten => 503,n,Playback(call-fwd-unconditional)
exten => 503,n,Playback(on)
exten => 503,n,Hangup()

; Pour enregister le numéro
exten => _503.,1,Answer()
exten => _503.,n,Wait(0.5)
exten => _503.,n,Set(DB(users/${USER}/FWD/Unc/Number)=${EXTEN:3})
exten => _503.,n,Set(DB(users/${USER}/FWD/Unc/Status)=1)
exten => _503.,n,Playback(call-fwd-unconditional)
exten => _503.,n,Playback(on)
exten => _503.,n,Hangup()

; Pour désavtiver le renvoi
exten => 504,1,Answer()
exten => 504,n,Wait(0.5)
exten => 504,n,Set(DB(users/${USER}/FWD/Unc/Status)=0)
exten => 504,n,Playback(call-fwd-unconditional)
exten => 504,n,Playback(off-duty)
exten => 504,n,Hangup()

;Unconditional Forwarding
exten => s,n,Set(FUStatus=${DB(users/${USER}/FWD/Unc/Status)})
exten => s,n,NoOp(Forward Unconditional Status: ${FUStatus})
exten => s,n,Set(FUNumber=${DB(users/${USER}/FWD/Unc/Number)})
exten => s,n,NoOp(Forward Unconditional Number: ${FUNumber})
exten => s,n,GotoIf($[${FUStatus} = 1]?FU)

J'ai mis ce script dans mon fichier extensions.conf, effectivement en faisant le code d'ordre "503" pour entrer le numéro de poste sur lequel j'effectue mon renvoi fonctionne (je veux dire que la bd est bien renseignée) mais la variable $(USER) n'est pas renseignée. C'est quoi cette variable d'où sort elle???
En faisant "504" le numéro est effacé de la bd asterisk.
Quand je teste la fonctionnalité à savoir, renvoi du poste 1000 sur le poste 1003, appel du poste 1001 vers le poste 1000 eh bien au lieu de faire sonner le poste 1003 je fais sonner le poste 1000. Donc fiasco.

Il me manque quelque chose et c'est cela que je voudrais bien comprendre, et je compte sur la gentillesse de quelqu'un de ce forum pour m'aider.

Je suis prêt à donner toutes les indications nécessaires manquantes pour obtenir une aide de votre part.

dimitrid
16/04/2014, 09h32
Salut,

Je ne serai pas t'aider mais j'ai commencé aussi en Fevrier et j'ai remarqué que si tu veux de l'aide sur asteriskNow il faut que tu ailles sur leur forum, pareil pour freebpx.

Ici c'est du Français.. Donc tu trouveras beaucoup d'aide sur XIVO car il est français.

mariop31
16/04/2014, 12h01
Merci à toi dimitrid d'avoir eu pitié de moi, c'est pas grave je viens de trouver une solution.

Voilà ma soluce:

[redirection]
exten => 503,1,Answer()
exten => 503,n,Wait(0.5)
exten => 503,n,Set(ETAT=${DB(users/${USER}/TRSF/Status)})
exten => 503,n,NoOp(${ETAT})
exten => 503,n,GotoIf($[${ETAT} = 0]?:actif)
exten => 503,n,Set(DB(users/${USER}/TRSF/Status)=1)
exten => 503,n,NoOp(${DB(users/${USER}/TRSF/Status)})
exten => 503,n,Playback(call-fwd-unconditional)
exten => 503,n,SayDigits(${DB(users/${USER}/TRSF/Number)})
exten => 503,n,Hangup()
exten => 503,n(actif),Set(DB(users/${USER}/TRSF/Status)=0)
exten => 503,n,Playback(off-duty)
exten => 503,n,Hangup()

exten => _503.,1,Answer()
exten => _503.,n,Wait(0.5)
exten => _503.,n,Set(DB(users/${USER}/TRSF/Status)=1)
exten => _503.,n,Set(DB(users/${USER}/TRSF/Number)=${EXTEN:3})
exten => _503.,n,NoOp(${DB(users/${USER}/TRSF/Status)})
exten => _503.,n,Playback(call-fwd-unconditional)
exten => _503.,n,SayDigits(${DB(users/${USER}/TRSF/Number)})
exten => _503.,n,Hangup()

[appel-interne]
exten => _100X,1,Macro(appel,${EXTEN})

[macro-appel]
exten => s,1,Set(ETRedirection=${DB(users/${ARG1}/TRSF/Status)})
exten => s,n,NoOp(User = ${ARG1})
exten => s,n,Set(Numredir=${DB(users/${ARG1}/TRSF/Number)})
exten => s,n,GoToIf($[${ETRedirection} = 1]?Dirige:NonDirige)

exten => s,n(NonDirige),SetAMAFlags(omit)
exten => s,n,Dial(SIP/${ARG1},20rtT)
;exten => s,n,Goto(${DIALSTATUS})

exten => s,n(BUSY),VoiceMail(${ARG1}@mevo,bs)
exten => s,n,Busy()
exten => s,n,Hangup()

exten => s,n(NOANSWER),NoOp()
exten => s,n(CANCEL),NoOp()
exten => s,n(CONGESTION),NoOp()
exten => s,n(CHANUNAVAIL),NoOp()
exten => s,n,VoiceMail(${ARG1}@mevo,us)
exten => s,n,Congestion()
exten => s,n,Hangup()

exten => s,n(Dirige),NoOp(Redirection)
exten => s,n,SetAccount(${ARG1})
exten => s,n,NoOp(${Numredir})
exten => s,n,DIAL(SIP/${Numredir},20rtT)


Maintenant il faut que mon renvoi immédiat fonctionne vers un poste externe.

Je compte rajouter les lignes suivantes en remplaçant la dernière ligne:


exten => s,n,GoToIf($[${Numredir} =numéro commençant par 0]?Interne:Externe)
exten => s,n(Interne),NoOp(Redirection)
exten => s,n,DIAL(SIP/${Numredir},20rtT)
exten => s,n(Externe),NoOp(Redirection)
exten => s,n,DIAL(DAHDI/g0/${Numredir},20rtT)

Sauf que je ne sais pas comment écrire mon test qui prendrait en compte un numéro commençant par 0.


Une idée ??????

mariop31
16/04/2014, 14h10
C'est bon j'ai trouvé.



exten => s,n,GoToIf($["${Numredir :0:1}" = "0"]?Externe:Interne)
exten => s,n(Interne),NoOp(Redirection)
exten => s,n,DIAL(SIP/${Numredir},20rtT)
exten => s,n(Externe),NoOp(Redirection)
exten => s,n,DIAL(DAHDI/g0/${Numredir},20rtT)


Voilà.

greg2901
16/04/2014, 16h21
Bonjour,

Tout ce code c'est juste pour un renvoi immédiat ?
C'est un peu lourd non ?
Perso j'utilise les fonctions de renvoi du poste et ça marche très bien, en plus en fonction du modèle de poste il y a une icône qui indique a l'utilisateur qu'un renvoi est actif, on peux configuré la tempo avant renvois sur les renvoi sur non réponse au cas par cas...

Clt
Greg

mariop31
16/04/2014, 17h19
Je n'ai pas de fonction de renvoi sur mes postes.

Un 6739i Aastra
Un 6757i Aastra
Deux 6755i Aastra
Un poste analogique Alcatel temporis 500 sur un boîtier patton.
Un poste analogique connecté sur un port FXS

Voilà.

greg2901
23/04/2014, 16h56
Sur les postes Astra il faut programmer une touche pour le renvoi, mais effectivement si tu as des lignes analogiques ta solution est meilleur...

Clt
Greg