Das neue ISDN Modul kann nun mit mehreren Anrufen gleichzeitig umgehen und hat mehr Möglichkeiten direkt einzugreifen. (Anrufe annehmen, beenden…)
Hier ein Beispielskript, welches fast alle Möglichkeiten kurz andeutet:
<?
$allowed_numbers = Array(); //leer = alle
//Aktive Verbindungen ausgeben
//print_r(ISDN_GetActiveConnections(28189));
if($IPS_SENDER == "ISDN")
{
//Informationen ins Meldungsfenster ausgeben
echo "Event: ".$ISDN_EVENT."
";
if($ISDN_EVENT != "Disconnect")
{
$callinfo = ISDN_GetConnectionInfo(28189, $ISDN_CONNECTION);
//Mehr Informationen ausgeben
print_r($callinfo);
}
//Je nach Ereigniss eine Aktion ausführen
switch($ISDN_EVENT)
{
case "Incoming":
//Anruf annehmen? (Entweder leeres Array oder Nummer ist enthalten)
if((sizeof($allowed_numbers) == 0)
or in_array($callinfo['CallingNumber'], $allowed_numbers))
{
ISDN_AcceptCall(28189, $ISDN_CONNECTION); //Anruf annehmen
}
break;
case "Connect":
//Aktion nach dem Verbinden ausführen
$file = IPS_GetKernelDir()."temp.wav";
$text = "Press Zero for current Time";
TTS_GenerateFile(19668, $text, $file, 6);
ISDN_PlayWave(28189, $ISDN_CONNECTION, $file);
break;
case "Disconnect":
//Aktion, wenn Anruf beendet wurde
//"ISDN_GetConnectionInfo" ist hier nicht mehr verfügbar!
break;
case "PlayFinish":
//Aktion, wenn Wav abgespielt wurde
break;
case "DTMF":
switch($ISDN_DATA)
{
//Aktion wenn 0 gedrückt wird
case "0":
$file = IPS_GetKernelDir()."temp.wav";
$text = "The Time is ".date("H:i");
TTS_GenerateFile(19668, $text, $file, 6);
ISDN_PlayWave(28189, $ISDN_CONNECTION, $file);
break;
//Aktion wenn falsche Taste gedrückt wird
default:
ISDN_Disconnect(28189, $ISDN_CONNECTION);
break;
}
break;
}
}
?>
Für automatische Klingelstreiche:
//Anrufen und nach 10 Sekunden auflegen
$id = ISDN_Connect(28189, "Rufnummer");
sleep(10);
ISDN_Disconnect(28189, $id);
Grüße, paresy