[gelöst] Rufumleitung per Tastendruck

Jarris

Neuer User
Mitglied seit
30 Sep 2008
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
ich nochmal ^^

ich würde bei uns gerne in die laufende Asteriskanlage eine Rufumleitung auf andere mitarbeite bei abwesenheit einbauen. diese sollte man möglichst einfach per tasten kombination auf dem telefonaktivieren und deaktivieren
(wenn aktiv sollte es auch auf dem display angezeigt werden)

hat jemand anregungen, verweise oder direckte vorschläge?

zur info:
Asteriskversion ist 1.2 (unter linux)
telefon ist Grandstream GXP 2000, sip-client


Danke schonmal im vorraus

lg. Jarris
 
Zuletzt bearbeitet:

Jarris

Neuer User
Mitglied seit
30 Sep 2008
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
ok, ich bin der anleitung gefolgt und hab ein fatales problem ^^

die umleitungs nummer in die DB zu schreiben klapt super aber die vorgestellte abfrage bei einem eingehenden anruf funktioniert nicht -.-

sieht in etwa so aus :

Code:
exten => _xxxxxxx,1,Set(num = ${EXTEN:-1})
exten => _xxxxxxx,n,Set(rufumlnum = ${DB(rufuml/${num})}) 
exten => _xxxxxxx,n,GotoIF($[ ${rufumlnum} = 0 ]?10:20)
als CLI ausgabe kommt dann:

Code:
-- Executing Set("SIP/xxxx", "num = 4") in new stack
-- Executing Set("SIP/xxxx", "rufumlnum = ") in new stack
-- Executing GotoIf("SIP/xxxx", "0?5:10") in new stack
warum wird der variable "rufumlnum" kein wert aus der DB zugewiesen
(und da ist auf jeden fall ein eintrag für DB(rufuml/4) )

danke schonmal für jegliche anregungen !

lg. Jarris
 
A

anhalter42

Guest
Oh, da bin ich offensichtlich nicht der Einzige, der noch auf 1.2 läuft... Egal. Zur Frage:

bei mit lautet die fragliche Zeile

Code:
exten => _*21*.,n,Set(DB(CFW/${CALLERID(num)}) = ${EXTEN:4})
Das "Set (variablenname = DB(usw.))" ist, glaube ich, erst ab Asterisk 1.4 gefordert. Die Abfrage würde ich sowieso per ausgelagertem Makro machen:

input: die Extension, die ursprüinglich angerufen wurde
output: eine Extension, die das Ende einer Rufumleitung(-skette) ist

Code:
exten => s,1,Set(FINAL_EXT=${ARG1})
exten => s,n,NoOP(${DB_EXISTS(CFW/${FINAL_EXT})})
exten => s,n,Set(i=1)
exten => s,n,While($[${i} < 6])

exten => s,n,GotoIf($[${DB_EXISTS(CFW/${FINAL_EXT})} = 0]?EndOfChain)
exten => s,n,Set(FINAL_EXT=${DB(CFW/${FINAL_EXT})})
exten => s,n,GotoIf($[${FINAL_EXT} = ""]?EndOfChain)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile()
exten => s,n,NoOp("Call forwarding chain is too long (${i})")
exten => s,n(EndOfChain),GotoIf($[${ARG1} = ${FINAL_EXT}]?EndOfCFWMacro)
exten => s,n,... noch anderes Zeugs ...
exten => s,n(EndOfCFWMacro),NoOp("End Of Macro")
Das Makro wird dann kurz vor dem Durchstellen aufgerufen:

Code:
exten => s,n,Macro(CFwdPruefung, ${CALLERID(num)})
und dann das eigentliche "Durchstellen" natürlich mit ${FINAL_EXT}
 

Jarris

Neuer User
Mitglied seit
30 Sep 2008
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
mir geht es wirklich nur um das auslesen der DB

Code:
exten => _xxxxxxx,n,Set(rufumlnum = ${DB(rufuml/${num})})
was stimmt daran nicht ???
 
A

anhalter42

Guest
Ermm. Du hast recht, die entscheidende Zeile zum Auslesen sieht bei mir genauso aus:

Code:
exten => s,n,Set(FINAL_EXT=${DB(CFW/${FINAL_EXT})})
Da muss ich passen.

Auch wenns doof klingt: Klein-/Großschreibung variieren? Länge des Family-Begriffs?
 

doxon

Mitglied
Mitglied seit
11 Jun 2006
Beiträge
781
Punkte für Reaktionen
0
Punkte
0
evtl die Leerzeichen bei dem =-Zeichen?
Andere Unterschiede kann ich auch nicht feststellen.
 

Burmann

Mitglied
Mitglied seit
16 Feb 2005
Beiträge
372
Punkte für Reaktionen
0
Punkte
0
was sagt * an der CLI bei "database show rufuml" und in der Shell bei "asterisk -rx 'database show' |grep rufuml"?
 

Jarris

Neuer User
Mitglied seit
30 Sep 2008
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
die rufumleitung läuft nun einwandfrei ^^

jedoch wird eine aktive rufumleitung noch nicht auf dem display angezeigt,
generel weiß ich nicht wie ich etwas auf dem telefon anzeigen lasse :(

könnte mir da jemand helfen ?

lg. Jarris
 

Guard-X

Aktives Mitglied
Mitglied seit
14 Mai 2005
Beiträge
2,497
Punkte für Reaktionen
0
Punkte
0
Per sipsak eine Message auf Display schicken (geht bei snom aber m.w. nicht beim GXP 2000).
 

doxon

Mitglied
Mitglied seit
11 Jun 2006
Beiträge
781
Punkte für Reaktionen
0
Punkte
0

Jarris

Neuer User
Mitglied seit
30 Sep 2008
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
es lag wirklich nur an den leerzeichen -.-
übrigens danke !


Per sipsak eine Message auf Display schicken (geht bei snom aber m.w. nicht beim GXP 2000).
dann bringt mir das leider wenig ^^
aber es muss doch auch für die grandsteams irgendwie möglich sein, oder ?

lg. Jarris