Ich zitiere mal kurz aus dem Default-Dialplan aus der extensions.conf. Das ist natürlich nicht mein richtiger Dialplan, aber an diesem einfachen Beispiel kann ich wohl noch am ehesten erklären, was ich überhaupt will.
Angenommen, ich habe nun ein Softphone, mit dem ich am Asterisk angemeldet bin. Dem Softphone weise ich den Standardkontext "demo" zu.
Nun kann ich z.B. die Rufnummer "s" wählen, und lande beim Asterisk-Willkommens-Gruß. Die Timeouts werden auch schön gesetzt, wie man das erwartet.
Wähle ich aber gleich die Rufnummer "2", wird sofort zur Extension "2" gesprungen. Ohne den Anruf mit "Answer" entgegenzunehmen, und ohne die Timeouts zu setzen.
Ich verstehe zwar, warum das bei diesem Dialplan so ist, aber ich hätte gerne, dass auch in diesem Fall sowas wie eine "Initialisierung" stattfindet.
Da frage ich mich doch, was die "Answer"-Funktion eigentlich bewirkt, wenn's auch ohne sie funktioniert?
Bei Asterisk 1.0.3 habe ich mal sowas benutzt:
Mittlerweile habe ich Asterisk 1.2.10 installiert, aber dieser beschwert sich heftig über dieses "Catch-All-Kontrukt" mit "_."
Wenn ich aber "_X." anstatt dessen benutze, muss ich für die einstelligen Rufnummer wieder eine extra Extension schreiben, und das widerstrebt mir. Kann mir da vielleicht jemand auf die Sprünge helfen?
Code:
[demo]
;
; We start with what to do when a call first comes in.
;
exten => s,1,Wait,1 ; Wait a second, just for fun
exten => s,n,Answer ; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions
exten => s,n,WaitExten ; Wait for an extension to be dialed.
exten => 2,1,BackGround(demo-moreinfo) ; Give some more information.
exten => 2,n,Goto(s,instruct)
exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french
exten => 3,n,Goto(s,restart) ; Start with the congratulations
Angenommen, ich habe nun ein Softphone, mit dem ich am Asterisk angemeldet bin. Dem Softphone weise ich den Standardkontext "demo" zu.
Nun kann ich z.B. die Rufnummer "s" wählen, und lande beim Asterisk-Willkommens-Gruß. Die Timeouts werden auch schön gesetzt, wie man das erwartet.
Wähle ich aber gleich die Rufnummer "2", wird sofort zur Extension "2" gesprungen. Ohne den Anruf mit "Answer" entgegenzunehmen, und ohne die Timeouts zu setzen.
Ich verstehe zwar, warum das bei diesem Dialplan so ist, aber ich hätte gerne, dass auch in diesem Fall sowas wie eine "Initialisierung" stattfindet.
Da frage ich mich doch, was die "Answer"-Funktion eigentlich bewirkt, wenn's auch ohne sie funktioniert?
Bei Asterisk 1.0.3 habe ich mal sowas benutzt:
Code:
exten => _.,1,Wait,1
exten => _.,2,Answer ; Answer the line
exten => _.,3,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => _.,4,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10
exten => s,5,mach irgendetwas
exten => 2,5,mach irgendetwas anderes
Mittlerweile habe ich Asterisk 1.2.10 installiert, aber dieser beschwert sich heftig über dieses "Catch-All-Kontrukt" mit "_."
Code:
WARNING[11756]: pbx_config.c:1741 pbx_load_module: The use of '_.' for an extension is strongly discouraged and can have unexpected behavior. Please use '_X.' instead at line 284
Wenn ich aber "_X." anstatt dessen benutze, muss ich für die einstelligen Rufnummer wieder eine extra Extension schreiben, und das widerstrebt mir. Kann mir da vielleicht jemand auf die Sprünge helfen?