Anrufweiterleitung mit DBPut

Mysterious

Neuer User
Mitglied seit
3 Nov 2005
Beiträge
158
Punkte für Reaktionen
0
Punkte
16
Hi, würde mir gerde eine xtension einrichten die mir bei Anruf ne AWS von Nebenstelle 30 auf 88 schaltet. Leider klappt das irgendwie net so ganz... hab mich auch schon durch voip.org gewühlt aber finde da nix richtig passendes für meine Zwecke. Weiß jemand rat was ich hier falsch mache? Soll halt ne statische AWS sein um Sie späte rauf ne Kurzwaltaste zu legen...

Code:
[uml]
exten => 21,1,Answer()
exten => 21,n,Set(DB(CF/30=88)
exten => 21,n,SayDigits(88)
exten => 21,n,Hangup()

exten => 22,1,Answer()
exten => 22,n,DBdel(CF/30)
exten => 22,n,Playback(auth-thankyou)
exten => 22,n,Hangup()
 
Hmm..klappt leider nicht...passiert einfach gar nix...

Villeicht liegt es daran das ich Asterisk 1.4 einsetze? SInd da die Commands anderst?
 
zeig doch mal die Ausgabe der CLI wenn Du die 21 wählst. Die von mir genannte Syntax funktioniert bei 1.4 problemlos.

Daß Du den Kontext in den Gerätkontext entsprechend eingebunden hast, setze ich einfach mal als gegeben voraus :wink:
 
Nein, betateilchen, bei mir, 1.4.13 gehen die so auch nicht. Es gibt wohl DBdel nicht mehr.

Ich habe es so gelöst:

Code:
[rufumleitung]
;Rufumleitung an
exten => _*.,1,NoOp(Rufumleitung ein)
exten => _*.,n,Answer
exten => _*.,n,Set(DB(umleitung/${CALLERID(number)})=${EXTEN:1})
exten => _*.,n,Set(NUM=${DB(umleitung/${CALLERID(number)})})
exten => _*.,n,Wait(1)
exten => _*.,n,SayNumber(${NUM})
exten => _*.,n,SetMessage(Rufumleitung an ${NUM})
exten => _*.,n,PlayBack(auth-thankyou)
exten => _*.,n,Hangup

;Rufumleitung aus
exten => **,1,NoOp(Rufumleitung aus)
exten => **,n,Answer
exten => **,n,Wait(1)
exten => **,n,NoOp(${DB_DELETE(umleitung/${CALLERID(number)})})
exten => **,n,SetMessage()
exten => **,n,PlayBack(auth-thankyou)
exten => **,n,Hangup

SetMessage geht nur mit SCCP, der neuesten Version, zeigt den Text dann auf dem Phone an.
 
Primär geht es doch erstmal darum, einen Wert in die Datenbank überhaupt mal reinzukriegen... Laut obiger Aussage passiert überhaupt nichts - das deutet eher auf einen Logikfehler als auf einen Syntaxfehler.

Daß es DBdel nicht mehr gibt, ist kein Geheimnis. Das steht in der Asterisk-Doku auch explizit drin.

Asterisk func DB_DELETE: Replaced the deprecated DBDel() application in Asterisk 1.4
 
Hmmm...werd das mal alles nochmal durchprobieren und mein Log posten. Derzeit hab ich es jetzt so gelöst das ich über ne Extension ne Variable erzeuge und diese bei jedem Anruf auswerte. Ist Sie gesetzt wird ein CALL DEFLECT auf die externe Nummer über chan_capi ausgeführt ist sie nicht gesetzt gehts in den normalen Kontexten weiter :-)
Problem derzeit. Starte ich den Asterisk neu sind die Variablen wech...gibts da ne Möglichkeit diese auch bei einem komplette Neustart zu erhalten bzw. beim start sofort wieder einzutragen?
 
Es gibt keine Möglichkeit, die "alten" Variablen nach einem Asterisk Neustart wieder zur Verfügung zu haben. Es sei denn, Du schreibst sie in die Datenbank - aber genau das ist ja Dein Problem :mrgreen:

Ich verstehe nicht, warum Du uns hier immer noch keine CLI Ausgabe gepostet hast, was auf Deinem Asterisk eigentlich passiert, wenn Du das mit der Datenbank versuchst :noidea: da hätte man vielleicht Deinen Fehler längst schon gefunden.
 
@betateilchen

Hier der Gewünschte Log:

Code:
asterisk*CLI>
    -- Executing [21@31:1] Dial("SIP/31-b6810540", "SIP/21@7641789|55|R") in new stack
    -- Called 21@7641789
    -- SIP/7641789-082126b0 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [21@31:2] Set("SIP/31-b6810540", "DB(CF/30)=88") in new stack
    -- Executing [21@31:3] SayDigits("SIP/31-b6810540", "88") in new stack
    -- <SIP/31-b6810540> Playing 'digits/8' (language 'de')
    -- <SIP/31-b6810540> Playing 'digits/8' (language 'de')
    -- Executing [21@31:4] Hangup("SIP/31-b6810540", "") in new stack
  == Spawn extension (31, 21, 4) exited non-zero on 'SIP/31-b6810540'
    -- Executing [22@31:1] Dial("SIP/31-b6814850", "SIP/22@7641789|55|R") in new stack
    -- Called 22@7641789
    -- SIP/7641789-082126b0 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [22@31:2] DBdel("SIP/31-b6814850", "CF/30") in new stack
[Nov 18 18:38:54] WARNING[16053]: app_db.c:119 del_exec: The DBdel application has been deprecated in favor of the DB_DELETE dialplan function!
    -- DBdel: family=CF, key=30
    -- Executing [22@31:3] Playback("SIP/31-b6814850", "auth-thankyou") in new stack
    -- <SIP/31-b6814850> Playing 'auth-thankyou' (language 'de')
    -- Executing [22@31:4] Hangup("SIP/31-b6814850", "") in new stack
  == Spawn extension (31, 22, 4) exited non-zero on 'SIP/31-b6814850'
asterisk*CLI>

Hilft das weiter?
 
OK, als erstes solltest Du mal die Answer() aus Deinem Dialplan entfernen.
Dann bei der extension 22 die Funktion DB_DELETE einsetzen anstatt DBdel.

Es ist übrigens nicht so, daß gar nichts passiert - der Wert wird laut log korrekt in die Datenbank geschrieben. Hast Du denn mal nachgesehen, was nach einem Anruf auf die 21 in der Datenbank steht?

Das einzige Problem momentan ist eigentlich, daß der Wert bei Anruf auf 22 nicht gelöscht wird.
 
OK, hab das answer mal rausgenimmen und den DB_DELETE Eintrag korrigiert.
Also so:
Code:
[uml]
exten => 21,1,Set(DB(CF/30)=88)
exten => 21,n,SayDigits(88)
exten => 21,n,Hangup()

exten => 22,n,DB_DELETE(CF/30)
exten => 22,n,Playback(auth-thankyou)
exten => 22,n,Hangup()

Die Konsole zeigt nun folgendes:
Code:
    -- Executing [21@30:1] Dial("SIP/30-b6802000", "SIP/21@7641789|55|R") in new stack
    -- Called 21@7641789
    -- SIP/7641789-082126b0 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [21@30:2] Set("SIP/30-b6802000", "DB(CF/30)=88") in new stack
    -- Executing [21@30:3] SayDigits("SIP/30-b6802000", "88") in new stack
    -- <SIP/30-b6802000> Playing 'digits/8' (language 'de')
    -- <SIP/30-b6802000> Playing 'digits/8' (language 'de')
    -- Executing [21@30:4] Hangup("SIP/30-b6802000", "") in new stack
  == Spawn extension (30, 21, 4) exited non-zero on 'SIP/30-b6802000'
    -- Executing [22@30:1] Dial("SIP/30-b680efb8", "SIP/22@7641789|55|R") in new stack
    -- Called 22@7641789
    -- SIP/7641789-082126b0 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- Executing [22@30:2] DBdel("SIP/30-b680efb8", "CF/30") in new stack
    -- DBdel: family=CF, key=30
    -- Executing [22@30:3] Playback("SIP/30-b680efb8", "auth-thankyou") in new stack
    -- <SIP/30-b680efb8> Playing 'auth-thankyou' (language 'de')
    -- Executing [22@30:4] Hangup("SIP/30-b680efb8", "") in new stack
  == Spawn extension (30, 22, 4) exited non-zero on 'SIP/30-b680efb8'

Wähle ich 22 kommt eben die "saydigits" Ansage und danach "The person you are calling is not available... Also so wie ich das einschätze erkennter den Befehl net und versucht einen Call abzusetzen statt einem DB-Eintrag...

Asterisk DB enthält folgende Werte:

Code:
/CF/30                                            : 88
/SCCP/SEP001B54CA00D1                             : dnd=0,cfwdall=,cfwdbusy=
/SCCP/SEP001BD40B6F5E                             : dnd=0,cfwdall=,cfwdbusy=
/SCCP/SEP001BD432F55E                             : dnd=0,cfwdall=,cfwdbusy=
/SCCPM/SEP001B54CA00D1                            : Anrufbeantworter eingeschaltet
/SIP/Registry/30                                  : 192.168.100.201:7446:3600:30:sip:[email protected]:7446;rinstance=daf229d4c0f8b6fa
/dundi/secret                                     : XXXXXXXXXXXX
/dundi/secretexpiry                               : 1195410131

[/code]

oder kann es daran liegen das die Extension 88 keinem Gerät zugeordnet ist sondern nur die Extension des AB?

Also zum Verständniss: Ich rufe 88 an und bekomme die Mailbox dran. Folglich müsste ich ja beim setzen der AWS wenn ich nun auf der 30 anrufe direkt die Mailbox dran bekomme..oder hab ich da nen Denkfehler?
 
Zuletzt bearbeitet:
mich irritiert immer noch das hier:

Code:
    -- Executing [21@30:1] Dial("SIP/30-b6802000", "SIP/21[COLOR="Red"]@7641789[/COLOR]|55|R") in new stack
    -- Called 21@7641789
    -- SIP/7641789-082126b0 is circuit-busy

Zeig mal Deine extensions.conf, wie Du den Kontext [uml] eingebunden hast. Für mich sieht das fast so aus, als würde die 21 erstmal über einen Provider rausgewählt.
 
Ich häng hier mal meine ganze extensions.conf an...( ich weiß die ist noch in nem recht frühen betastadium ;-) )
Code:
[general]
static = yes
writeprotect = no
;-----------------------------------------------------------------------------------
[macro-setCallerName]
exten => s,1,noOp(set CallerName for ${ARG1})
exten => s,n,AGI(get_callername.php|${CALLERID(num)})

;--------------------------Anrufweiterleitung über chan_capi deflect Funktion -----

[uml]
exten => 21,1,Set(DB(CF/30)=88)
exten => 21,n,SayDigits(88)
exten => 21,n,Hangup()

exten => 22,n,DB_DELETE(CF/30)
exten => 22,n,Playback(auth-thankyou)
exten => 22,n,Hangup()

[deflect]

exten => 66,1,Answer()
exten => 66,2,GotoIf($[${DEFLECT}=0]?ja:nein)
exten => 66,3(ja),Set(GLOBAL(DEFLECT)=1)
exten => 66,4,Playback(aws_ein)
exten => 66,5,SetMessage(Rufumleitung zu Juergen eingeschaltet)
exten => 66,6,HangUp

exten => 66,7(nein),Set(GLOBAL(DEFLECT)=0)
exten => 66,8,SetMessage()
exten => 66,9,Playback(aws_aus)
exten => 66,10,HangUp


;-------------------------- Mailbox System ------------------------------------------
[mailbox_ein_aus]
exten =>25,1,Answer()
exten =>25,2,GotoIf($[${AWS}=0]?ja:nein)
        ;-----------------Mailbox einschalten----------------------------------------
exten =>25,3(ja),Set(GLOBAL(AWS)=1)
exten =>25,4,Playback(abein)
exten =>25,5,SetMessage(Anrufbeantworter eingeschaltet)
exten =>25,6,HangUp
        ;-----------------Mailbox ausschalten ---------------------------------------
exten =>25,7(nein),Set(GLOBAL(AWS)=0)
exten =>25,8,Playback(abaus)
exten =>25,9,SetMessage()
exten =>25,10,HangUp


