Asterisk & PHP - Wer ist online

B

beckmann

Guest
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
 
Zuletzt bearbeitet von einem Moderator:
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...
 
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.
 
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...
 
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
 
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\"
          }
      }
  }
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.