Rufumleitung tut nicht

himpierre

Mitglied
Mitglied seit
18 Apr 2007
Beiträge
316
Punkte für Reaktionen
0
Punkte
0
Hola.

Bin gerade etwas verwundert. Habe eine Rufumleitung für die internen Telefone konfiguriert, allerdings wird nix umgeleitet von Asterisk. Sieht momentan so aus:
Code:
exten => _44X.,1,Answer()
exten => _44X.,n,Set(DB(CFIM/${CALLERID(num)})=${EXTEN:2})
exten => _44X.,n,Wait(1)
exten => _44X.,n,SayDigits(${EXTEN:2})
exten => _44X.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2} aktiviert.)
exten => _44X.,n,Playback(umleitung-gespeichert)
exten => _44X.,n,Hangup()

Nachdem ich zum Beispiel 4401773502xxx wähle, taucht dieser Eintrag auch in der DB auf:

Code:
asterix*CLI> database show
/CFIM/118                                         : 01773502xxx

Rufe ich nun die 118 an, klingelt die 118. Grmpf. Jemand eine Idee, was ich hier falsch mache? Muss ich die DB auch noch abfragen oder so?
 
Starte Asterisk -rvvvv, ruf an und poste den Output
 
Da steht eigentlich nichts auffälliges drin:

Code:
Audio is at 192.168.150.151 port 10494                                          
Adding codec 0x8 (alaw) to SDP                                                  
Adding codec 0x4 (ulaw) to SDP                                                  
Adding non-codec 0x1 (telephone-event) to SDP                                   
Reliably Transmitting (no NAT) to 192.168.150.43:5060:                          
INVITE sip:[email protected] SIP/2.0                                           
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport              
From: "User" <sip:[email protected]>;tag=as07f98593                           
To: <sip:[email protected]>                                                    
Contact: <sip:[email protected]>                                              
Call-ID: [email protected]                       
CSeq: 102 INVITE                                                                
User-Agent: Asterisk PBX                                                        
Max-Forwards: 70                                                                
Date: Mon, 11 Aug 2008 12:05:04 GMT                                             
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY              
Supported: replaces                                                             
Content-Type: application/sdp                                                   
Content-Length: 270                                                             

v=0
o=root 12737 12737 IN IP4 192.168.150.151
s=session                                
c=IN IP4 192.168.150.151                 
t=0 0                                    
m=audio 10494 RTP/AVP 8 0 101            
a=rtpmap:8 PCMA/8000                     
a=rtpmap:0 PCMU/8000                     
a=rtpmap:101 telephone-event/8000        
a=fmtp:101 0-16                          
a=silenceSupp:off - - - -                
a=ptime:20                               
a=sendrecv                               

---
asterix*CLI> 
<--- SIP read from 192.168.150.43:5060 --->
SIP/2.0 100 Trying                         
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport
From: "User" <sip:[email protected]>;tag=as07f98593             
To: <sip:[email protected]>;tag=3D207F30-A5BE1077                
CSeq: 102 INVITE                                                  
Call-ID: [email protected]         
Contact: <sip:[email protected]>                                 
User-Agent: PolycomSoundPointIP-SPIP_330-UA/2.1.1.0037            
Content-Length: 0                                                 


<------------->
--- (9 headers 0 lines) ---

<--- SIP read from 192.168.150.43:5060 --->
SIP/2.0 180 Ringing                        
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport
From: "User" <sip:[email protected]>;tag=as07f98593             
To: <sip:[email protected]>;tag=3D207F30-A5BE1077                
CSeq: 102 INVITE                                                  
Call-ID: [email protected]         
Contact: <sip:[email protected]>                                 
User-Agent: PolycomSoundPointIP-SPIP_330-UA/2.1.1.0037            
Allow-Events: talk,hold,conference                                
Content-Length: 0                                                 


<------------->
--- (10 headers 0 lines) ---
Scheduling destruction of SIP dialog '[email protected]' in 32000 ms (Method: INVITE)                                            
Reliably Transmitting (no NAT) to 192.168.150.43:5060:                          
CANCEL sip:[email protected] SIP/2.0                                           
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport              
From: "User" <sip:[email protected]>;tag=as07f98593                           
To: <sip:[email protected]>                                                    
Call-ID: [email protected]                       
CSeq: 102 CANCEL                                                                
User-Agent: Asterisk PBX                                                        
Max-Forwards: 70                                                                
Content-Length: 0                                                               


---
Scheduling destruction of SIP dialog '[email protected]' in 32000 ms (Method: INVITE)
asterix*CLI>
<--- SIP read from 192.168.150.43:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport
From: "User" <sip:[email protected]>;tag=as07f98593
To: <sip:[email protected]>
CSeq: 102 CANCEL
Call-ID: [email protected]
Contact: <sip:[email protected]>
User-Agent: PolycomSoundPointIP-SPIP_330-UA/2.1.1.0037
Content-Length: 0


<------------->
--- (9 headers 0 lines) ---

<--- SIP read from 192.168.150.43:5060 --->
SIP/2.0 487 Request Cancelled
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport
From: "User" <sip:[email protected]>;tag=as07f98593
To: <sip:[email protected]>;tag=3D207F30-A5BE1077
CSeq: 102 INVITE
Call-ID: [email protected]
Contact: <sip:[email protected]>
User-Agent: PolycomSoundPointIP-SPIP_330-UA/2.1.1.0037
Content-Length: 0


<------------->
--- (9 headers 0 lines) ---
Transmitting (no NAT) to 192.168.150.43:5060:
ACK sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP 192.168.150.151:5060;branch=z9hG4bK50383abd;rport
From: "User" <sip:[email protected]>;tag=as07f98593
To: <sip:[email protected]>;tag=3D207F30-A5BE1077
Contact: <sip:[email protected]>
Call-ID: [email protected]
CSeq: 102 ACK
User-Agent: Asterisk PBX
Max-Forwards: 70
Content-Length: 0
 
Mit dem Code-Ausschnitt wird in der DB nur der Eintrag /CFIM/118 geschrieben... was damit geschehen soll (also die eigentliche Rufumleitung), musst Du in der extensions.conf noch definieren.

Ein Beispiel findest Du hier.

Ralph
 
Mit dem Code-Ausschnitt wird in der DB nur der Eintrag /CFIM/118 geschrieben... was damit geschehen soll (also die eigentliche Rufumleitung), musst Du in der extensions.conf noch definieren.
Ah, hab ichs mir doch gedacht. Danke.
 
Uiui. Nich so einfach. Ich würde das ganze gerne nur für eine extension konfigurieren. Komme aber nicht so richtig zu Potte. Sieht im Moment so aus:
Code:
;exten => 118,1,Set(NUM=${DB(CIFM/${ARG1})})
;exten => 118,2,NoOP(DBGetStatus: ${DBGETSTATUS})
;exten => 118,3,GotoIf($["${DBGETSTATUS}"  = "NOTFOUND"]?4:6)
;exten => 118,4,Dial(SIP/${ARG1},10)
;exten => 118,5,Hangup()
;exten => 118,6,Set(NUM=${DB(CIFM/${ARG1})})
;exten => 118,7,Dial(mISDN/g:TEports/${NUM},10)
;exten => 118,8,Hangup()

Allerdings wählt asterisk nicht die $NUM. Hm. Jemand der mir unter die Arme greifen kann? Danke im voraus.
 
Na - Du hast ja auch alles auskommentiert ;-)

Ich gehe mal davon aus, dass Du das (wie im Beispiel von baschdieh) in ein Macro gepackt hast, dem Du als ARG1 die gewünschte interne Nebenstelle mitgibst. Das wird aus Deinem Codefragment nämlich leider nicht deutlich.

Ansonsten hilft ein Beobachten bzw. Posten der CLI-Ausgaben... Wenn asterisk nicht die $NUM wählt, was wählt er denn dann?

Ralph
 
