Via Goto() in ein Macro(${ARG1}) springen

guidoquiram

Neuer User
Mitglied seit
25 Jun 2004
Beiträge
50
Punkte für Reaktionen
0
Punkte
0
Hi, ich hab' versucht via Google, voip-info.org etc. eine Lösung zu finden, doch leider vergeblich... wie kann ich bitte mittels Goto() in ein Macro springen und ${ARG1} übergeben? Dialplan sieht in etwa so aus (für "Kurzwahl" 50)

[macro-call]
exten => s,1,Dial,${ARG1}|60|tT
...

exten => _50,1,Goto(macro(call,SIP/0049xyz@SIPprovider),0049xyz,1)

Auf der Konsole ist dann zu lesen (31 ist abgehendes SIP-Phone):
-- Executing Goto("SIP/31-081608e0", "macro(call|SIP/0049xyz@SIPprovider)|0049xyz|1") in new stack
-- Goto (macro(call,SIP/0049xyz@SIPprovider),2147483647)
Feb 11 18:32:43 WARNING[3412]: pbx.c:2357 __ast_pbx_run: Channel 'SIP/31-081608e0' sent into invalid extension 'SIP/0049xyz@SIPprovider)' in context 'macro(call', but no invalid handler

Asterisk interpretiert gemäss der Goto() Definition Goto(context,extension,priority) den context als 'macro(call' also nimmt die Klammer nicht wahr sondern sucht das erste Komma. Wie kann ich Asterisk sagen, dass der context gleich 'macro(call,SIP/0049xyz@SIPprovider)' lautet?

Vielen Dank, Guido
 
Hi, warum willst Du das denn machen?
mit

Macro(call,SIP/0049xyz@SIPprovider)

bist du doch schon an der richtigen Stelle!!


Also:

Code:
exten => _50,1,Macro(call,SIP/0049xyz@SIPprovider)
 
Hi, danke für die flotte Reaktion. So funktioniert das natürlich; völlig richtig. Mein Plan ist - ich hätte es besser darstellen sollen - dass ich via Goto() eine Art LCR aufbaue (finde leider gerade den Link hier im Forum nicht), und zwar nach dem Schema:
exten => _0041,1,Goto(Macro(call,ProviderEins)...)
exten => _0049,1,Goto(Macro(call,ProviderZwei)...)
exten => _0034,1,Goto(Macro(call, ProviderDrei)...)
wobei mein Macro call das ganze Procedere mit Leitung besetzt, Fehler etc. regelt. Idee?

Danke, Guido
 
das ist doch aber auch kein problem:

Code:
exten => _0041X.,1,Macro(call,ProviderEins,${EXTEN})
exten => _0049X.,1,Macro(call,ProviderZwei,${EXTEN})
exten => _0034X.,1,Macro(call,ProviderDrei,${EXTEN})

oder

Code:
exten => _0041X.,1,Macro(ProviderEins,${EXTEN})
exten => _0049X.,1,Macro(ProviderZwei,${EXTEN})
exten => _0034X.,1,Macro(ProviderDrei,${EXTEN})
 
Es ist keine gute Idee in ein Macro mit GoTo zu springen.
Die Variablenübergabe ist auch kein Problem da alle Variablen in einem Channel eh global sind.
Du brauchst aus einem Macro auch nicht wieder zurückzukommen sondern kannst auch in einem Macro HangUp machen.
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,856
Beiträge
2,302,986
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo