PDA

Voir la version complète : Dial() - Question



sunny
23/09/2010, 15h22
Bonjour à tous

Je viens de m'apercevoir que mon dialplan avait un problème.
En effet, lors d'un rejet ou d'un interlocuteur occupé, DIAL renvoi à la priorité n+102 ou n+202.

Sauf que là rien. Il ne passe jamais aux extensions n+102. Alors j'ai un peu potassé Google, mais pas moyen d'avoir des infos sur ça.

Je n'ai pourtant rien essayé d'extra-ordinaire, un simple:


exten => 111,1,Dial(SIP/111,4,t)
exten => 111,2,Playback(hello-world)
exten => 111,102,Playback(tt-allbusy)
exten => 111,202,Playback(tt-allbusy)

En enlevant la seconde ligne, j'ai simplement la tonalité OCCUPE et hop raccroché.

Donc voilà, j'ai surement loupé un truc dans la bible d'Asterisk, si vous pouviez m'éclairer, se serait super :)

sunny

cedricscha
23/09/2010, 15h56
Quel est ta version d'asterisk ?

sunny
23/09/2010, 15h58
Oui pardon, j'ai oublié les précisions d'usages:

Alors, je tourne sous CentOS5.5, dans une Machine Virtuelle, avec Asterisk 1.6.2.13. J'ai installé DAHDI et Libpri aussi (les dernières versions).

Merci pour la réponse rapide ceci dit, ça fait plaisir^^

Rico
23/09/2010, 16h08
Je ne me sers pas du jump, mais qques idées quand même :
- rajouter 'j' dans les options du dial
- c'est pas n+101 plutot ?

sunny
23/09/2010, 16h14
Merci du conseil. Mais malheureusement, le résultat est similaire.

ceci étant, j'ai toujours une solution sous le bras (cf page 156 de notre bible Asterisk The Future of Telephony), mais j'aurai bien aimé que cela fonctionne ainsi, se serait plus jolie :)

Bon, se n'ai pas grave en soit, mais si vous avez une idée de pourquoi cela ne fonctionne pas, je sera curieux de la connaitre. Je n'aime pas trop contourner les problèmes, je préfère les résoudre et apprendre.

sunny

cedricscha
23/09/2010, 16h37
Essaie de mettre ceci dans ta section general


[general]
priorityjumping=yes

et effectivement, c'est n+101 (soit si tu est à la priorité 1, tu jump vers la priorité 102)

Et tant que j'y suis (je n'ai pas TFOT sous les yeux, je ne sais pas si c'est ce que tu parles), pourquoi n'utilise tu pas la variable DIALSTATUS pour faire tes renvois ? c'est plus propre non ?

Edit : Bon ben c'est bien de cela que tu parles..... je serais toi, je partirai vers cette solution, car les jumps dans le dialplan c'est vite ingérable...... tu verras utiliser la priorité n avec des flags (n(BUSY) par exemple) est beaucoup plus facile à mettre en place, a maintenir et te permets beaucoups plus de chose également.

Numéroter tes priorités à la suite deviens vite un boulet dans des grands fichier extensions.conf..... imagine quand tu as une quarantaine de priorités (Et encore je suis gentils), et que tu te rends compte que tu dois rajouter QQCH à la priorité 2...... tout renuméroter Pfffffff

les priorités, 1,2,3,4,.... c'est bien pour découvrir, savoir comment sa marche mais cela reste pour du hello-world..... passe le plus rapidement possible avec n

sunny
23/09/2010, 16h53
Oui excusez-moi, j'ai oublié de répondre pour le n+101. Evidemment, c'est se que je voulais dire (mon exemple est en +101 en plus). Une petite maladresse, je m'en excuse.

En se qui concerne le priorityjumping, faut-il carrément redémarrer le serveur? Si non (se qui me semble probable), ça ne fonctionne pas beaucoup mieux.

Pour le DIALSTATUS, je ne l'utilisai pas parce que...je ne le connaissait pas. Puis j'ai lu cette fameuse page du livre anglais (j'ai la version français sur Asterisk 1.2 en faite). Je viens de l'implanté avec cette méthode, c'est bien plus propre et ça fonctionne (mise à part un détail d'une macro, mais j'ouvrirai un autre poste plus tard pour ce problème, si j'ai vraiment besoin).