Ich glaube ich mache alles falsch. Ich versuche mir mal das Beispiel von Baschdieh selbst zu erklären:
Code:
[macro-weiterleitung]
exten => s,1,Set(temp=${DB(CFIM/${ARG1})})
exten => s,n,GotoIf($["${temp}" = "${CALLERIDNUM}"]?ja:nein)
exten => s,n(nein),GotoIf(${temp}?cfim:nocfim)
exten => s,n(cfim),Dial(Local/${temp}@intern/n)
exten => s,n,Busy()
exten => s,n(nocfim),NoOp
exten => s,n(ja),Dial(${ARG2},240,t) ; 15sec timeout
Also. Als erstes setze ich mit ARG1 die Telefonnummer, die die Weiterleitung aktiviert hat. Dann schaue ich nach ob die Nummer die gerade anruft in ARG1 steht. Steht sie da nicht drin kommt "GotoIf(${temp}?cfim:nocfim)" zur Wirkung. in $temp steht aber möglicherweise garnichts drin, oder? Das kapiere ich irgendwie nicht. Steht sie drin dialed Asterisk ARG2, was wohl die Nummer wäre auf die umgeleitet wurde. Hm.

Und dieses Macro include ich in den Kontext in dem meine internen Telefone landen?
 
Und dieses Macro include ich in den Kontext in dem meine internen Telefone landen?
NEIN

ich würde es mal mit
exten _X.,n,macro(weiterleitung,${EXTEN:2})
im Kontext deiner Telefone probieren.
Wenn's die Prio 1 ist, ersetz das 'n' durch 1, und ob '${EXTEN:2}' dein ARG1 sein soll hab ich mir auch nicht angeschaut.
 
Nicht um Dich zu verwirren, sondern weil ich es leichter erklären kann, habe ich Dir hier mal aufgeführt, wie ich das mit den Rufumleitungen handhabe.

Es sind Rufumleitungen sowohl auf interne Nebenstellen als auch zu externen Rufnummern möglich. Externe Nummern werden dabei über eine führende Null gekennzeichnet und werden bei mir über CAPI abgewickelt.


Zunächst benötigst Du eine Extension, in der Du die gewünschte Rufumleitung setzen kannst. Dies wird über einen Eintrag in der DB realisiert:
Code:
; ***********************************************
; Rufumleitung setzen
; ***********************************************
exten => _*34.,1,Set(DB(ruml/${CALLERID(num)})=${EXTEN:3})
exten => _*34.,2,Hangup()


Falls keine Rufumleitung mehr gewünscht ist, muss man sie auch wieder löschen können:
Code:
; ***********************************************
; Rufumleitung loeschen
; ***********************************************
exten => *35,1,DBdel(ruml/${CALLERID(num)})
exten => *35,2,Hangup()


Wenn ein Benutzer für seine eigene Nebenstelle eine Rufumleitung auf die interne Nebenstelle 123 setzen will, dann ruft er also die Nummer *34123 an. Eine externe Rufumleitung auf die Handynummer 01721234567 setzt man über *34001721234567

*34 ist also die "Systemnummer" für Rufumleitung setzen. Daran hängt man das Umleitungsziel einfach an. Wenn es in das ISDN-Netz gehen soll, muss noch eine Null vorangestellt werden.


Nun gibt es im Dialplan eine Stelle, in der Du die internen Verbindungen behandelst. An dieser Stelle wird jetzt das Makro aufgerufen, dem Du die gewünschte Zielrufnummer als Argument mitgibst:
Code:
exten => _ZXX,1,Macro(inhousecall,${EXTEN})
exten => _ZXX,2,Hangup()

Wenn jemand also intern die Nebenstelle 456 anruft, wird im Dialplan das Makro aufgerufen: Macro(inhousecall,456)


Und dieses Makro sieht bei mir im Wesentlichen so aus:
Code:
[macro-inhousecall]
; ***********************************************
; ist in der DB eine Rufumleitung für die Nebenstelle
; eingetragen, die als ARG1 an das Macro übergeben wurde?
; ***********************************************
exten => s,1,Set(isruml=${DB_EXISTS(ruml/${ARG1})})
exten => s,2,Set(rumlziel=${DB(ruml/${ARG1})})
exten => s,3,GotoIf($["${isruml}" = "1"]?10:40)

; ***********************************************
; es ist also eine Rufumleitung in der DB eingetragen...
; ist die Rufumleitung nach extern oder intern?
; (Externe Rufumleitungen haben eine führende Null)
; ***********************************************
exten => s,10,GotoIf($["${rumlziel:0:1}" = "0"]?20:30)