[mailbox]
;------------Die zentrale Mailbox -------------------------------------
exten => 88,1,Answer()
exten => 88,n,wait,1
exten => 88,n,voicemailMain,s100
exten => 88,n,Hangup

; ----------------------Lokale Endgeräte---------------------------------------------

[lokal]

exten => 12,1,NoCDR
exten => 12,2,Dial,SCCP/${EXTEN}|55|Ttr

exten => 13,1,NoCDR
exten => 13,2,Dial,SCCP/${EXTEN}|55|Ttr

exten => 14,1,NoCDR
exten => 14,2,Dial,SCCP/${EXTEN}|55|Ttr



;------------------------Ausgehende Calls --------------------------------

[sipgate_out]
exten => _0900.,1,Dial(CAPI/ISDN1/999999:${EXTEN})
exten => _11.,1,Dial(CAPI/ISDN1/999999:${EXTEN})
exten => _00.,1,Dial(CAPI/ISDN1/999999:${EXTEN})
exten => _X.,1,Dial,SIP/${EXTEN}@7641789|55|R
exten => _0.,1,Dial,SIP/${EXTEN}@7641789|55|R
exten => _ZXX.,1,Dial,SIP/0049761${EXTEN}@7641789|55|R

;[capi-in]
;exten=> 999999,1,Macro(setCallerName|${CALLERID(num)})
;exten=> 999999,n,Dial,SCCP/12|12|r
;exten=> 999999,n,Dial,SCCP/12&SCCP/13|10|r
;exten=> 999999,n,Dial,SCCP/12&SCCP/14|10|r
;exten=> 999999,n,Goto,1
;exten=> 999999,n,Goto,r-${DIALSTATUS}|1



;---------------------------Anrufe vom ISDN Anschluss --------------------------------------
[capi-in]

exten => 999999,1,GotoIf($[${DEFLECT}=1]?ja1:nein1)
exten => 999999,2(ja1),capicommand(deflect,00491726100381)


;------------AB ein oder ausgeschaltet------------------------------------------------------
exten => 999999,3(nein1),Answer
exten => 999999,4,GotoIf($[${AWS}=1]?ja2:nein2)

exten => 999999,5(ja2),Goto,r-mailbox|1
;---------------Endgeräte klingeln drei mal, dann ab in die Warteschleife-------------------
exten => 999999,6(nein2),Dial,SCCP/12&SCCP/13&SCCP/14|15|r
exten=> 999999,n,Macro(setCallerName|${CALLERID(num)})

;-------------------zeitgesteuerte Sprünge zu den Warteschleifen ---------------------------
exten => 999999,n,GotoIfTime(0:00-11:59|*|*|*?90)
exten => 999999,n,GotoIfTime(12:00-16:59|*|*|*?100)
exten => 999999,n,GotoIfTime(17:00-23:59|*|*|*?110)


;-----------------------arteschleife Morgends ----------------------------------------------
exten => 999999,90,Queue(warteschleife_morgends)


;----------------------Warteschleife Mittags -----------------------------------------------
exten => 999999,100,Queue(warteschleife_mittags)


;-----------------------Warteschleife Abends------------------------------------------------
exten => 999999,110,Queue(warteschleife_abends)


;-----------------Zeitgesteuerte Sprünge zur Mailbox ------ --------------------------------
exten => r-mailbox,1,GotoIfTime(0:00-11:59|*|*|*?10)
exten => r-mailbox,n,GotoIfTime(12:00-16:59|*|*|*?20)
exten => r-mailbox,n,GotoIfTime(17:00-23:59|*|*|*?30)

exten => r-mailbox,10,Playback(mailbox_morgends)
exten => r-mailbox,n,wait,2
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp

exten => r-mailbox,20,Playback(mailbox_mittags)
exten => r-mailbox,n,wait,2
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp

exten => r-mailbox,30,Playback(mailbox_abends)
exten => r-mailbox,n,wait,2
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp






;----------------Anrufe auf der Sipgate Rufnummer-----------------------------------
[ankommend]
exten => 7641789,1,SetCalledParty(7641789)
;------------AB ein oder ausgeschaltet-----------------------------------------------
exten => 7641789,2,GotoIf($[${AWS}=1]?ja:nein)

exten => 7641789,3(ja),Goto,r-mailbox|1
;---------------Endgeräte klingeln drei mal, dann ab in die Warteschleife------------
exten => 7641789,4(nein),Dial,SIP/30|15|r
;----------------zeitgesteuerte Sprünge zu den Warteschleifen------------------------
exten => 7641789,n,GotoIfTime(0:00-11:59|*|*|*?90)
exten => 7641789,n,GotoIfTime(12:00-16:59|*|*|*?100)
exten => 7641789,n,GotoIfTime(17:00-23:59|*|*|*?120)
;------------------------------------------------------------------------------------

;----------------Warteschleife Morgends----------------------------------------------
exten => 7641789,90,Queue(warteschleife_morgends)

;----------------Warteschleife Mittags-----------------------------------------------
exten => 7641789,100,Queue(warteschleife_mittags)

;----------------Warteschleife Abends------------------------------------------------
exten => 7641789,120,Queue(warteschleife_abends)

;------------------------------------------------------------------------------------

;-----------------Zeutgesteuerte Sprünge zur Mailbox --------------------------------
exten => r-mailbox,1,GotoIfTime(0:00-11:59|*|*|*?10)
exten => r-mailbox,n,GotoIfTime(12:00-16:59|*|*|*?20)
exten => r-mailbox,n,GotoIfTime(17:00-23:59|*|*|*?30)

exten => r-mailbox,10,Playback(mailbox_morgends)
exten => r-mailbox,n,wait,3
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp

exten => r-mailbox,20,Playback(mailbox_mittags)
exten => r-mailbox,n,wait,3
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp

exten => r-mailbox,30,Playback(mailbox_abends)
exten => r-mailbox,n,wait,3
exten => r-mailbox,n,voicemail,s100
exten => r-mailbox,n,HangUp


;---Context Endgerätespezifisch------------------------------------------------------

[default]
include => lokal

[12]
include => lokal
include => mailbox
include => sipgate_out
include => mailbox_ein_aus
include => deflect

[13]
include => lokal
include => mailbox
include => sipgate_out
include => mailbox_ein_aus
include => deflect

[14]
include => lokal
include => mailbox
include => sipgate_out
include => mailbox_ein_aus
include => deflect

[30]
include => lokal
include => mailbox
include => sipgate_out
include => mailbox_ein_aus
include => deflect
include => uml

[31]
include => lokal
include => mailbox
include => sipgate_out
include => mailbox_ein_aus
include => deflect
include => uml

[hints]
exten=>11,hint,SCCP/11
exten=>13,hint,SCCP/13
exten=>14,hint,SCCP/14
 
dacht ich es mir doch :mrgreen:

Code:
exten => _X.,1,Dial,SIP/${EXTEN}@7641789|55|R

Da wird die 21 und die 22 zuerstmal über Sipgate rausgewählt, weil dieses Pattern zuerst gematcht wird.

Du hast mehrere logische Fehler in Deinem Dialplan, und das zu entwurschteln geht nur durch konsequente Neuplanung.
 
Hmmm...naja das Durcheinander kommt vom vielen Probieren und erweitern. Werd das mal bissl strukturierter aufbauen. Was würdest du ändern umdas ganze sinnvoller zu gestalten? Also nur Anhaltspunkte bzw wie ich solche extensions wie die 21 am besten anlege?
 
Es geht nicht darum, wie Du sowas anlegst. Sondern darum, wie Du Deinen Wählplan grundsätzlich strukturierst. Einfach rumprobieren hilft da nicht wirklich weiter, denn dann passieren einfach solche Dinge wie jetzt bei Dir, daß sich extensions durch Pattern einfach überschneiden. Sowas muß man vorher planen.

Im einfachsten Fall müßtest Du jetzt erstmal dafür sorgen, daß alle Pattern die Du in sipgate_out hast, mindestens 3 Stellen lang sind. Damit vermeidest Du, daß zweistellige (interne) Nummern wie 21, 22, oder 88 auch über sipgate rausgewählt werden.
 
Kostenlos!

Zurzeit aktive Besucher

Statistik des Forums

Themen
248,541
Beiträge
2,293,859
Mitglieder
378,048
Neuestes Mitglied
Manfred Grill