Auch wenn ich es bislang nicht gebraucht habe, war ich doch überrascht, dass Asterisk "standardmäßig" keine SIP-URIs wählen kann. Es wird alles ab dem @-Zeichen abgeschnitten und (in meinem Fall) an den mISDN-Channel übergeben. Logischerweise kann aber ISDN damit wenig anfangen.
Auf http://macnugget.org/projects/asterisk/page7 hab ich dann ein Beispiel gefunden, welches quasi einen URI-Check der gewählten Rufnummer durchführt.
Also hab ich den Code Mal testweise in meine extensions.conf eingebaut. Durch das Vorwählen des "*" sollen dabei Komplikationen während des "normalen" Betriebs ausgeschlossen werden.
Leider haut es nicht hin, wie nachfolgende Ausgabe am CLI belegt.
Zunächst vermute ich, dass der übergebene $ mit dem Anhängsel ;user=phone zu Problemen führt. Jedoch konnte ich Asterisk weder mit usereqphone=no noch mit einer anderen Variable dazu überreden dieses Anhängsel wegzulassen. Schlussendlich findet er wohl deshalb auch noch den host sip.goober.com;user=phone nicht. Selbstredend, dass in der sip.conf unter [general] srvlookup=yes gesetzt ist.
Hat jemamd eine Idee wie man * dieses Anhängsel wegbekommt? Nur um zu schauen, ob das Makro dann durchläuft.
--edit--
OK, hab das mit user=phone gefunden. Ich hatte entsprechende Check-Box auf dem Snom-Telefon aktiviert. Schäm...
Und goober-Accounts scheinen nicht von ausserhalb zu erreichen zu sein...
Auf http://macnugget.org/projects/asterisk/page7 hab ich dann ein Beispiel gefunden, welches quasi einen URI-Check der gewählten Rufnummer durchführt.
Also hab ich den Code Mal testweise in meine extensions.conf eingebaut. Durch das Vorwählen des "*" sollen dabei Komplikationen während des "normalen" Betriebs ausgeschlossen werden.
Code:
[macro-uridial]
;Script-Konstanten
MYDOMAIN => 192.168.0.121
MYFQDN => 192.168.0.121
exten => s,1,NoOp(Outbound SIP URI call ${ARG1})
exten => s,2,SetCIDNum(089123456)
exten => s,3,Dial(SIP/${ARG1})
exten => s,4,Congestion()
[sip-uri-check]
exten => _*.,1,NoOp(Incoming Call from extension ${CALLERID} for ${EXTEN}@${SIPDOMAIN})
exten => _*.,2,GotoIf($[${LEN(${SIPDOMAIN})} = 0]?10)
exten => _*.,3,GotoIf($[${SIPDOMAIN} = ${MYDOMAIN}]?10)
exten => _*.,4,GotoIf($[${SIPDOMAIN} = ${MYFQDN}]?10)
exten => _*.,5,GotoIf($[${SIPDOMAIN} = ${MYFQDN}:5060]?10)
exten => _*.,6,NoOp(@${SIPDOMAIN} is remote, forwarding...)
exten => _*.,7,Macro(uridial,${EXTEN:1}@${SIPDOMAIN})
exten => _*.,8,HangUp()
exten => _*.,10,Goto(standard,${EXTEN},1)
exten => h,1,HangUp()
Code:
-- Executing NoOp("SIP/11-b5e11a60", "Incoming Call from extension "tomster" <11> for *[email protected];user=phone") in new stack
-- Executing GotoIf("SIP/11-b5e11a60", "0?10") in new stack
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:183 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected $end, expecting TOK_MINUS or TOK_COMPL or TOK_LP or TOKEN; Input:
sip.goober.com;user=phone =
^
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:187 ast_yyerror: If you have questions, please refer to doc/README.variables in the asterisk source.
-- Executing GotoIf("SIP/11-b5e11a60", "0?10") in new stack
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:183 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected $end, expecting TOK_MINUS or TOK_COMPL or TOK_LP or TOKEN; Input:
sip.goober.com;user=phone =
^
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:187 ast_yyerror: If you have questions, please refer to doc/README.variables in the asterisk source.
-- Executing GotoIf("SIP/11-b5e11a60", "0?10") in new stack
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:183 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected TOK_COLON, expecting TOK_MINUS or TOK_COMPL or TOK_LP or TOKEN; Input:
sip.goober.com;user=phone = :5060
^
Feb 7 11:08:21 WARNING[9959]: ast_expr2.fl:187 ast_yyerror: If you have questions, please refer to doc/README.variables in the asterisk source.
-- Executing GotoIf("SIP/11-b5e11a60", "0?10") in new stack
-- Executing NoOp("SIP/11-b5e11a60", "@sip.goober.com;user=phone is remote| forwarding...") in new stack
-- Executing Macro("SIP/11-b5e11a60", "uridial|[email protected];user=phone") in new stack
-- Executing NoOp("SIP/11-b5e11a60", "Outbound SIP URI call [email protected];user=phone") in new stack
-- Executing SetCIDNum("SIP/11-b5e11a60", "089123456") in new stack
-- Executing Dial("SIP/11-b5e11a60", "SIP/[email protected];user=phone") in new stack
Feb 7 11:08:21 WARNING[9959]: chan_sip.c:1998 create_addr: No such host: sip.goober.com;user=phone
Feb 7 11:08:21 NOTICE[9959]: app_dial.c:1056 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing Congestion("SIP/11-b5e11a60", "") in new stack
== Spawn extension (macro-uridial, s, 4) exited non-zero on 'SIP/11-b5e11a60' in macro 'uridial'
== Spawn extension (macro-uridial, s, 4) exited non-zero on 'SIP/11-b5e11a60'
Hat jemamd eine Idee wie man * dieses Anhängsel wegbekommt? Nur um zu schauen, ob das Makro dann durchläuft.
--edit--
OK, hab das mit user=phone gefunden. Ich hatte entsprechende Check-Box auf dem Snom-Telefon aktiviert. Schäm...
Und goober-Accounts scheinen nicht von ausserhalb zu erreichen zu sein...
Zuletzt bearbeitet: