Beispiel für AGI-Skript: lotto.php

zurück zur Asterisk-Doku

Quelle: http://www.das-asterisk-buch.de/1.0/agi-php.html

Dieses Beispiel wählt 6 zufällige Zahlen von 1 bis 49 aus und spricht sie dem Anrufer vor. Die Beschreibung der einzelnen Schritte erfolgt im Quellcode.

#!/usr/bin/php -q
<?php
 
# Sicherheitseinstellung. Das Skript laeuft nicht 
# laenger als 8 Sekunden.
#################################################
set_time_limit(8);
 
 
# Output Buffer wird deaktiviert
# Alternativ könnten wir nach jeder Ausgabe
# fflush(STDOUT); aufrufen.
#################################################
ob_implicit_flush();
 
 
# PHP Error Reporting wird deaktiviert
#################################################
error_reporting(0);
 
 
# Fuer die Komunikation mit Asterisk benoetigen 
# wir STDIN und STDOUT Filehandles
#################################################
if (!defined('STDIN'))
  define('STDIN' , fopen('php://stdin' , 'r'));
if (!defined('STDOUT'))
  define('STDOUT', fopen('php://stdout', 'w'));
if (!defined('STDERR'))
  define('STDERR', fopen('php://stderr', 'w'));
 
 
# Die von Asterisk uebergebenen Variablen und 
# Werte werden ausgelesen und im Array $agi 
# gespeichert.
#################################################
 
$agi = array();
 
while (!feof(STDIN))
{
  $tmp = trim(fgets(STDIN,4096));
  if (($tmp == '') || ($tmp == "\n"))
    break;
  $var1 = split(':',$tmp);
  $name = str_replace('agi_','',$var1[0]);
  $agi[$name] = trim($var1[1]);
}
 
 
# Ein Array mit 6 zufaelligen und nicht 
# doppelten Zahlen von 1 bis 49 wird generiert.
#################################################
 
$Lottozahlen = array();
do {
  $Zahl = rand(1,49);
  if (array_search($Zahl, $Lottozahlen) == FALSE) {
    $Lottozahlen[] = $Zahl;
  }
} while (count($Lottozahlen) < 6);
 
 
# Vor der ersten Ansage wird eine Sekunde 
# gewartet.
#################################################
fwrite(STDOUT,"EXEC Wait 1 \"\"\n");
fflush(STDOUT);
 
 
# Die Zahlen werden nacheinander vorgelesen. 
# Zwischen den einzelnen Zahlen gibt es immer 
# eine Pause von einer Sekunde.
#################################################
foreach ($Lottozahlen as $value) {
  fwrite(STDOUT,"SAY NUMBER $value \"\"\n");
  fflush(STDOUT);
  fwrite(STDOUT,"EXEC Wait 1 \"\"\n");
  fflush(STDOUT);
}
 
?>

zurück zur Asterisk-Doku

 
asterisk/lotto-beispiel.txt · Zuletzt geändert: 09.04.2008 10:45 von tylmann