Beispiel: Anzahl der Mailbox-Nachrichten mit PHP abfragen

So könnten wir das Beispiel aus „Beispiel: Anzahl der Mailbox-Nachrichten mit Expect abfragen“ in PHP mit der StarAstAPI lösen:

#!/usr/bin/php -q
<?php
# der Parameter -q dient dazu, bei einem CGI-PHP die Ausgabe der
# Header abzuschalten

if ($argc != 2) {
    echo "Fehler: Geben Sie eine Mailbox an!\n";
    exit(1);
}
# das erste Argument nach dem Programmnamen ist die Mailbox:
$mailbox = $argv[1];
echo "Mailbox: $mailbox\n\n";

# StarAstAPI einbinden:
require_once './StarAstAPI/StarAstAPI.php';

# verbinden und einloggen:
#
$ami = new AstClientConnection();
if ($ami->Login( 'admin', 'geheim', '127.0.0.1', 5038 )) {
    $rp = $ami->GetResponse('1');
    //echo $rp->ToString();
} else {
    exit(1);
}

# folgendes Paket senden:
#     Action: MailboxCount
#     Mailbox: $mailbox
#     ActionID: 2
#
$data = new AstPacketData;
$data->AddKVPair( 'Action'  , 'MailboxCount' );
$data->AddKVPair( 'Mailbox' , $mailbox );
$data->AddKVPair( 'ActionID', '2' );
$packet = new AstPacket;
$packet->SetAstPacketType( 'Action' );
$packet->SetAstPacketData( $data );
$ami->SendPacket( $packet );

# Antwort-Paket mit ActionID 2 lesen:
#
$rPacket = $ami->GetResponse('2');
//echo $rp->ToString();
$rData = $rPacket->GetAstPacketData();
$r = $rData->GetAll();

echo "Neue Nachrichten: ", (int)trim($r['NewMessages:']), "\n";
echo "Alte Nachrichten: ", (int)trim($r['OldMessages:']), "\n";
echo "\n";

# Ausloggen - nicht unbedingt nötig, aber sauber:
#
$ami->Logoff();
# allerdings ist die Funktion der StarAstAPI nicht gerade schön.
# sie tut dies:
#echo "Logoff Called from somewhere ...";
#socket_close($this->mSocket);

echo "\n";
?>

Wir speichern das Skript als vmcount.php und setzen es mit chmod a+x vmcount.exp auf ausführbar.

Aufruf:

$ ./vmcount.php 123@default
Mailbox: 123123123

Neue Nachrichten: 0
Alte Nachrichten: 0

Logoff Called from somewhere ...

Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch