Hallo ich habe zwei Fragen zum ISDN Modul in IPS V2.
Frage 1: Wie kann ich eine Verschachtelung im ISDN Modul V2 umsetzen? Für die V1 gibt es hierzu eine Beschreibung im Forum, allderings konnte ich diese Information bis jetzt noch nicht auf die V2 umsetzen.
In diesem Thread (Link) ist das ISDN V2 Modul beschrieben, jedoch ohne Beispiel zur Menüverschachtelung. Könnte Ihr mir hierzu Tipps geben (am besten mit einem Beispiel). Danke!
Frage 2: Zudem möchte ich die incoming calls mit einem 4-stelligem PIN abfragen. Wenn dieser Falsch ist, soll die Verbindung disconnected werden. Wie kann ich mehrstellige DTMF Codes abfragen?
Mir fällt im Moment nur was zu 2 ein:
Du musst Dir schon die einzelnen Ziffern zusammensetzen.
Mach Dir eine Variable (String) in der du die Ziffern sammelst. Wenn du 4 beisammen hast kannst du Sie bewerten und entsprechend reagieren.
Ich habe jetzt mal Codes zusammenkopiert.
Das ist zwar nicht die feine Art, aber besser kann ich es noch nicht.
Man lernt ja beim experimentieren was die einzelnen Tools bewirken.
Aber an diesem Code stimmt was nicht.
Egal was ich als DTMF sende, es legt immer auf.
<?
$allowed_numbers = Array(" "); //leer = alle
//Aktive Verbindungen ausgeben
//print_r(ISDN_GetActiveConnections(28189 /*[Objekt #28189 existiert nicht]*/));
if($IPS_SENDER == "ISDN")
{
//Informationen ins Meldungsfenster ausgeben
echo "Event: ".$ISDN_EVENT."
";
if($ISDN_EVENT != "Disconnect")
{
$callinfo = ISDN_GetConnectionInfo(57522 /*[Module\ISDN Module]*/, $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(57522 /*[Module\ISDN Module]*/, $ISDN_CONNECTION); //Anruf annehmen
}
break;
case "Connect":
//Aktion nach dem Verbinden ausführen
$file = IPS_GetKernelDir()."temp.wav";
$text = "Bitte den Code eingeben.";
TTS_GenerateFile(43167 /*[Module\Text To Speech]*/, $text, $file, 6);
ISDN_PlayWave(57522 /*[Module\ISDN Module]*/, $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 "DTMF":
$code = GetValueString(29303 /*[Module\ISDN Module\TeleString]*/);
SetValueString(29303 /*[Module\ISDN Module\TeleString]*/,$code.$ISDN_DATA);
if ($ISDN_DATA == "*")
{
if ($code == "1234")
{
print "hallo";// ausführbare Code
break;
}
if ($code == "5678")
{
// ausführbare Code
break;
}
}
//Aktion wenn falsche Taste gedrückt wird
default:
ISDN_Disconnect(57522 /*[Module\ISDN Module]*/, $ISDN_CONNECTION);
break;
}
break;
}
}
?>
Bin jetzt müde… evtl. kann ich das Problem ausgeschlafen mit eurer Hilfe lösen… Nächtle!
Vielen Dank für deinen Vorschlag.
Aber ich möchte das mit IPS realisieren.
Mir fehlt es noch verständnis.
Aber das wird von Versuch zu Versuch besser.
Hier sehe ich den Fehler nicht.
Aber evtl. kann mir den jemanden zeigen.
Letzten endes möchte ich mit einem Telefonanruf meine Haustür öffnen lassen.
hiermit Fütterst Du ja die Variable 29303 mit den vomTelefon eingegebenem Code… Wann wird diese Variable Initialisiert? (Irgendwann muss diese Var geleert werden entweder beim „abheben“ oder beim „auflegen“
//Aktion wenn falsche Taste gedrückt wird
default:
ISDN_Disconnect(57522 /*[Module\ISDN Module]*/, $ISDN_CONNECTION);
break;
Ich glaube mal dies ist Dein Hauptproblem…
Was ist denn eine Falsche Taste? Wenn Du einen Wahlfreisen Code eingibst… ist wohl jede Taste / Zahl zunächst mal richtig… also muss das m.E. komplett raus.
Du möchtest Deine Pin mit einem * abschließen. Hierbei übernimmt der * quasi die Enter-Taste. Das kann man so machen. Bedenke dann aber dass Du in Deinem zu überprüfenden Pin das *-Zeichen mit dranhängst… denn zu dem Zeitpunkt in dem Du die Variable überprüftst (die 29303) ist das *-Zeichen ja schon an die Variable angehängt.
Wäre dann m.E. richtiger.
Nett ist es vielleicht noch wenn Du die länge der Variable 29303 abfragst und bei z.b. >5 Zeichen die Trennung einbaust. Ggf. noch die Caller-ID Protokollieren
Hallo,
hmmmmm die Idee find´ ich auch nicht schlecht. Man nehme eine nicht benutzte geheime MSN des Anschlusses. Wenn man dann diese von seinem Handy aus anruft, geht der Türöffner auf/zu ohne dass IPS abnehmen muss…
Ist nicht getestet… und auf das Notwendigste für diesen Zweck begrenzt. Der Vorteil, wenn die Nummer nicht abnimmt ist der, dass man die geheime MSN nicht mit ´nem Nummernscanner findet und 2. keine Kosten entstehen.
Hallo,
ich habe mittlerweile begriffen, dass die Variablen $ISDN_EVENT etc. bei eingehenden (!) Anrufen im getriggerten Skript automatisch zur Verfügung stehen. Frage:
Wie registriere ich DTMF Töne bei ausgehenden Telefonaten in IPS?