Macro und Goto Verständnisfrage

magicamun

Neuer User
Mitglied seit
1 Aug 2006
Beiträge
53
Punkte für Reaktionen
0
Punkte
6
Code:
[macro-spam]
exten => s,1(spam),Set(MonitorName=voicespam-${STRFTIME(${EPOCH},GMT+1,%F-%X)})
exten => s,n,Set(MonitorNum=0000${MonitorName:10:8}${MonitorName:19:6})
exten => s,n,Monitor(wav,/var/lib/asterisk/voicespam/${MonitorName},m)
exten => s,n,Set(TIMEOUT(response(=60)))
exten => s,n,Set(Iteration=1)
exten => s,n,Answer
exten => s,n(intro),Background(/var/lib/asterisk/voicespam/intro)

exten => _XXXX,1,Set(GLOBAL(RLNAME)=""})
exten => _XXXX,n,Macro(dblookuppin, ${EXTEN})
exten => _XXXX,n,GotoIf($["${RLNAME}" = ""]?it:end)
exten => _XXXX,n(it),GotoIf($["${Iteration}" < "3"]?falsch:zuviele)
exten => _XXXX,n(falsch),Playback(/var/lib/asterisk/voicespam/falsche_pin)
exten => _XXXX,n,Set(Iteration=$[${Iteration} + 1])
exten => _XXXX,n,Goto(intro)
exten => _XXXX,n(zuviele),Playback(/var/lib/asterisk/voicespam/zuviele_falsche)
exten => _XXXX,n,Hangup
exten => _XXXX,n(end),Noop

exten => #,1,Playback(lutzsandra-danke)
exten => #,2,Hangup

exten => t,1,Goto(#,1) ; If no Pin is entered give up

exten => s,n(end),Noop

Hallo - in obigem Beispiel funz der "Goto(intro)" im Context _XXXX nicht - ich will im Prinzip wieder bei der Ansage aus s weitermachen - irgendwie stehe ich glaube ich auf dem Schlauch...
 
Wenn Du aus der extension _XXXX nach extension s springen willst, solltest Du das auch so angeben - denn das sind für Asterisk zwei unterschiedliche extensions, die innerhalb des gleichen Contextes stehen. Deshalb funktioniert das mit dem Label so nicht.
 
Das geht aber auch nicht :

Code:
...
exten => _XXXX,n,Goto(s,intro)
....

es kommt dann :

Code:
    -- Executing [5684@default:6] Set("SIP/32-083110f8", "Iteration=2") in new stack
    -- Executing [5684@default:7] Goto("SIP/32-083110f8", "s|intro") in new stack
    -- Goto (default,s,7)

wobei default definitiv falsch ist ...
was muß ich angeben im Goto ?

mannonmann - wald bäume ich seh nix .....

so gehts :
...
Goto(macro-spam,s,intro)
...
danke

so einen tip brauche ich noch - und zwar lande ich nach MacroExit() nicht da wo ich hin will - sondern im timeout - hier nochmal der komplette auszug - ich hätte erwartet, daß nach eingabe der korrekten pin ich im "mainmenu" weitermache ... ich lande aber in der Timeout - Extension:


Code:
[test-spam]
exten => 198,1,Macro(spam)
exten => 198,n,Goto(mainmenu,205,1)
exten => 198,n,Hangup

[macro-spam]
exten => s,1(spam),Set(MonitorName=voicespam-${STRFTIME(${EPOCH},GMT+1,%F-%X)})
exten => s,n,Set(MonitorNum=0000${MonitorName:10:8}${MonitorName:19:6})
exten => s,n,Monitor(wav,/var/lib/asterisk/voicespam/${MonitorName},m)
exten => s,n,Set(TIMEOUT(response(=60)))
exten => s,n,Set(Iteration=1)
exten => s,n,Answer
exten => s,n(intro),Background(/var/lib/asterisk/voicespam/intro)

exten => _XXXX,1,Set(GLOBAL(RLNAME)=""})
exten => _XXXX,n,Macro(dblookuppin, ${EXTEN})
exten => _XXXX,n,GotoIf($["${RLNAME}" = ""]?it:end)
exten => _XXXX,n(it),GotoIf($["${Iteration}" < "3"]?falsch:zuviele)
exten => _XXXX,n(falsch),Playback(/var/lib/asterisk/voicespam/falsche_pin)
exten => _XXXX,n,Set(Iteration=$[${Iteration} + 1])
exten => _XXXX,n,Goto(macro-spam,s,intro)
exten => _XXXX,n(zuviele),Playback(/var/lib/asterisk/voicespam/zuviele_falsche)
exten => _XXXX,n,Hangup
exten => _XXXX,n(end),MacroExit()

exten => i,1,Set(Iteration=$[${Iteration} + 1])
exten => i,n,Goto(_XXXX,falsch)

; If no Pin is entered give up
exten => t,1,Playback(lutzsandra-danke)
exten => t,2,Hangup

Code:
    -- Executing [5641@default:3] GotoIf("SIP/32-08309840", "0?it:end") in new stack
    -- Goto (default,5641,10)
    -- Executing [5641@default:10] MacroExit("SIP/32-08309840", "") in new stack
    -- [COLOR="Red"]Timeout on SIP/32-08309840[/COLOR]
  == CDR updated on SIP/32-08309840
    -- Executing [t@default:1] Goto("SIP/32-08309840", "#|1") in new stack
    -- Goto (default,#,1)
    -- Executing [#@default:1] Playback("SIP/32-08309840", "lutzsandra-danke") in new stack
    -- Playing 'lutzsandra-danke' (language 'de')
    -- Executing [#@default:2] Hangup("SIP/32-08309840", "") in new stack
  == Spawn extension (default, #, 2) exited non-zero on 'SIP/32-08309840'
[Nov 12 20:07:06] WARNING[16038]: pbx.c:1755 pbx_extension_helper: No application 'SetCIDNum' for extension (default, h, 1)
  == Spawn extension (default, h, 1) exited non-zero on 'SIP/32-08309840'
Edit Guard-X: Bitte beachte die Forumregeln und nutze die "Ändern" Funktion!
 
schön schön - es hat was mit Background zu tun - aber so wirklich einleuchtend ist das nicht. Gibt es eine Möglichkeit den Timeout-Context nach erfolgreicher Pin-eingabe zu deaktivieren ?
 
warum nimmst Du nicht READ und das ganze ohne macro
 
Read ? - weil ichs nicht kannte - fang doch grad erst an
Macro ? weil ichs wiederverwenden will - ohne macro lief das ganze ja schon sehr zufridenstellend - ich wollte es nur nict zweimal hinschreiben - wäre allerdings schneller gewesen ....
Ich finde die Macro-Idee immernoch gut - aber read schaue ich mir jetzt auch mal an.
 
Fang doch erstmal mit einfachen Dingen an - da sparst Du Dir eine ganze Menge Frust. Immer schön der Reihe nach arbeiten und immer vorher die Doku lesen.
 
bis ich den kram zu einem Macro machen wollte, war es einfach genug für mich - und ich bin mit ein wenig suchen und lesen recht weit gekommen fand ich.

Ich halte die Funktionsweise im Macro mit MacroExit und Background im übrigen für einen Fehler und nicht für ein Feature - ich werde es wohl wieder direkt im Kontext codieren.
 
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.