Lifestyle per DTMF

Das folgende Beispiel zeigt, wie man über die ISDN Capi und DTMF Tönen
Steuerungsaufgaben (Lifestyle Programme :D) mit IP-Symcon realisieren kann.
Wer eine TK-Anlage mit internem ISDN-Bus hat, kann bequem von seinem DECT Handy z.B. die Beleuchtung steuern.

In „Instances“ wird das „ISDN Modul“ eingefügt und eine Variable für die DTMF Töne
sowie für den Status vergeben. „Accept Calls“ auf „0“ gesetzt, damit das Modul alle Anrufer entgegennimmt.

Das folgende Skript prüft den Status der ISDN Verbindung. Bei „Connected“ wird der
Anrufer „begrüßt“ und eine „Merker-Variable“ gesetzt.


<?
/*
*******************************
 IPSwitch Event Scripting
*******************************
*/
//File: ISDNStatus.ips.php
// getriggert druch die Variable: "ISDNStatus"
// Einstellungen:
// MSN incomming 49  / ISDNDTMFChar / ISDNStatus

$buffer = GetValueString("ISDNStatus");
if($buffer != "") {

$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item) {

// hier wirdder Status ausgewertet...
   if ($item == "Connected"){
      ISDN_PlayWave(24606,"d:/daten/sounds/wilkommen.wav");
      IPS_Sleep(2000);
      ISDN_PlayWave(24606,"d:/daten/sounds/lifestyle.wav");
      SetValueInteger("Flag_ISDN",11);     // Connected   IPS
   }

   if ($item == "Disconnected"){
     SetValueInteger("Flag_ISDN",99);     // Connected   IPS
      // ZBV
   }
}

//... und den Status-Buffer löschen
SetValueString("ISDNStatus", "");
}
?>

Das folgende Skript wertet die DTMF Töne aus. Stimmt die „Merker-Variable“ mit
der Taste „1“ überein, wird z.B. das „Lifestyle Programm“ 1 ausgeführt.
Die „Merker-Variable“ dient auch dazu, das Telefonmenü zu verschachteln, wie man es
aus den „Call Center Telefonaten“ her kennt.
Wird das Gespräch beendet, bekommt die „Merker-Variable z.B. den Wert 99.


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ISDNevent_Life.ips.php
Trigger  : ISDNDTMFChar
Interval : 
*/

$flagisdn = GetValueInteger("Flag_ISDN");
$buf = GetValueString("ISDNDTMFChar");

if ($buf != "") {

   //Befehl abarbeiten bei "#"  > # dient als "ENTER"
   ClearBuf();   //Buffer löschen
      switch($flagisdn) {
         case 11:                                   // Connected
            switch((int)$buf) {                     // DTMF
               case 1:
                  ISDN_PlayWave(24606,"d:/daten/sounds/eingegeben.wav");
                  IPS_Sleep(2000);
                  ISDN_PlayWave(24606,"d:/daten/sounds/".$buf.".wav");
                  IPS_RunScript("LifeStyle_1");
                  return;
               case 2:
                  // ZBV
                  return;
               case 3:
                  // ZBV
                  return;
               default:
                  ISDN_PlayWave(24606,"d:/daten/sounds/nofunction.wav");
                  return;
            }  // DTMF
         case 31:
         // ZBV

      }
//Wenn hier gelandet, falscher Befehl
ISDN_PlayWave(24606,"d:/daten/sounds/falsch.wav");
}

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

Und neue „Sound Konserven“ generiert man so:


TTS_GenerateFile($id, "Dies ist eine Mega-Lifestyle-Ansage“, "d:/Daten/sounds/lifestyle.wav", 6);

sounds.zip (158 KB)

Hallo Steiner,
kann es sein das ein paar kleine Fehler in dem Script sind?

  1. Bei mir wird der Buffer der Variablen nicht gelöscht, obwohl der Befehl dazu drin ist. Beim anwählen tauchen immer ein wust von DTMF Eingaben auf. zB: 23#2#44#3#45#

  2. Es werden keine Scripte gestartet, obwohl der Befehl ankommt (so scheint es zumindest)

Hast Du eine Eklärung? Oder vielleicht jemand anders?

MfG

Alex

Hallo Alex,

Ich habe beide Scripte (fast identisch mit Steiner’s Originalen) bei mir laufen und es funktioniert.

Das einzige was in der Beschreibung nicht steht ist, dass das zweite Script durch die ISDNDTMFChar variable getriggert werden muss. Wenn es so bei dir ist, dann müsste das Script bei jedem Aufruf den DTMF Buffer löschen. Sonnst sehe ich nicht wo der Fehler sein könnte.

Gruss

Hallo Zapp,
genau das wars, der falsche Trigger. Danke Dir nochmal.

MfG

Alex

Hallo,
bei dem ersten Script wird ausgewertet ob die ISDNStatusVariable den Wert Connected enthält.
Aber welche MSN ist denn Connected?
Wenn ich auf einer MSN den „AB“ und auf einer zweiten „LifeStyle“ betreiben möchte, kann IP-Symcon nicht unterscheiden welche MSN connected ist.

Läßt sich das durch eine Scriptveränderung/erweiterung in den Griff bekommen?

Thorsten

Hallo Thorsten,

Die Variable „ISDNStatus“ vom ersten Script wird durch ein ISDN Modul gesetzt, das auf eine bestimmte MSN reagiert. In der ISDN Modul Konfiguration gibst du die LifeStyle-MSN ein. ISDNStatus enthält den Status für die LifeStyle-MSN.

Wenn du nun einen AB auf einer zweiten MSN haben willst, musst du ein zweites ISDN Modul einrichten. Dort gibst du dann in der Konfiguration die AB-MSN und die AB-Status variable ein (z.B. ISDNABStatus). Dein AB Script liest den Status der ISDNABStatus Variable.

Gruss

Hallo Thorsten,

Die Variable „ISDNStatus“ vom ersten Script wird durch ein ISDN Modul gesetzt, das auf eine bestimmte MSN reagiert. In der ISDN Modul Konfiguration gibst du die LifeStyle-MSN ein. ISDNStatus enthält den Status für die LifeStyle-MSN.

Wenn du nun einen AB auf einer zweiten MSN haben willst, musst du ein zweites ISDN Modul einrichten. Dort gibst du dann in der Konfiguration die AB-MSN und die AB-Status variable ein (z.B. ISDNABStatus). Dein AB Script liest den Status der ISDNABStatus Variable.

Gruss

Hallo,
das stimmt leider nicht. Siehe hier : http://www.ip-symcon.de/forum/showthread.php?t=1617

Die Status Variablen enthalten alle die selben Werte.

Thorsten

Hi Folks,
ich habe ja auch Lifestyle und den AB laufen. Eigentlich ne coole Sache. Wenn nicht oben beschriebens Feature. Dadurch passiert nämlich folgendes. Ich bekomme im Anrufbeantworter Web Interface alle Steuerungsanfragen vom Lifestyle mit. Da kann es dann schon mal passieren, das ich erst 20 Anrufe löschen muß, bevor ich die eigentlichen Voicemails sehe. Das ist schon recht nervend. Aber ist halt so.

MfG

Alex

PS: Für mich ist das eher ein Bug, not a feature.

Sorry, dann habe ich zwei mal was falsches hier geschrieben :frowning: . Danke für den Hinweis.

Ich habe es gerade getestet und tatsächlich stehen in meinem AB log auch die Lifestyle-Anrufe. Ich hatte wohl vorher nicht oft genug den Lifestyle angerufen, um es zu merken. Auserdem fand ich es logisch, dass jede Status Variable nur die Information über der im Modul angegebenen MSN enthält. Wäre schön, wenn es so sein könnte.

Hallo,

bei mir geht das isdn modul nicht dran. Erhalte folgendes im Debug.
Hat da einer eine Lösung zu ? MSN etc alles ok ! :mad:

Gruß

Oliver

Hallo,

hat sich erledigt, wer lesen und klicken kann ist klar im Vorteil. :smiley:

Gruß

Oliver

Hallo Steiner,

bei mir funktioniert natürlich die Voice File Erstellung nicht. Was muss ich dafür installieren ? :confused:

Gruß

Oliver

Hi,

wo bekomme ich eine vernünftige Stimme her (notfalls auch kommerziell)?

Wie kann ich Microsoft Mary hinzufügen. Habe nur Sam.

Gruß

Jimmy

Also das verstehe ich nicht. ISDNDTMFChar wird ja im Script nirgends modifiziert. Ist ISDNDTMFChar die Variable welche im ISDN-Modul im Feld „DTMF Variable“ hinterlegt werden muss?

Der erste Teil der Scripte läuft bei mir, aber das zweite, ISDNEvent_Life, wird nie gestartet. Getriggert habe ich es on update und on change von ISDNDTMFChar. Wenn ich die Variable während der Verbindung anschaue, steht dort immer nur " drin…

Gruss
JM

Hallo,

Kann mir jemand sagen was angepasst werden muß damit es unter v2.0 läuft?

Danke

hat jemand von euch das Lifestyle Script mit der 2.0 inbetrieb ??