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

Asterisk und Variablen

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von Tagamoga, 17 Sep. 2008.

  1. Tagamoga

    Tagamoga Neuer User

    Registriert seit:
    12 Sep. 2008
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo allerseits,

    leider habe ich eine kleines Problem mit dem Scripting von asterisk.
    Folgende Zeilen:
    Code:
     exten => s,1,NoOp(${ARG1})
     exten => s,n,NoOp(${CALLERID(name)})
     exten => ${ARG1},hint,SIP/${CALLERID(name)}
    
    Ausgabe:
    Code:
        -- Executing [s@macro-set-hints:1] NoOp("SIP/T001-089d64f8", "1004") in new stack
        -- Executing [s@macro-set-hints:2] NoOp("SIP/T001-089d64f8", "T001") in new stack
    
    Also die beiden Variablen sind correkt gesetzt und gefüllt. Doch wenn ich mir die Hits ansehe sehe ich folgendes:
    Code:
       @macro-set-hints     : SIP/    
    anstatt:
    Code:
       1004@macro-set-hints     : SIP/T001    
    Wieso? und wie bekomme ich es hin in der LAUFZEIT die hints neu zu setzen?

    Danke im vorraus,
    Taggi
     
  2. laureen

    laureen Mitglied

    Registriert seit:
    17 Okt. 2004
    Beiträge:
    369
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #2 laureen, 20 Sep. 2008
    Zuletzt bearbeitet: 20 Sep. 2008
    du musst unterscheiden zwischen dialplan-variablen (werden im [globals] abschnitt definiert) und channel variablen (die sind nur während des anrufes gültig, also zur laufzeit)

    wenn asterisk (oder respektive du) den dialplan reloadest, versucht die asterisk sämtliche variablen zu parsen, die nicht innerhalb der applikations-parameter der einzelnen extensions stehen. zu diesem zeitpunkt gibt es aber noch keine channel-variablen.

    ausserdem kannst diese quasi-dynamischen hints oder extensions nur mit einem script generieren, das du mittels "#exec ..." in den dialplan einbindest, z.b.:
    Code:
    ...
    [context]
    #exec wget -q -O - http://localhost/asterisk/createhints.php
    ...
    wobei das script dann die eintrage so ausgeben muss, wie wenn du sie im dialplan einfügst.

    kann es sein, dass du die sache mit den hints etwas falsch verstehst? warum willst du denn die hints während der laufzeit des anrufes setzen? die sind doch in erster linie für subscriptions da!
    wenn du den status eines hints meinst, musst du einen hint mit einem channeltype "DS" (DeviceState) setzen, den kannst du dann mit der dialplan applikation "DevState" umsetzen. kann sein, dass du da eine bristuff-gepatchte asterisk brauchst.

    im übrigen rate ich davon ab, denn CALLERID(name) auf den namen des sip peers zu setzen, das ist im produktiv-betrieb nicht wirklich verwendbar, da man ja (wie auch das feld schon sagt) dort den namen sehen soll...

    grüße,
    laureen