Rufumleitung mittels CLI

cherzberg

Mitglied
Mitglied seit
21 Mai 2006
Beiträge
239
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich möchte mit einem Script einiege SIP Extensions extern und/oder extern umleiten.

Ich habe es mit folgnden Befehl versucht:

asterisk -rx 'database put CFIM 159 022'

In der Datenbank wird auch dann der Wert 022 gespeichert. Nur leider interessiert dies meinen asterisk nicht. Wenn ich die Extension 159 anrufe, klinkelt diese. Es sollte doch aber die 022 klinkeln, oder?

Besten Dank und liebe Grüsse
Christian
 
Hi Guard-X,

besten Dank für die schnelle Antwort.
Hätte auch noch ein wenig suchen können. habe den beitrag dann auch gefunden. Sieht auch garnicht mal so kompliziert aus.

Meine extensions.conf ist da schon etwas komplizierter! Ich bin doch noch ein "Dummuser" und habe mir eine FreePBX hinstellen lassen. Da sind die extensions.conf etwas umfangreicher: :confused:

Ich finde leider noch nicht einmal den Teil wo meine SIP Geräte intern angewählt werden.

Liebe Grüsse
Christian
 
Hi X-Guard

Ich habe den Teil von meinem Wählplan gefunden und habe auch schon ein wenig probiert. Leider komme ich aber nicht weiter.

Es werden drei Variablen aus der DB gelesen.

1. CFU (war schon vorhanden)
2. CFB (war schon vorhanden)
3. CFIM (Ist von mir eingetragen worden)

Das funktioniert auch soweit.

Nun möchte ich aber wenn die Variable CFIM nicht leer ist eben genau diese Nummer wählen. Wenn diese dann nicht erreichbar oder besetzt ist soll wie bei der original extension weiterverfahren werden.

Teil der extensions.conf
Code:
[macro-exten-vm]
exten => s,1,Macro(user-callerid)

exten => s,n,Set(FROMCONTEXT=exten-vm)
exten => s,n,Set(VMBOX=${ARG1})
exten => s,n,Set(EXTTOCALL=${ARG2})
exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})})
exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})})
exten => s,n,Set(CFIMEXT=${DB(CFIM/${EXTTOCALL})})

#exten => s,n,Set(EXTTOCALL=${IF($[$["${CFIMEXT}"!=""]]|${CFIMEXT})

exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["foo${CFUEXT}"!="foo"]]?${RINGTIMER}:"")})
exten => s,n,Macro(record-enable,${EXTTOCALL},IN)

exten => s,n,NoOp(variable RT is '${RT}')
exten => s,n,NoOp(variable DIAL_OPTIONS is '${DIAL_OPTIONS}')
exten => s,n,NoOp(variable EXTTOCALL is '${EXTTOCALL}')

exten => s,n,Macro(dial,${RT},${DIAL_OPTIONS},${EXTTOCALL})
exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS})
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="NOANSWER"] & $["foo${CFUEXT}"!="foo"]]?docfu,1) ; check for CFU in use on no answer
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="BUSY"] & $["foo${CFBEXT}"!="foo"]]?docfb,1) ; check for CFB in use on busy
exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS})
exten => s,n,NoOp(Voicemail is '${VMBOX}')
exten => s,n,GotoIf($["${VMBOX}" = "novm"]?s-${DIALSTATUS},1) ; no voicemail in use for this extension
exten => s,n,NoOp(Sending to Voicemail box ${EXTTOCALL})
exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS})

; Try the Call Forward on No Answer / Unavailable number
exten => docfu,1,Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS})
exten => docfu,n,Return

; Try the Call Forward on Busy number
exten => docfb,1,Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS})
exten => docfb,n,Return

; Extensions with no Voicemail box reporting BUSY come here
exten => s-BUSY,1,NoOp(Extension is reporting BUSY and not passing to Voicemail)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

; Anything but BUSY comes here
exten => _s-.,1,Playtones(congestion)
exten => _s-.,n,Congestion(10)

Ich dachte mir, dass ich einfach die exttocal variable überschreiben muss. Das bekomme ich aber schon nicht hin.

Kannst Du mir da unter die Arme greifen?

Besten Dank und liebe Grüsse
Christian
 
Hallo,

ich habe jetzt meinen Fehler gefunden.
Die Richtige Zeile lautet jetzt:

exten => s,n,Set(EXTTOCALL=${IF($[${CFIMEXT}]?${CFIMEXT}:${EXTTOCALL}})

Der ganze Abschnitt lautet jetzt.

Code:
[macro-exten-vm]
exten => s,1,Macro(user-callerid)

exten => s,n,Set(FROMCONTEXT=exten-vm)
exten => s,n,Set(VMBOX=${ARG1})
exten => s,n,Set(EXTTOCALL=${ARG2})
exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})})
exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})})
exten => s,n,Set(CFIMEXT=${DB(CFIM/${EXTTOCALL})})

exten => s,n,Set(EXTTOCALL=${IF($[${CFIMEXT}]?${CFIMEXT}:${EXTTOCALL}})

exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["foo${CFUEXT}"!="foo"]]?${RINGTIMER}:"")})
exten => s,n,Macro(record-enable,${EXTTOCALL},IN)

exten => s,n,NoOp(variable EXTTOCALLz is '${EXTTOCALLz}')
exten => s,n,NoOp(variable RT is '${RT}')
exten => s,n,NoOp(variable DIAL_OPTIONS is '${DIAL_OPTIONS}')
exten => s,n,NoOp(variable EXTTOCALL is '${EXTTOCALL}')

exten => s,n,Macro(dial,${RT},${DIAL_OPTIONS},${EXTTOCALL})
exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS})
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="NOANSWER"] & $["foo${CFUEXT}"!="foo"]]?docfu,1) ; check for CFU in use on no answer
exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="BUSY"] & $["foo${CFBEXT}"!="foo"]]?docfb,1) ; check for CFB in use on busy
exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS})
exten => s,n,NoOp(Voicemail is '${VMBOX}')
exten => s,n,GotoIf($["${VMBOX}" = "novm"]?s-${DIALSTATUS},1) ; no voicemail in use for this extension
exten => s,n,NoOp(Sending to Voicemail box ${EXTTOCALL})
exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS})

; Try the Call Forward on No Answer / Unavailable number
exten => docfu,1,Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS})
exten => docfu,n,Return

; Try the Call Forward on Busy number
exten => docfb,1,Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")})
exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS})
exten => docfb,n,Return

; Extensions with no Voicemail box reporting BUSY come here
exten => s-BUSY,1,NoOp(Extension is reporting BUSY and not passing to Voicemail)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

; Anything but BUSY comes here
exten => _s-.,1,Playtones(congestion)
exten => _s-.,n,Congestion(10)

Natürlich habe ich jetzt wieder ein neues Problem da ich die Variable EXTTOCALL verändere. Bei internen UMleitungen ist dies kein Problem. Bei externen Umleitungen schon eher, da diese ja keine Mailbox bei uns haben und auch nicht aufgezeichnet werden können.

Hat jemand eine Idee?

Besten Dank
Christian
 
Kostenlos!

Statistik des Forums

Themen
248,900
Beiträge
2,304,501
Mitglieder
378,599
Neuestes Mitglied
Bone1104