.titleBar { margin-bottom: 5px!important; }

Wählen von SIP-URIs mit Asterisk

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von tomster, 7 Feb. 2007.

  1. tomster

    tomster Mitglied

    Registriert seit:
    6 Dez. 2004
    Beiträge:
    238
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    bavaria superior
    #1 tomster, 7 Feb. 2007
    Zuletzt bearbeitet: 7 Feb. 2007
    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.
    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()
    
    
    Leider haut es nicht hin, wie nachfolgende Ausgabe am CLI belegt.

    Code:
        -- Executing NoOp("SIP/11-b5e11a60", "Incoming Call from extension "tomster" <11> for *123456@sip.goober.com;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|123456@sip.goober.com;user=phone") in new stack
        -- Executing NoOp("SIP/11-b5e11a60", "Outbound SIP URI call 123456@sip.goober.com;user=phone") in new stack
        -- Executing SetCIDNum("SIP/11-b5e11a60", "089123456") in new stack
        -- Executing Dial("SIP/11-b5e11a60", "SIP/123456@sip.goober.com;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'
    
    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...
     
  2. tomster

    tomster Mitglied

    Registriert seit:
    6 Dez. 2004
    Beiträge:
    238
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    bavaria superior
    Jetzt läuft es zwar, aber im CLI wird weiterhin gemosert:
    Code:
    Feb  9 16:08:05 WARNING[15291]: 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 =
                     ^
    Feb  9 16:08:05 WARNING[15291]: ast_expr2.fl:187 ast_yyerror: If you have questions, please refer to doc/README.variables in the asterisk source.
    
    Keine Ahnung wo das eigentlich herkommt.

    Und goober-Kontakte sind DOCH über SIP zu erreichen...
     
  3. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,278
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
  4. tomster

    tomster Mitglied

    Registriert seit:
    6 Dez. 2004
    Beiträge:
    238
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    bavaria superior
    Hallo rollo,

    das hatte ich inzwischen auch gefunden, bringt mich aber bei der Lösung nicht viel weiter. Ich hab das Ausgangsbeispiel verwendet, da ich ja einen automatischen URI-Check erreichen will, und nicht nur die URI-Wahl bei entsprechender Vorwahl (in deinem Bsp. 333). Unterm Strich funktioniert es ja, nur die Warn-Meldungen stören mich.
    Nun ja, wenn ich wieder etwas mehr Zeit habe, dann mach ich mich nochmal drüber.
     
  5. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,278
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    Das Beispiel sollte auch ohne Vorwahl funktionieren, ich wollte seinerzeit nicht den ganzen Dialplan für den Test umbauen.

    jo
     
  6. tomster

    tomster Mitglied

    Registriert seit:
    6 Dez. 2004
    Beiträge:
    238
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    bavaria superior
    Nun gut, zu guter Letzt habe ich das Macro doch noch so hinbekommen, dass es funktioniert.
    Leider schaut es aber bei eingehenden Anrufen schlechter aus. Die werden zwar brav signalisiert, aber es wird wieder nur der Teil vor dem @-Zeichen übertragen. Damit steht dann auch in der Anrufliste nur die ID, nicht aber der Domain-Teil.
    Hat da wer einen Ansatz?