PDA

Voir la version complète : Pas de détection raccroché TDM400P avec IVR



myvoip
06/08/2013, 23h14
Bonsoir,

Je suis confronté à un problème du même type sur TDM400P raccordée sur sortie FreeBox RJ11. A noter :
- que sur ce même PC, l'ancienne config tournait (*)
- qu'Asterisk 1.8.22.0 ne se lance pas ici (erreur de segmentation), impossible de tester (**).

Je souhaite donc essayer le workaround de fastm3 mais je ne sais comment écrire la ligne de commande Dial qui remplace Answer. Pouvez-vous me guidez svp ?

nb : si vous avez des infos concernant la correction de ce bug, j'essaierais probablement de migrer vers des versions plus récentes.

D'avance merci.


(*) Asterisk 1.4.23, libpri-1.4.7 et Zaptel 1.4.12.1
(**) Il est probable qu'il faille installer un dahdi correspondant plus récent.

jean
06/08/2013, 23h40
si tu fais une maj, ne t'arrête pas à mi-chemin, pars sur une 11, et un dahdi récent... tu es probablement en train de faire des noeuds au cerveau pour rien ;-)

fastm3
06/08/2013, 23h41
J'ai deplace ton post pour creer un nouveau sujet plutot que de l'inserer dans le pb de detection de decrocher. Ca sera plus lisible.

Un coredump d'asterisk n'a rien a voir avec le pb de detection de decroché.
Asterisk doit se lancer deja correctement avant d'aller plus loin.

Zaptel est completement obsolete, il faut passer en effet a dahdi.
Ton core dump est probablement un pb de compilation de ta nouvelle version.
Il faut tout recompiler.

Quelque extraits de mes scripts un peu trop custo/perso pour etre publiés tel quel, je commence toujours par libpri

cd /usr/src/
cd libpri-${VER_LIBPRI}
make && make installapres dahdi

cd /usr/src/dahdi-linux-complete-${VER_DAHDICOMPLETE}
make clean && make && make install && make configapres asterisk ( ici pour une 1.8 )


cd /usr/src/asterisk-${VER_ASTERISK}
#make clean;
./contrib/scripts/install_prereq install
./contrib/scripts/install_prereq install-unpackaged
./contrib/scripts/get_mp3_source.sh
./configure
make menuconfig


make
make sounds
if [ ! -f /etc/asterisk/asterisk.conf ]; then
make samples
fi
make install
make configfastm3.

fastm3
06/08/2013, 23h49
si tu fais une maj, ne t'arrête pas à mi-chemin, pars sur une 11, et un dahdi récent... tu es probablement en train de faire des noeuds au cerveau pour rien ;-)
+1 pour la 11 mais si tu prends les toutes dernieres versions de asterisk et dadhi , si tu as un tres vieux noyau ( probable vu que tu tournais encore avec zaptel ), il est probable que tu dois upgrader aussi le noyau...
Fastm3.

myvoip
07/08/2013, 00h09
@jean,
J'ai tenté un upgrade rapide en 1.8 (juste besoin de changer le nom de l'archive asterisk dans mon script d'installation) pour voir si le problème de reconnaissance du raccroché était lié à ma (vieille) version d'Asterisk.

@fastm3,
Je pensais faire gagner du temps à tous en me rattachant au post du même type. Mais ce n'est pas plus mal d'en recréer un => merci.
En revanche, le titre n'est pas le bon, je me suis visiblement mal exprimé : mon problème est sur une config libpri-1.4.10.2, dahdi-2.6.1 et Asterisk-1.4.41. J'ai voulu vous dire que sur ce même PC, la config précédente (Zaptel & Co) marchait correctement, testé sur 2 TDM400P différentes.

Actuellement, je tourne sous une Debian Wheezy, donc noyau récent 3.x

Sur ces bases, est-il envisageable de trouver le problème de détection de raccrochage sur Asterisk 1.4.41, ou me conseillez-vous de migrer vers la 11 ? Ma config est minimaliste : 2 x FXS et 2 x FXO, je n'utilise pas de fonctionnalité complexe et j'aimerais ne pas reprendre tous mes scripts d'install avec Aurélie voice :confused:

Rappel du problème lors d'appels entrants Freebox déclenchant le SVI :
- si je prends l'appel via un des postes analogiques tout se passe bien.
- si je ne prends pas l'appel via un des postes analogiques, le SVI ne détecte pas que l'appelant raccroche, et tourne à l'infini => bug reproductible.

PS : merci pour les scripts, je vais comparer avec les miens.

jean
07/08/2013, 04h29
ben, le pbm de détection de raccrochage, c'est soit un mauvais paramétrage, soit une version trop vieille de zaptel.... je pencherais pour le paramétrage, mais je connais pas cette carte (mais d'autres sur ce forum devraient t'aider).

fastm3
07/08/2013, 17h00
C'est pas clair, tu es en 1.4 ou 1.8 ? Moi je comprends que tu etais en 1.4 et que tu es passe en 1.8. Tu indiques que 1.8 core dump donc il faut resoudre d'abord ce pb avant de voir pour la detection du raccroché meme si c'est le pb initial qui t'as fait passe en 1.8.
Ca me semble d'ailleurs curieux que tu puisses compiler zaptel avec les dernieres versions de 1.8 meme si je n'ai pas testé.

Oui, tu peux passer a asterisk 11 et dahdi mais tu vas probablement rencontrer d'autres pb si ton passage a la 1.8 fait deja core dumper asterisk.

Le workaround ( dial avec moh qui contient un message ) que je propose qui est vraiment dans un scenario particulier est à mettre en premier dans ton contexte associé à tes fxo. Je te conseille de creer un contexte specifique fromtdm ou tu ne mettras pas de answer(). Le answer() est souvent necessaire pour ma part pour les trunk sip qui auront donc un autre contexte.

Pour les voix d'Aurelie, elles ne sont plus du tout adaptées pour la 11, il faut prendre les voix francaises officielles. Xivo fournit aussi une autre voix francaise je crois.
Fastm3.

myvoip
07/08/2013, 20h00
OK je reprends :pt1cable:
- Hier j'ai essayé "à la vavite" une 1.8 hier au cas où. Oublions, je souhaite rester en 1.4.
- Je n'ai plus Zaptel depuis des lustres, je suis actuellement sous :
libpri-1.4.10.2 + dahdi-2.6.1 + Asterisk-1.4.41
- Malgré toutes mes vérifications (config fr, gain rx, ...), lorsque que je reçois un appel entrant de l'extérieur, et que je ne décroche pas, Asterisk ne détecte pas le raccroché de l'appelant, et le SVI boucle à l'infini. Lorsque je décroche et qu'une communication est établie, Asterisk détecte bien la fin de communication.

Je n'ai pas bien compris comment on remplace le answer. Est-il possible d'avoir un exemple de syntaxe ?
Si dessous un extrait de mon extension.conf à titre indicatif.


exten => s,1,Wait(2) ; 2s pour dentifier le callerid
exten => s,n,Answer()
exten => s,n,NoOp(${CALLERID(num)}) ; Extraction callerid
include => ivr_fr
include => outgoing

;================================================= =====
;Routage personalise (detection du callerid)
;================================================= =====
exten => s,n,GotoIf($["${CALLERID(num):0:3}" = "001"]?30) ; USA (detection 3 first digits)
exten => s,n,GotoIf($["${CALLERID(num):0:4}" = "0034"]?60) ; ESPAGNE (detection 4 first digits)
exten => s,n,GotoIf($["${CALLERID(num)}" = ""]?150) ; numeros masques
exten => s,n,Goto(s,150) ; Tous les autres cas non traites

exten => s,28,Set(CALLERID(num)=${CALLERID(num):2}) ; Mise en forme ne IP => suppression de "00".
exten => s,29,Set(CALLERID(num)=001${CALLERID(num)}) ; Mise en forme ne IP => insertion de "001".

exten => s,30,Playback(serveur_asterisk_bonjour)
exten => s,31,Playback(hello_you)
exten => s,32,Goto(ivr_fr,s,1)

exten => s,60,Goto(ivr_esp,s,1)

exten => s,150,Goto(ivr_fr,s,1)

