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

Asterisk & PHP - Wer ist online

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von beckmann, 15 Jan. 2005.

  1. beckmann

    beckmann Guest

    #1 beckmann, 15 Jan. 2005
    Zuletzt von einem Moderator bearbeitet: 18 Aug. 2008
    Hallo,
    kennt einer eine Funktion vom Asterisk, wo man mit PHP eine Statusanzeige programmieren könnte? Ich habe hier im Forum schon gesucht aber nichts gefunden. Ich denke an Sowas wie: User: 1234 Status: Online
     
  2. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    naja, kommt drauf an, wie du das angehn willst.
    wenn du den registered status abfragen willst, solltest du die manager api verwenden. dort kannst du entweder die events mitlesen, oder auch cli befehle ausführen um die aktuellen user zu sehen. evtl. die bessere sache, wenns dir nur um online user geht...
     
  3. beckmann

    beckmann Guest

    Ganz genau habe ich follgendes vor:
    Es gibt eine Infowebsite wo jeder User sehen kann wen er im privaten Netz gerade anrufen kann und wen halt nicht, weil der jenige sein Telefon nicht an hat.
     
  4. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ja, dann schreibst du am einfachesten ein kleines php was als cron läuft und z.b. einmal pro minute eine html datei ausspuckt, in der dann die infos stehen.
    das php selbst connected zur * manager api und führ den cli befehl iax show... usw aus und parset dessen ausgabe und generiert daraus die html seite...
     
  5. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
  6. speedy1980

    speedy1980 Mitglied

    Registriert seit:
    13 Okt. 2004
    Beiträge:
    592
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich hab bei meinem Asterisk die SIP und IAX User in einer MySQL Datenbank. Ist über ast_data gelöst, Asterisk hat seine Nutzer also nicht in der sip.conf/ iax.conf, sondern in der Datenbank. Heuzutage würde man RealTime für so eine Lösung nehmen. Tja und dann gibts in den Tabellen ein Feld "registered", über das ich den online/offline Status bestimmen kann. Beispielseite:
    http://sipgate.fh-stralsund.de/phonebook.php?page=S
     
  7. sabersoft

    sabersoft Neuer User

    Registriert seit:
    29 Okt. 2004
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich pushe den Thread mal hoch

    habe Monastery laufen (Stable sowie Devel getestet)

    Und zwar läuft alles ausser ein kleiner Fehler...

    Das Script parst die Ausgabe des SIP SHOW PEERS falsch ..
    Den Namen bekommt es richtig, aber den Status / Lag macht er nicht richtig ...

    Könnte sich dashemand der etwas von Perl versteht mal anschauen und mir einen Tip geben wie ich das abändern muss ?

    Hier der entsprechende Auschnitt ... kann man sich aber auch fix ziehen unter: http://www.unslept.com/monastery

    Die Devel ist ok und sieht besser aus ;) (die nutz ich also auch ;))

    Code:
    sub sipshowpeers()
      {
        ### SIP Show Peers
        # build the var that holds the command
        $command="Action: command\nCommand: sip show peers\n\n";
    
        @lines=run_command($command);
    
        #OK, run through the array elements, and try to make sense of it.
        foreach $line (@lines)
          {
            #get rid of the pesky \n or whatever else is playing clingon
            chomp($line);
    
            #If it holds a : , we don't want it
            next if ($line =~ ":");
            #Ditto for the header line
            next if ($line =~ "Host");
            #Blanks too
            next if ($line eq "");
            # Hmm. I have to have this here, since I get junk if the system has a ch
            #or down while this is reading. Gotta look at flushing the $tn buffer...
            next unless (!($line =~ "UNKNOWN") || !($line =~ "OK"));
    
            #Allllrrriiiighty then! We have useable data!
            if ($line =~ "UNKNOWN")
              {
                #Dammit, they're dead, Jim
                #Split it up on the whitespace
                ($name1,$host,$junk,$mask,$port,$status)=split(/\s+/,$line);
                #Split name1 on the /
                ($name,$junk)=split(/\//,$name1);
                #
                #For the beginners reading this, 'replace into' is the same as
                # 'if the primary keys match, delete first, then insert, else just i
                $mysql->query("replace INTO sipstatus(name,status) values (\"$name\"
              }
            else
              {
                # It's alive... ALIVE!!!
                ($name1,$host,$junk,$mask,$port,$status,$lag)=split(/\s+/,$line);
                ($name,$hunk)=split(/\//,$name1);
                $mysql->query("replace INTO sipstatus(name,status) values (\"$name\"
              }
          }
      }