[VERSTÄNDNISFRAGE] Waitfordigits-Einsatz

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,837
Punkte für Reaktionen
0
Punkte
36
Hallo Alle,

ggf. kann mir jemand die Syntax und den Einsatz von WaitForDigits näher bringen, hab anscheinend ein Brett vor dem Kopf oder bin zu "wach" ;)

Die Syntax lautet folgend :

Code:
[Synopsis]
Wait for digits

[Description]
 waitfordigits([milliseconds]|[maxnum]|addexten|<control>):
 Waits for given milliseconds for overlapdialed digits
 If you pass maxnum, it waits only till maxnum digits is dialed, then
 exits immediately
 The argument 'addexten' indicates wether the dialed digits should be added
 to the given channel
 The channel Variable ALREADY_WAITED indicates wether we have already waited
 If this Variable is set, the application exits immediatly
 The control option allows you to send the given control Number in terms
 of AST_CONTROL_XX (asterisk/include/asterisk/frame.h) Numbers to this 
 channel before extiting. In q.931 it makes a lot of sense to send a 
 Proceeding in this case which means control=15
Also zB.:

Code:
exten => s,1,Waitfordigits(<Wartezeit/ms>,<Nummernlänge>,true,<Schnitt>)

Ich habe einen Anlagenanschluss mit 12345 (5 Zahlen + endende "0").
Wählt nun jemand eine Nebenstelle hinzu sähe die Nummer 12345 + Nebenstelle 10 so aus : 1234510.

Ich möchte gerne das waitfordigits die letzte Zahl abwartet, wenn sie kommt soll er sie einsetzen.

Sorry wenn ich so eine Basic hier frage - aber ich habe anscheinend heute und die letzten Tage echt ein Brett vor dem Kopf...

Grüsse, Stefan (der bald Urlaub hat(bzw. brauch))
 

crich

Mitglied
Mitglied seit
1 Sep 2005
Beiträge
529
Punkte für Reaktionen
0
Punkte
0
Also waitfordigits fügt die letzten Ziffern nur hinzu wenn du als 3. Argument "addexten" übergibst. ABER: chan_misdn fügt nachgewählte Ziffern automatisch hinzu, deshalb muss man das 3. argument nicht setzen, ich glaube chan_zap macht das auch.
 

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,837
Punkte für Reaktionen
0
Punkte
36
Ich habe das ganze jetzt mal ausprobiert, hin und her, leider bleibt die fehlende Zahl die fehlende ?!

Das war der Aufbau :
Code:
exten => _12345X,1,Waitfordigits(6000,7,addexten)
exten => _12345X,2,Verbose(* * Waited4Digits von ${CALLERIDNUM} und die Nummer ${EXTEN} kam heraus)
exten => _12345X,3,Goto(isdn2,,1)
; Syntax : waitfordigits([milliseconds]|[maxnum]|addexten|<control>)
Ich habe mit einem analogen Anschluss angerufen und die Nummer 12345-24 gewählt, an kam die Nummer 12345-2 , wait4digits hat gewartet und dann ausgespuckt das es nichts mehr zu warten gäbe und die 12345-2 uebergeben.

Code:
Nov  9 11:26:22 VERBOSE[13234] logger.c:     -- Executing waitfordigits("mISDN/2-1", "6000|7|addexten") in new stack
Nov  9 11:26:22 VERBOSE[13234] logger.c: You passed timeout:6000 maxnum:7 addexten:0 control:0
Nov  9 11:26:28 VERBOSE[13234] logger.c: Not Overwriting extension:12345-6 with new Number: 12345-6
Nov  9 11:26:28 VERBOSE[13234] logger.c: Not Sending any control to Channel 12345-6 state is 5
Nov  9 11:26:28 VERBOSE[13234] logger.c:     -- Executing Verbose("mISDN/2-1", "* * Waited 4 Digits von <<ANRUFER>> und die Nummer 12345-6 kam heraus") in new st$
ich habe es auch mal mit "addexten:7" ausprobiert und auch die Variable "true" genommen.

Es ist schade das es zu waitfordigits nur diese sehr spärliche Info von markster gibt.

Mache ich etwas falsch ?

Grüsse, Stefan
 

otmar.ganahl

Neuer User
Mitglied seit
9 Okt 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hallo Stefan,
wir haben an einer anderen Stelle darüber schon diskutiert, aber nun hier noch einmal, vielleicht hilft der Hinweis weiter um das Problem einzugrenzen:


Ich habe änliches Verhalten, wie du es schilderst.

Per WaitForDigits(...) kann ich die Durchwahlen von Analogtelefonen abwarten. Dies funktioniert soweit gut, allerdings nur dann, wenn beim Analogtelefon abgehoben wird und dann gewählt wird.

Modernere Analogtelefone (bei meiner Testumgebung im Speziellen ein GIGASET) erlauben aber auch zuerst das Wählen der Ziffern, um dann z.B. per grüner Taste die gesamten Ziffern "in einem Schlag" zu wählen. In diesem Falle verhält sich misdn bei mir nicht richtig. Auch mit Verwendung von WaitForDigits wird nur die 1. Ziffer der gewählten Durchwahl vom Treiber an Asterisk übergeben. Die letzten zwei Ziffern (ich verwende 2-stellige Durchwahlen) werden nicht dedektiert. Teilweise kann ich das Verhalten auch durch sehr schnelles Wählen am Analogtelefon bewirken.


Gruß Otmar
 

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,837
Punkte für Reaktionen
0
Punkte
36
Ich kann das hier 1a simulieren in dem ich mich an folgendes Kochrezept halte :

- analoge Amtsleitung
- Telefon von der TKom - welches die nummer erst annimmt und dann auf einen Schlag absendet

Es ist so gut wie 100%ig das diese Konstellation Müll liefert.

Leider haben anscheinend meine Steuerberater und manche Kunden genau dieses und jedes Mal ist Ärger und Beschimpfung vorprogrammiert ... :mad:

Grüsse, Stefan
 

crich

Mitglied
Mitglied seit
1 Sep 2005
Beiträge
529
Punkte für Reaktionen
0
Punkte
0
Nochmal zur Klarheit, die problematische Konstellation sieht so aus :

Analog Fon (mit Blockwahl) <----> TELEKOM <---> chan_misdn <---> waitfordigits <---> Asterisk

?
 

otmar.ganahl

Neuer User
Mitglied seit
9 Okt 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hallo Christian,
exakt so!

Wenn mit dem Analogtelefon die Ziffern einzeln gewählt werden, dann klappt es tadelos. Wenn mit Analogtelefon "Blockwahl" gewählt wird, dann kommt bei mir eine Extension an, die der ersten Ziffer der Durchwahl entspricht.

Gruß Otmar
 

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,837
Punkte für Reaktionen
0
Punkte
36
Problem besteht immer noch, nicht gelöst.
 

3CX PBX - GRATIS
Linux / Win / Cloud

Neueste Beiträge

Statistik des Forums

Themen
233,138
Beiträge
2,030,621
Mitglieder
351,506
Neuestes Mitglied
Arni66