; ***********************************************
; es wurde eine führende Null entdeckt...
; die Rufumleitung ist also nach extern -> ins ISDN-Netz geben
; die Zielrufnummer steht in der Variable "rumlziel"
; ***********************************************
exten => s,20,Dial(CAPI/g1/${ARG1}:${rumlziel:1}/bo,90)
exten => s,21,Hangup()

; ***********************************************
; die Rufumleitung ist also nach intern...
; Übergabe des Rufumleitungsziels an die Variable "tocall"
; ***********************************************
exten => s,30,Set(tocall=${rumlziel})
exten => s,31,Goto(50)

; ***********************************************
; es ist gar keine Rufumleitung eingetragen...
; Übergabe der ursprünglich gewünschten Nebenstelle an die Variable "tocall"
; ***********************************************
exten => s,40,Set(tocall=${ARG1})
exten => s,41,Goto(50)

; ***********************************************
; interne SIP-Verbindung herstellen...
; die Zielrufnummer steht in der Variable "tocall"
; ***********************************************
exten => s,50,Dial(SIP/${tocall},${RINGTIME},tr)
exten => s,51,Hangup()

HTH
Ralph
 
Zuletzt bearbeitet:
Danke Ralph. Das hilft mir auf jeden Fall die Sache etwas besser zu verstehen. Mein Problem ist glaube ich, das in den bestehenden Dialplan zu integrieren. Wenn also keine Umleitung konfiguriert ist springt er ja "tocall". Diese Variable verstehe ich noch nicht so recht.
 
Ich verwende folgende Variablen:

isruml - dort steht eine 1, wenn es in der DB einen Eintrag gibt; 0 wenn nicht
rumlziel - enthält den Eintrag aus der DB (also die Zielrufnummer für die Rufumleitung)
tocall - Zielrufnummer für den SIP Dial

Wenn keine Rufumleitung eingetragen ist, wird der Variable tocall der Wert von ARG1 zugewiesen (ARG1 ist die ursprünglich gewünschte interne Nebenstelle, also die Nummer, die man anrufen wollte).

Gibt es ein internes Rufumleitungsziel, dann gilt tocall = rumlziel

Die Variable tocall wird dann für Dial() verwendet.
 
Bin jetzt ein bisschen weiter. Aber diese Zeile hier:
Code:
exten => s,20,Dial(CAPI/g1/${ARG1}:${rumlziel:1}/bo,90)
funktioniert so mit SIP nicht, oder? Wenn ich die ändere in:
Code:
exten => s,20,Dial(SIP/${rumlziel:1}@00038723XXXX,90,tT)
tuts. Uff.
Allerdings bin ich noch nicht am Ziel. Es geht aber voran. :)
 
Unsere ISDN-Anbindung wird mit chan-capi abgewickelt - daher das CAPI in der Zeile mit dem Dial.

Wie ich weiter oben erwähnt habe, unterscheide ich zwischen internen und externen Rufumleitungen.

Externe Rufumleitungen verstehen sich dabei als Umleitungen zu Telefonen außerhalb unseres Büros, also z.B. zu einem Festnetztelefon oder einem Handy. Diese sind durch eine führende Null gekennzeichnet und werden über eine der ISDN-Karten im Server an das ISDN-Netz weitergegeben.

Wenn Du kein chan-capi einsetzt, dann wird diese Zeile bei Dir so auch nicht funktionieren. Auf keinen Fall jedoch funktioniert sie für SIP.

Du scheinst Dich im Moment ja sehr mit dem Thema auseinanderzusetzen. Trotzdem glaube ich, dass Du noch ein wenig im Nebel stocherst. Kannst Du denn einigermaßen nachvollziehen, was ich in meinem Beispiel mache?

[EDIT]
Ich habe mein Beispiel noch durch ein paar weitere Kommentarzeilen ergänzt... vielleicht hilft das ja ;-)
[/EDIT]

Was genau hast Du denn vor? Bastel Dir doch mal eine Signatur fürs Forum. Dann kann man gleich sehen, welche Konfiguration bei Dir zum Einsatz kommt.

Hast Du z.B. eine ISDN-Anbindung?
 
Zuletzt bearbeitet:
Code:
Was genau hast Du denn vor?
Och ich bastele einfach ein bisschen rum auf meinem RootServer. Fax mit Iaxmodem, Konferenzen, IVR, Rufumleitung, das Übliche eben... :)
Code:
ch habe mein Beispiel noch durch ein paar weitere Kommentarzeilen ergänzt... vielleicht hilft das ja
Jede Erklärung nehme ich dankbar entgegen.
Code:
Wenn Du kein chan-capi einsetzt, dann wird diese Zeile bei Dir so auch nicht funktionieren. Auf keinen Fall jedoch funktioniert sie für SIP.
Mit meiner Anpassung funktioniert sie aber schon. Muss ich mir Sorgen machen?
Code:
Kannst Du denn einigermaßen nachvollziehen, was ich in meinem Beispiel mache?
Doch doch, langsam dämmerts. Warum in der Capi Zeile ARG1 steht, verstehe ich allerdings noch nicht.
 
Mit meiner Anpassung funktioniert sie aber schon. Muss ich mir Sorgen machen?

Nein, musst Du nicht. Du hast sie ja an Deine Bedürfnisse angepasst...

Warum in der Capi Zeile ARG1 steht, verstehe ich allerdings noch nicht.

In ARG1 steht ja die Nummer der Nebenstelle, die ursprünglich angerufen werden sollte. Und die gebe ich dem CAPI-Dial als "Absendernummer" mit. Das kann man so machen, muss man aber nicht...
 
Och ich bastele einfach ein bisschen rum auf meinem RootServer.

Vielleicht interessiert dich ein Ansatz von mir Rufweiterleitung Sofort, Wenn Busy, Nach Zeit und Folow me zu Programmieren.
D.h. man muss die Zielrufnummer setzen könen und die RWL ein-/ausschalten. Alles wird in einem Datenbankeintrag 'RWL/CALLERID(number)' gespeichert. Da viele Telefone "*#" nicht senden können bzw. von anderen Geräten (Tk-Anlage, Fritz!Box) abgefangen werden, habe ich das Setzen/Löschen in eine Sektion getan und Springe diese je nach user bei "*21#" oder "9999." oder "_X./0171333444" (Rufweiterleitung 'Follow Me' vom Handy Einschalten, wenn man unterwegs ist) mit goto an.
0 - RWL aus Alles
01 - RWL aus sofort
02 - RWL aus bei Busy
03 - RWL aus Nach Zeit
04RufNr - RWL aus Folow Me

1RufNr - RWL Sofort ein mit Rufnummer
1 - RWL Sofort ein (mit letzter Programmierten Rufnummer)
2RufNr - RWL bei Busy ein mit Rufnummer
2 - RWL ein bei Busy (mit letzter Programmierten Rufnummer)
3RufNr - RWL Nach Zeit ein mit Rufnummer
3 - RWL ein Nach Zeit (mit letzter Programmierten Rufnummer)
4RufNr - RWl Follow me ein (d.h. wenn jemand RufNr anruft, kommt der Anruf die dem Telefon an, der diese RWL Programmiert hat)


Code:
[rwl]
exten => _0.,1,NoOp(RWL aus ${EXTEN} 0[1=sofort|2=BUSY|3=nach Zeit|4.=Folow me])
exten => 0,1,NoOp(RWL aus ALLE)
exten => _04.,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${EXTEN:2})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => _0.,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${CALLERID(number)})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => 0,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${CALLERID(number)})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => 0,3,Set(RWL_EA_sofort=0)
exten => _04.,3,Set(RWL_EA_sofort=0)
exten => 01,3,Set(RWL_EA_sofort=0)
exten => _0!,3,Set(RWL_EA_sofort=${CUT(DB_RESULT,'!',1)})
exten => _0!,4,Set(RWL_sofort=${CUT(DB_RESULT,'!',2)})
exten => 0,5,Set(RWL_EA_busy=0)
exten => 02,5,Set(RWL_EA_busy=0)
exten => _0!,5,Set(RWL_EA_busy=${CUT(DB_RESULT,'!',3)})
exten => _0!,6,Set(RWL_busy=${CUT(DB_RESULT,'!',4)})
exten => 0,7,Set(RWL_EA_zeit=0)
exten => 03,7,Set(RWL_EA_zeit=0)
exten => _0!,7,Set(RWL_EA_zeit=${CUT(DB_RESULT,'!',5)})
exten => _0!,8,Set(RWL_zeit=${CUT(DB_RESULT,'!',6)})
exten => _0!,9,Set(RWL_VE_zeit=${CUT(DB_RESULT,'!',7)})
exten => _0!,10,Set(RWL_EA_sofort=1)
exten => _04.,11,SET(DB(RWL/${EXTEN:2})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zeit})
exten => 0,11,SET(DB(RWL/${CALLERID(number)})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zeit})
exten => _0.,11,SET(DB(RWL/${CALLERID(number)})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zeit})
exten => _0!,12,Playback(rufuml_aus)
exten => _0!,n,Wait(1)
exten => _0!,n,NoOp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _0!,n,Hangup