;================================================= =====
[ivr_fr]
;================================================= =====
exten => s,1,Read(NUM,milly_accueil123,1,skip,2,2) ; Read (variable, soundfile, maxdigits, option, attempts, timeout)
exten => s,n,Goto(${NUM},1)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,n,Hangup()

exten => 1,1,Playback(vm-extension&digits/1)
exten => 1,n,Goto(199,1)
exten => 2,1,Playback(vm-extension&digits/2)
exten => 2,n,Goto(299,1)
exten => 3,1,Playback(vm-extension&digits/3)
exten => 3,n,Goto(300,1)

;================================================= =====
[ivr_esp]
;================================================= =====
exten => s,1,Dial(${POSTE200},30) ; r1 pour ring cadence et caller id DECT
exten => s,n,VoiceMail(${POSTE200VOICE}) ; ,u pour unavailable msg
exten => s,n,Hangup()


;_________________________________________________ ______
; 100
exten => 100,1,Dial(${POSTE100},20)
exten => 100,n,VoiceMail(${POSTE100VOICE})
exten => 100,n,Hangup()

;_________________________________________________ ______
; 300 - all extensions
exten => 300,1,Dial(${POSTE100}&${POSTE200},30)
exten => 300,n,Playback(vm-nobodyavail)
exten => 300,n,Hangup()
exten => 300,n,Goto(s,1)

jean
07/08/2013, 20h09
je reçois un appel entrant de l'extérieur, et que je ne décroche pas,

c'est modéremment clair... si tu décroches pas, rien ne se passe !

de ce que je comprends: lorsque tu as un appel entrant, asterisk décroche systématiquement, et démarre un SVI, qui suivant les choix utilisateurs et callerid, aboutit sur un poste.
lorsque l'appelant est en relation avec un poste classique, le raccroché est bien détecté. lorsqu'il reste en boucle sur le svi, le raccroché n'est pas détecté...

si c'est ca, pourquoi simplement ne pas prévoir des timeout et que la logique svi raccroche après quelques attentes infructueuses de touches ?

myvoip
07/08/2013, 21h24
C'est exactement la problématique rencontrée...
Intégrer un timeout de 30 secondes par exemple est une bonne idée, je vais regarder comment faire. Néanmoins cela reste un "workaround", et j'aimerais fixer proprement.

Je ne vois pas ou corriger cette différence de comportement : bug Asterisk ou dahdi ?

jean
07/08/2013, 21h32
bon, déjà on a cerné le problème, c'est un bon début :pt1cable:

je suppose que c'est toi qui appelle et fais le test de raccrochage ? comment vérifie tu que le channel n'est pas raccroché ? il faut faire sur la CLI un core show channels verbose
également (au début, après le décroché, et après le raccroché appelant)

tu peux ajouter un mixmonitor après le answer, et écouter ce qui se passe quand tu raccroches

myvoip
07/08/2013, 22h27
Oui :)

C'est bien moi qui réalise les appels entrants en appelant de mon portable.
Je sais qu'Asterisk n'a pas raccroché :
1/ via la CLI CLI => en lançant Asterisk comme ceci :

asterisk -cvvvvv 2/ car lorsque je rappelle une seconde fois je tombe sur le répondeur de Free.


core show channels verboseconfirme que la ligne reste up.

mixmonitor ne me permet pas d'écouter car le wav n'est écrit qu'après le raccroché.
Comme je suis obligé de tuer Asterisk via un ctrl-c => pas de wav.

jean
07/08/2013, 22h38
le core channel doit montrer une ligne si en dialogue svi, deux si avec un correspondant. tu confirmes ?

par ailleurs, tu peux forcer le raccrochage d'un channel depuis la CLI - genre
soft hangup <channel> ou juste hangup channel

myvoip
07/08/2013, 23h15
oui je confirme, tout est cohérent à ce niveau.


PS : visiblement le fichier wav n'est créé que s'il y a décrochage.
Dans la négative, pas d'enregistrement.

jean
08/08/2013, 16h00
la je sèche un peu... :gratgrat::gratgrat:

il reste la gestion d'un time out comme déjà dit, sinon, mais je connais pas la carte que tu utilises, voir si il n'y a pas un mode debug, qui poste des traces pour voir ce qui se passe plus en détail

