Dieses Skript stammt von „Schlimmerfinger“.
Es demonstriert, wie ein Anrufbeantworter zu programmieren ist.
Wer Lust hat kann es weiter ausbauen: z.B. kann man anhand der Rufnummer (Datenbank?) verschiedene, personenbezogene Ansagetexte abspielen…
Ich freue mich auf Eure Ideen
MST
Tipp: http://de3.php.net/manual/de/function.strlen.php
int strlen ( string str ) / Gibt die Länge der Zeichenkette string zurück.
Ist $callnum z.B. 2-stellig dann handelt es sich um einen internen Anruf (bei einer TK-Anlage)
und man kann dies im Skript entsprechend berücksichtigen.
<?
/*
*******************************
IP-SYNCOM Event Scripting
*******************************
*/
//File: Voicemail.ips.php
// Trigger: "ISDNStatus"
$buffer = GetValueString("ISDNStatus");
if($buffer=="") {
exit;
}
$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item) {
// siehe: http://de.php.net/manual/de/function.substr.php
// substr -- Gibt einen Teil eines Strings zurück
// string substr ( string string, int start [, int length] )
// wer hat angerufen?
if (substr($item, 0, 13) == "CallingNumber"){ // nach "CallingNumber" suchen
$callnum = substr($item, 14, 20); // der Rest ist die Telefonnummer
}
// hier wird der Status ausgewertet und der eigentliche AB gestartet
if ($item == "Connected"){
// SK: Datum und Zeit ermitteln
DEFINE("SK_DATE",Date("d.m.Y"));
DEFINE("SK_TIME",Date("H-i-s"));
ISDN_PlayWave(24606,"C:/Programme/IP-SYMCON/sounds/abansage.wav"); //
IPS_Sleep(4000);
ISDN_PlayWave(24606,"C:/Programme/ip-symcon/sounds/dingdong.wav");
IPS_Sleep(3000);
ISDN_RecordWave(24606, "C:/Programme/ip-symcon/sounds/Nachricht von ".$callnum." am ".SK_DATE."_".SK_TIME.".wav");
}
}
// Auflegen erkennen und Aufnahme stoppen
$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item)
if($item == "Disconnected") {
ISDN_StopRecord(24606);
}
//... und den Status-Buffer löschen
SetValueString("ISDNStatus", "");
exit;
?>
PS:
Die im o.g. Skript verwendete Instance–ID muß für Ihre Umgebung angepasst werden.
Benutzen Sie die Tastenkombination CTRL + I um InstanceID Selector zu öffnen und wählen Sie die entsprechende Instance aus.
Außerdem müssen die WAV-Dateien vorher mit dem Befehl:
TTS_GenerateFile(37579, „Dies ist eine Ansagetext….“, „C:/Programme/ip-symcon/sounds/abansage.wav“, 6);
generiert werden und die Sleep-Zeiten angepasst werden.
Bei Fragen, Unklarheiten, Anregungen usw. bitte hier posten!!!
Hallo,
eine kleines ;-))) Fragezeichen bleibt aber noch. Das Script lief soweit ganz gut, solang ich von „Intern“ anrufe. Mach ich einen Anruf über „extern“, wird erstens nichts angezeigt und auch nachfolgende Anrufe von „intern“ werden dann nicht mehr erkannt. Der Dateinname lautet dann einfach „Nachricht von Datum-Uhrzeit“.wav.
Könnt Ihr das nochmals verifizieren.
Rechte Maustaste in den „Variables“ dann „Evaluate/Modify“ und „Pinned“, damit das Fenster im Vordergrund bleibt (siehe Bild).
Meine interne Nummer ist 48 und die beiden ** kamen aus meiner TK-Anlage und
verursachten logischerweise einen Datei Fehler. Ich habe die ** durch ein „i“ für "Intern"ersetzt.
Hallo Lothar,
Du mußt in der ISDN Instanz sagen, welche Gespräche er annehmen soll. Wenn er alle gespräche annehmen soll trage unten einfach die 0 ein.
Hallo zusammen,
ich kann kaum glauben, daß das Script so bei euch funktioniert.
Im Teil „Auflegen erkennen und Aufnahme stoppen“ fehlen die geschweiften Klammern die den foreach-Block einschließen. Ansonsten wird die if Anweisung nur ein einziges mal überprüft.
Außerdem muß das „Status-Buffer löschen“ innerhalb des if-Blockes ausgeführt werden.
Anbei meine Korrekturen.
// Auflegen erkennen und Aufnahme stoppen
$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item) {
if($item == "Disconnected") {
ISDN_StopRecord(27194);
//... und den Status-Buffer löschen
SetValueString("IsdnStatus", "");
exit;
}
}
?>
Kann man irgendwo einstellen, daß die Rufannahme erst nach einer einstellbaren Zeit erfolgt?
Jetzt geht der Anrufbeantworter beim ersten Klingeln dran. Ich möchte aber, daß der AB erst nach 20 Sekunden abnimmt, dann kann ich vorher den Telefonhörer abnehmen.
ich habe das Problem bei mir folgendemaßen gelöst:
Vorraussetzung: Telefonanlage
[ul]
[li]Reinkommender Anruf wird auf Nebenstelle 11 signalisiert.
[/li][li]Wenn keiner abnimmt (30 Sek.), dann wird das Gespräch zusätlich an Nebenstelle 31 signalisiert.
[/li][li]Nebenstelle 31 ist eine MSN auf die die ISDN-Karte am internen S0-Bus reagiert (Anrufbeantworterscript).
[/li][/ul]
Funktioniert ohne Probleme.
Hallo,
habe auch interesse an einen anrufbeantworter. habe das script hier ml probiert, aber es gibt noch einige fragen.
was bedeutet diese zeile
ISDN_PlayWave(61930
muss ich da noch eine variable erstellen, oder welche id ist dies ?
TTS_GenerateFile(37579, „Dies ist eine Ansagetext….“, „C:/Programme/ip-symcon/sounds/abansage.wav“, 6);
habe ich schon fertig.
wenn ich anrufe bekomme ich unter isdnstatus folgendes
[17:34:01] = 'CallingNumber:1708560402
CalledNumber:27048
Disconnected
’
mfg uwe
die CAPI (Common ISDN Application Programming Interface) ist nur und ausschließlich für ISDN. Für den Analogen Anschluss kann man über entsprechende Hardware die TAPI (Telephony Application Programming Interface) benutzen. Die ist wesendlich einfacher gestrickt und bietet nicht halb so viele Möglichkeiten wie die CAPI. Allerdings ist es möglich ein sog. Software-Telefon nachzubilden. Damit müsste auch ein Anrufbeantworter zu machen sein - behaupte ich mal.
Ich glaube hier im Forum irgendwo gelesen zu haben dass das aber nicht für IPS vorgesehen ist…
Wie Tonic schon richtig erklärt hat: Die CAPI, die das ISDN Modul nutzt, funktioniert nicht mit einem Analogen Anschluss. Deswegen kann man es damit leider nicht nutzen. Eine TAPI Implementation ist auch nicht geplant.
Das heißt also alle, welche kein ISDN besitzen müssen in die Röhre schauen.:mad:
War nicht böse gemeint. Hätte mir halt eine analogunterstützung gewünscht.
Aber dann kann man nichts machen.
Wie sieht es eigentlich mit VOIP aus. Kann man hier eine Schnittstelle basteln? Daß evtl. das Haus mit Tasten gesteuert werden können. So
Wie euerem Bewertungstool!
„analogunterstützung“ ist keim Problem für IP-Symcon: fast jedes Modem aus der Grabbelkiste beherrscht DTMF Töne. Mit den AT-Befehlen kann man dann „schalten & walten“.
@Forum,
wenn jemand Zeit und Lust hat etwas mit einem GSM Modem
(AT-Befehle, PDU Modus http://www.nobbi.com/atgsm.htm) zu entwickeln,
der kann sich gerne bei uns melden: info@ip-symcon.de um Einzelheiten zu besprechen.
MST
PS: kennt jemand ein einfaches „ebay-Handy“ (z.B. S25) mit Modem mit passendem Datenkabel
Beim großem C kostet ein Modem €200,- :mad:
Ich habe zwar noch keine Lösung gefunden, daß der AB nach einer einstellbaren Zeit angeht, aber hier schon mal die Lösung den AB an und aus zuschalten.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : isdnanrufanaus.ips.php
Trigger :
Interval :
*/
require "web/base/xmlparser.ips.php";
//Setting in Array lesen
$xmldata=IPS_GetInstanceSettings(111111);
echo $xmldata;
$xml = new IPS_XMLParser();
$array = $xml->GetArray( $xmldata );
//ändern und zurückspeichern
//Achtung das Wort Value in den xml Werten muss weggelassen werden
$array['ID']['Settings']['Accept']['Item0']= null; // aus
$array['ID']['Settings']['Accept']['Item0']= 0; // alle an
$xmldata=$xml->SetArray( $array );
$result=IPS_SetInstanceSettings(111111,$xmldata);
//Test
$xmldata=IPS_GetInstanceSettings(111111);
echo $xmldata;
?>