IP-Symcon Mega Vote Event

… oder Sprachausgabe Teil 3

Das folgende Beispiel zeigt, wie man einen über die ISDN Capi und DTMF Tönen
Steuerungsaufgaben mit IP-Symcon realisieren kann.

Um die Funktionen des folgenden Skripts live zu testen, könnt Ihr folgende Nummer wählen:
04504 / 715165
Mit einer Eingabe einer -3- gelangt der Anrufer in das „Vote Menü“, hier kann er abstimmen,
wie ihm IP-Symcon gefällt. Es kann eine Schulnote von 1 bis 6 vergeben werden und das
Ergebnis wird auf unserer Webcam - Seite: http://ipswitch.mine.nu/webcam.php veröffentlicht.
Man könnte auch FS20 Komponenten schalten … :rolleyes:

Die Variable „Flag_ISDN“ dient der Steuerung der Menüführung.
Mit Hilfe weiterer switch($flagisdn) { case xxx: Anweisungen, kann dieses
Demoprogramm für eigene Zwecke erweitert werden.
In „Instances“ wurde zuvor das „ISDN Modul“ hinzugefügt und in unserem Beispiel
„Accept Calls“ auf „0“ gesetzt, damit das Modul alle Anrufer entgegennimmt.

Dieses Skript prüft, ab ein Anruf kommt, berechnet den Notendurchschnitt und erzeugt eine WAV-Datei:


<?
/*
*******************************
 IPSwitch Event Scripting
*******************************
*/
//File: ISDNStatus.ips.php
// getriggert druch die Variable: "ISDNStatus"
$buffer = GetValueString("ISDNStatus");
echo "Buffer: $buffer$";
if($buffer=="") {
   exit;
}
$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item) {
echo $item;
// hier wirdder Status ausgewertet...
   if ($item == "Connected"){
      ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/wilkommen.wav");
      IPS_Sleep(2000);
      ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/hauptmenue.wav");
      IPS_Sleep(2000);
      ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/wahl.wav");
      SetValueInteger("Flag_ISDN",1);     // Connected
   }
   if ($item == "Disconnected"){
      $flag = GetValueInteger("Flag_ISDN");
      if ($flag == 32){
         $counter = GetValueInteger("Vote_Anrufer");
         $last =  GetValueInteger("Vote_Last");
         $votges = GetValueInteger("Vote_Gesamt") + $last;
         SetValueInteger("Vote_Gesamt", $votges);
         $note = ($votges / $counter);
         $note = number_format($note , 1, ",", "," );
         SetValueString("Vote_Durchschnitt",  $note);
        // echo $counter;
         TTS_GenerateFile(37579, "Sie waren Anrufer Nummer " .$counter -1 . "!", "C:/Programme/ip-symcon/sounds/anrufer.wav", 6);
         }
   }
}
//... und den Status-Buffer löschen
SetValueString("ISDNStatus", "");
?> 

Dieses Skript wertet die DTMF Töne aus:

<?
//DTMF Puffer auslesen
$flagisdn = GetValueInteger("Flag_ISDN");
$buf = GetValueString("ISDNDTMFChar");
//echo "Buffer I: $buf
";
//echo "Flag: $flagisdn
";

//Exit bei leeren Buffer
if ($buf=="") {
 exit;
}

//Puffer löschen bei "*"
if(!(strpos($buf, "*") === FALSE)) {
  ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/clear.wav");
  ClearBuf();
  SetValueInteger("Flag_ISDN",1);      // IPS-Forum
  exit;
}

//Befehl abarbeiten bei "#"  > # dient als "ENTER"
//if(!(strpos($buf, "#") === FALSE)) {
   //$buf=substr($buf, 0, strlen($buf)-1); //# löschen
     ClearBuf();   //Buffer löschen
      switch($flagisdn) {
         case 1:                                    // Connected
            switch((int)$buf) {
               case 3:
                  SetValueInteger("Flag_ISDN",31);      // IPS-Forum
                  ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/voteevent.wav");
                  IPS_Sleep(4000);
                  ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/zahl1bis6.wav");
                  $vgesamt = GetValueInteger("Vote_Anrufer") + 1;
                  SetValueInteger("Vote_Anrufer",$vgesamt);
                  exit;
               default:
                  ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/nofunction.wav");
            }
            exit;
         case 31:
            if((int)$buf < 7) {
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/eingegeben.wav");
             IPS_Sleep(2000);
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/".$buf.".wav");
             IPS_Sleep(1000);
             SetValueInteger("Flag_ISDN",32);      // IPS-Forum
             SetValueInteger("Vote_Last",(int)$buf);
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/registriert.wav");
             IPS_Sleep(2000);
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/anrufer.wav");
             IPS_Sleep(2000);
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/ende.wav");
             IPS_Sleep(2000);
            } else {
             ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/falsch.wav");
           //  SetValueInteger("Flag_ISDN",31);      // IPS-Forum
            }
            exit;
         case 32:
            ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/auflegen.wav");
            exit;
      }
//Wenn hier gelandet, falscher Befehl
ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/falsch.wav");

//} // keine # Eingabe

//Puffer löschen function deklarieren
function ClearBuf() {
   //DTMF Puffer löschen
   SetValueString("ISDNDTMFChar","");
}
?>