désolé ! j'espère que qqun pourra reprendre ce sujet et t'aider

myvoip
08/08/2013, 19h10
OK merci jean d'avoir essayé (je regarde comment prendre des traces).

En complément d'info si d'autres personnes peuvent m'aider :
- j'ai testé sur 2 machines identiques équipées de TDM400P => même problème.
- on peut exclure un souci électrique (impédance ou autre) entre Freebox et Digium vu que le raccroché est toujours détecté dans certains cas.
- j'essaie de comprendre si le problème vient du driver ou d'Asterisk.

Vraiment bizarre ce problème :confused:

fastm3
09/08/2013, 00h50
Ca n'est pas forcement simple parce qu'il y a plein de choses qui interviennent mais on peut souvent trouver une solution.

Verif de base.
verifie que tu as bien sette busydetect et busycount.
loadzone=fr
defaultzone=fr
progzone=fr

que tu passes bien à ton module
options wctdm24xxp opermode=FRANCE boostringer=1 fastringer=1
( /etc//modprobe.d/dahdi )

Essaie de faire des tests deja en simplifiant ton dialplan. ( juste un answer , dial de ton ext )
1- Verif si detection hangup ok si tu decroches
2- Verif detection hangup non ok si l'appelant raccroche.
3- Verif detection hangup ok si l'appelant raccroche et si pas de answer dans le dialplan.

la detection du raccroché de l'appelant peut poser effectivement quelques fois des pbs si on n'a pas décroché et en fonction du dialplan mais verifie deja ces simples cas.
Je n'ai en fait jamais eu besoin d'aller plus loin car generalement sur une simple ligne analogique , je n'ai pas d'ivr mais un simple dial qui justement n'a pas de pb a detecter le raccroché de l'appelant si on ne lui mets pas de answer avant.
Sinon, il faut se plonger dans les sources de dahdi pour savoir pourquoi la detection de la tonalité de raccroché ne se fait pas dans certains cas ou trouver une astuce comme dans l'autre thread precedent qui avait ete solutionné par un dial sans answer.
Fastm3.

myvoip
09/08/2013, 22h43
Les nouvelles sont escellentes :pt1cable:

J'ai vérifié les différents paramètres => OK
sauf /etc/modprobe.d/dahdi qui ne contient rien ici.
=> Pourtant lsmod charge correctement wctdm)

Je viens de simplifier le dialplan à l'extrême pour test:

exten => s,1,Wait(2) ; 2s pour dentifier le callerid
exten => s,n,Answer()
exten => s,n,Dial(${POSTE1},10) ; r1 pour ring cadence et caller id DECT
exten => s,n,Hangup()
Cette fois, tous les cas d'appels entrants fonctionnent !
1. détection hangup si je raccroche avant que l'appelé ne décroche => OK
2. détection hangup si je raccroche après que l'appelé ne décroche => OK
3. détection hangup si l'appelé raccroche avant l'appelant => OK

Le paramétrage france et la fonction answer sont donc hors de cause.
Je pense que cette boucle du script pose problème :

exten => s,1,Read(NUM,milly_accueil23,1,skip,2,2) Je vais essayer de modifier cette ligne.
Avez-vous une autre proposition pour dérouler un message d'invitation en boucle ?

fastm3
10/08/2013, 18h39
Les nouvelles sont escellentes :pt1cable:

J'ai vérifié les différents paramètres => OK
sauf /etc/modprobe.d/dahdi qui ne contient rien ici.
=> Pourtant lsmod charge correctement wctdm)
?
Ce ne sont que des options passees au module. Ca n'empeche pas du tout son chargement. Elles sont conseillees meme si ca semble marcher sans.
Fastm3.

myvoip
10/08/2013, 18h44
OK pris en compte. Je finalise les tests du nouvel ivr et posterai les résultats dans la soirées.
Pour l'instant cela se passe plutôt bien :)

myvoip
10/08/2013, 23h35
Bon, j'ai réalisé pas mal de manips sur l'IVR modifié a priori cela semble OK côté hangup. Je l'ai mis en prod pour tester plus longuement : c'est mon domicile, pas de gros risque...

Merci de m'avoir aidé à cerner le problème !