Pour la petite histoire, c'est après avoir lu le poste sur la gestion des priorités de cedricscha que j'ai voulu tester la chose (je vais pas rater une occasion de faire des choses propres).

En tout cas, je m'interroge toujours sur cette histoire de jump... (je suis curieux :) ).

Ceci dit, merci à vous deux pour ces réponses rapides :)


EDIT:
effectivement, j'utilise déjà les n, mais c'était pour exposer simplement le problème et montrer que même avec un exemple simple (sans macro, sans rien, juste un numéro) n'était pas fonctionnel. Pour ma part, je ne reviendrai pas sur les chiffres, je dois déjà en maintenir un comme ça à la suite d'une autre personne, c'est horrible à maintenir. Je redévelopper tout pour que ce soit plus clair et plus simple (et pour ajouter des trucs aussi xD).

cedricscha
23/09/2010, 17h09
Redemarrer le serveur, non, mais un reload du dialplan oui.....

peut tu faire un extrait de la CLI pendant l'appel, en verbose maximum, afin que l'on voie ce qu'il se passe ?

sunny
23/09/2010, 17h33
Pour information, la version avec DIALSTATUS fonctionne très bien.

Pour notre sujet, j'ai ça dans la CLI (après reload évidemment, j'ai parlé de redémarrage machine à cause du fait que le reload ne faisait rien justement):



-- Executing [123@interne:1] Dial("SIP/111-00000000", "SIP/xlite,4,r") in new stack
== Using SIP RTP CoS mark 5
-- Called xlite
-- SIP/xlite-00000001 is ringing
-- SIP/xlite-00000001 answered SIP/111-00000000
-- Native bridging SIP/111-00000000 and SIP/xlite-00000001
== Using SIP RTP CoS mark 5
-- Executing [111@interne:1] Dial("SIP/114-00000002", "SIP/111,4,j") in new stack
== Using SIP RTP CoS mark 5
-- Called 111
-- Got SIP response 486 "Busy" back from 192.168.10.161
-- SIP/111-00000003 is busy
== Everyone is busy/congested at this time (1:1/0/0)
-- Executing [111@interne:2] Playback("SIP/114-00000002", "hello-world") in new stack
-- <SIP/114-00000002> Playing 'hello-world.alaw' (language 'fr')
-- Auto fallthrough, channel 'SIP/114-00000002' status is 'BUSY'
== Spawn extension (interne, 123, 1) exited non-zero on 'SIP/111-00000000'

Voici le dialplan avec lequel j'ai testé:

[general]
static=yes
writeprotect=no
priorityjumping=yes

[interne]
exten => 123,1,Dial(SIP/xlite,4,r)
exten => 116,1,Dial(SIP/114&SIP/111,4,r)
exten => 111,1,Dial(SIP/111,4,j)
exten => 111,2,Playback(hello-world)
exten => 111,102,Playback(tt-allbusy)
exten => 111,202,Playback(tt-allbusy)

et pour le sip (en résumer):


[general]
context=default
language=fr

[basic-options](!) ; a template
dtmfmode=rfc2833
context=from-office
type=friend

[public-phone](!,basic-options) ; another template inheriting basic-options
nat=no
directmedia=yes
host=dynamic
context=interne

[alaw-phone](!) ; and another one for alaw-only
disallow=all
allow=alaw
allow=gsm

[xlite](public-phone,alaw-phone)
secret = 1234
callerid= "XXXX" <123>

[100](public-phone,alaw-phone)
secret = 1234
callerid= "XXXX" <100>

[101](public-phone,alaw-phone)
secret = 1234
callerid= "XXXX" <101>

cedricscha
23/09/2010, 17h48
Voici le dialplan avec lequel j'ai testé:

[general]
static=yes
writeprotect=no

[interne]
exten => 123,1,Dial(SIP/xlite,4,r)
exten => 116,1,Dial(SIP/114&SIP/111,4,r)
exten => 111,1,Dial(SIP/111,4,j)
exten => 111,2,Playback(hello-world)
exten => 111,102,Playback(tt-allbusy)
exten => 111,202,Playback(tt-allbusy)



Euh..... je vois pas le :
priorityjumping=yes

sunny
23/09/2010, 19h08
oui dsl, erreur de copie colle^^
mais oui il y était^^

bon par contre là, j'ai plus accès à ma plate forme de test, je verrais demain.

PS: je vais directement éditer mon ancien post.