exten => _1.,1,NoOp(RWL sofort ein mit Rufnummer)
exten => 1,1,NoOp(RWL sofort ein ohne nummer)
exten => _1!,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${CALLERID(number)})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => _1!,n,Set(RWL_EA_sofort=${CUT(DB_RESULT,'!',1)})
exten => _1!,n,Set(RWL_sofort=${CUT(DB_RESULT,'!',2)})
exten => _1!,n,Set(RWL_EA_busy=${CUT(DB_RESULT,'!',3)})
exten => _1!,n,Set(RWL_busy=${CUT(DB_RESULT,'!',4)})
exten => _1!,n,Set(RWL_EA_zeit=${CUT(DB_RESULT,'!',5)})
exten => _1!,n,Set(RWL_zeit=${CUT(DB_RESULT,'!',6)})
exten => _1!,n,Set(RWL_VE_zeit=${CUT(DB_RESULT,'!',7)})
exten => _1!,n(rwl1),Set(RWL_EA_sofort=1)
exten => 1,rwl1+1,Goto(rwl1_on)
exten => _1!,rwl1+1,Set(RWL_sofort=${EXTEN:1})
exten => _1!,rwl1+2(rwl1_on),SET(DB(RWL/${CALLERID(number)})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zei
exten => _1!,n,Playback(rufuml_an)
exten => _1!,n,SayDigits(${RWL_sofort})
exten => _1!,n,Wait(1)
exten => _1!,n,NoOp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _1!,n,Hangup

exten => _2.,1,NoOp(RWL BUSY ein mit Rufnummer)
exten => 2,1,NoOp(RWL BUSY ein ohne nummer)
exten => _2!,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${CALLERID(number)})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => _2!,n,Set(RWL_EA_sofort=${CUT(DB_RESULT,'!',1)})
exten => _2!,n,Set(RWL_sofort=${CUT(DB_RESULT,'!',2)})
exten => _2!,n,Set(RWL_EA_busy=${CUT(DB_RESULT,'!',3)})
exten => _2!,n,Set(RWL_busy=${CUT(DB_RESULT,'!',4)})
exten => _2!,n,Set(RWL_EA_zeit=${CUT(DB_RESULT,'!',5)})
exten => _2!,n,Set(RWL_zeit=${CUT(DB_RESULT,'!',6)})
exten => _2!,n,Set(RWL_VE_zeit=${CUT(DB_RESULT,'!',7)})
exten => _2!,n(rwl2),Set(RWL_EA_busy=1)
exten => 2,rwl2+1,Goto(rwl2_on)
exten => _2!,rwl2+1,Set(RWL_busy=${EXTEN:1})
exten => _2!,rwl2+2(rwl2_on),SET(DB(RWL/${CALLERID(number)})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zei
exten => _2!,n,Playback(rufuml_an)
exten => _2!,n,SayDigits(${RWL_busy})
exten => _2!,n,Wait(1)
exten => _2!,n,NoOp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _2!,n,Hangup

exten => _3.,1,NoOp(RWL nach Zeit ein mit Rufnummer)
exten => 3,1,NoOp(RWL nach Zeit ein ohne nummer)
exten => _3!,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${CALLERID(number)})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => _3!,n,Set(RWL_EA_sofort=${CUT(DB_RESULT,'!',1)})
exten => _3!,n,Set(RWL_sofort=${CUT(DB_RESULT,'!',2)})
exten => _3!,n,Set(RWL_EA_busy=${CUT(DB_RESULT,'!',3)})
exten => _3!,n,Set(RWL_busy=${CUT(DB_RESULT,'!',4)})
exten => _3!,n,Set(RWL_EA_zeit=${CUT(DB_RESULT,'!',5)})
exten => _3!,n,Set(RWL_zeit=${CUT(DB_RESULT,'!',6)})
exten => _3!,n,Set(RWL_VE_zeit=${CUT(DB_RESULT,'!',7)})
exten => _3!,n(rwl3),Set(RWL_EA_zeit=1)
exten => 3,rwl3+1,Goto(rwl3_on)
exten => _3!,rwl3+1,Set(RWL_zeit=${EXTEN:1})
exten => _3!,rwl3+2(rwl3_on),SET(DB(RWL/${CALLERID(number)})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_z
exten => _3!,n,Playback(rufuml_an)
exten => _3!,n,SayDigits(${RWL_zeit})
exten => _3!,n,Wait(1)
exten => _3!,n,NoOpp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _3!,n,Hangup

exten => _4.,1,NoOp(RWL Follow me)
exten => _4!,2,Set(RWL_TEXT=${IF(${DB_EXISTS(RWL/${EXTEN:1})}?${DB_RESULT}:0!0!0!0!0!0!25)})
exten => _4!,n,Set(RWL_EA_sofort=${CUT(DB_RESULT,'!',1)})
exten => _4!,n,Set(RWL_sofort=${CUT(DB_RESULT,'!',2)})
exten => _4!,n,Set(RWL_EA_busy=${CUT(DB_RESULT,'!',3)})
exten => _4!,n,Set(RWL_busy=${CUT(DB_RESULT,'!',4)})
exten => _4!,n,Set(RWL_EA_zeit=${CUT(DB_RESULT,'!',5)})
exten => _4!,n,Set(RWL_zeit=${CUT(DB_RESULT,'!',6)})
exten => _4!,n,Set(RWL_VE_zeit=${CUT(DB_RESULT,'!',7)})
exten => _4!,n,Set(RWL_EA_sofort=1)
exten => _4!,n,Set(RWL_sofort=${CALLERID(number)})
exten => _4!,n,SET(DB(RWL/${EXTEN:1})=${RWL_EA_sofort}!${RWL_sofort}!${RWL_EA_busy}!${RWL_busy}!${RWL_EA_zeit}!${RWL_zeit}!${RWL_VE_zeit})
exten => _4!,n,Playback(rufuml_an)
exten => _4!,n,SayDigits(${RWL_sofort})
exten => _4!,n,Wait(1)
exten => _4!,n,NoOp(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _4!,n,Hangup

Dies ist nur das Setzen und Löschen der RWL. Die Teile für das Ausführen fehlen - also nur ein Ansatz zum Basteln :)
 
Sehr nett aber ich glaube mir platzt gleich der Kopf. :)
 
Jetzt müsste man die Rufumleitung noch von aussen aktivieren bzw. deaktivieren können. Hm. Wahrscheinlich wäre es da das Beste, wenn man eine spezielle Nummer dafür hernehmen würde. Hat da jemand eine Idee? Sowas wie:

exten => 12345678,1,Answer
exten => 12345678,n,Authenticate(0815)

Dann müsste man mit DTMF irgendwie die Extension angeben für die man die Umleitung haben möchte und die Nummer an die umgeleitet werden soll. Kann man sowas hinbekommen? Für Lösungsansätze wäre ich sehr dankbar.
 
Habs hinbekommen mit:

Code:
exten => bla,n,Authenticate(0815)
exten => bla,n,Playback(welche-nummer)
exten => bla,n,Read(nummer)
exten => bla,n,Playback(wohin-umleiten)
exten => bla,n,Read(wohin)
exten => bla,n,Set(DB(ruml/${nummer})=${wohin})
exten => bla,n,Wait(1)
exten => bla,n,Playback(umleitung-aktiviert)
exten => bla,n,Hangup
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.