String von Extern an IPS übergeben?

Hallo zusammen,

folgendes Problem will gelöst werden:
Auf dem IPS-Server liegt in einer anderen Applikation ein String vor der an IPS übergeben werden soll.
Aber wie?

Ideen bisher:

  • Email? (viel zu langsam)
  • Dateischnittstelle (Textfile oder Datenbank - zu langsam)
  • Rechner Environment
  • per Client-Socket (aktueller Favorit)

Gibt es da evtl. etwas sinnvolleres?

Hintergrund:
Die Applikation „jAnrufmonitor“ stellt über „Das Örtliche/Rückwärtssuche“ den Namen eines
auch bislang unbekannten Anrufers zur Verfügung.
Dieser soll über TTS durch IPS angesagt werden.

danke fürs Mitdenken

Alexander

Ich weiß ja nicht welche Anlage Du verwendest aber sollte es zufällig eine Fritzbox sein, dann gibt es da schon ein super Skript für, welches Deine Anforderungen abdeckt. Ggf. muss nur noch der TTS Teil eingebaut werden statt dem Popup. Zu finden hier: http://www.ip-symcon.de/forum/f53/anruferliste-fritzbox-auslesen-9948/

Vielliechts wird’s mit nachfolgenden Zeilen etwas deutlicher …:

In meinem Fall ist KEINE Telefonanlage im Spiel.

jAnrufmonitor ist eine Software die auf einem PC läuft. Sie horcht am ISDN/CAPI und meldet ankommende Anrufe üblicherweise per Fenster das am Schirm aufpoppt.
jAnrufmonitor bietet die Möglichkeit der Rückwärts-Identifikation UND auch die Option „Externes Programm starten bei Anruf“.

Ein solches Programm als Bindeglied zu IPS will ich schreiben müssen - nennen wir es ‚JA2IPS.exe‘
Es bekommt als Input als 1. Parameter den Namen des Anrufers ‚JA2IPS.exe „Max Maier“‘
und übergibt diesen String mit Methode xxyy an IPS, das dann per TTS in den Raum spricht.

Methode xxyy ist das gesuchte Verfahren zur Stringübergabe an IPS

jAnrufmonitor ist eine Software die auf einem PC läuft. Sie horcht am ISDN/CAPI

Hallo.

Es gibt hier im Forum ein Skript wo IPS über die CAPI mithorchen kann und dann entsprechend über Rückwärtssuche (Klicktel & Co.) den Anrufer auswirft.
Ich habe das so integriert und es läuft gut.

Click

in welcher Form liegt denn diese Variable vor ? als Textdatei oder kommt sie über eine Schnittstelle zb json ??
IPS muss ja dann auch entsprechend (im Sekundenbereich) getriggert werden, damit keine Vari verpasst wird.
bei mir kommen auch etliche Daten von externen Anwendungen, das ist eigentlich nicht so das Problem das vernünftig zu verarbeiten.

@kronos: IPS mit Capi und Rückident wäre Plan B falls mein Vorhaben scheitert.
jAnrufbeantworter ist aber schon fest im Netz bis hin in VPN/PPTP integriert

@axel:
Im Ursprung hat jAnrufbeantworter das Wissen wer anruft.
jAnrufbeantworter lässt mich ein externes Programm starten im Falle eines Anrufs.
Dieses (mein Programm) bekommt den Anrufernamen als Parameter mitgeliefert

jAnrufbeantworter startet MEIN JA2IPS.exe mit diesem Namen als Parameter,
mein Programm beliefert IPS und beendet sich wieder.

Mein Programm in Delphi sähe so aus:

function send2ips(str:string);
begin
// hier das gesuchte Verfahren, notfalls als „Server“ für einen IPS-Client-Socket
end;

begin // Hauptroutine
send2ips(paramstr(1));
end;

Und jetzt geht es nur noch um eine Möglichkeit (neben Client-Socket) wie ich IPS den String übergebe.
(Wenn IPS da jede Sekunde pollen muss wäre das allerdings unschön).

Schau Dir mal die IPSTools an. Das ist ein Programm, das auf einem Client läuft und zu dem man eine SocketVerbindug von IPS aus aufbauen kann.

Innerhalb des Programms wird z.B. die Zeit berechnet seit der die Maus nicht mehr bewegt wurde und diese wird - in einstellbaren Intervallen - an IPS gesendet wo sich das Ganze in einer Variablen ablegen lässt. Ist in .NET geschrieben und funktioniert sehr gut.
Ich hab das für mich mal umgeschrieben, so dass jedes Mal, wenn sich eine Datei ändert (erzeugt durch die Cam im Tablet auf dem das Tool läuft) die MouseIdle Time auf 0 gestezt und an IPS geschickt wird. Das läuft dann eventgetriggert. Der Sourcecode des Originals ist irgendwo veröffentlicht hier im Forum.

Du könntest das so umbauen, dass Du an dieses Programm die Infos schickst und dieses dann die Daten an IPS übermittelt.

danke mws für diese Idee - IPSTools nutze ich bereits zum Bildschirm ein-/ausschalten.
Das läuft dann auf die Client-Socket-Variante hinaus…

(es hätte ja aber sein können dass man mit einem „IPS-Geheimbefehl“ z.B. eine Registervariable „von außen“ befüllen kann).

Lösung: (very quick and very dirty)

jAnrufmonitor startet mit der Zeile

C:/IP-Symcon/web/b.bat „%callername%“

eine gegebene Batchdatei namens „b.bat“.

echo %1 >c:\ip-symcon\web\anrufer.txt
exit

Diese Batchdatei schreibt eine Textdatei namens „anrufer.txt“
mit einer Textzeile die den ermittelten Anrufernamen enthält.

IPS pollt alle (ca.) 5 Sekunden ob es diese Datei gibt.
Sobald vorhanden wird der Inhalt ausgelesen, angesagt und die
Textdatei gelöscht.

$myFile = „c:/ip-symcon/web/anrufer.txt“;
if (file_exists($myFile))
{
$fh = fopen($myFile, ‚r‘);
$caller = fread($fh, 1000);
fclose($fh);
if ($caller != „“) { setvalue(58047 , $caller ) ;}; // führt zur Sprachansage
unlink($myFile);
};

Das ist aber schon sehr Quick und sehr Dirty. Das 5-Sekunden-Polling ist nicht so elegant.

Guck Dir das hier mal an: Klick

Damit kannst Du z.b. per Kommandozeile, dh. aus Deinem Batch heraus eine Variable in IPS setzten. Und mit der Variablenänderung könntest Du wiederum in IPS Dein Skript triggern.

Klingt nach ner Aufgabe für IPSCommand… Kommandozeilentool für IPS.

Klick

Gruß,

Toni

Dieses IPSCommand ist GENAU das was ich brauche!
Vielen Dank an die Mitdenker…

Warum meldet sich so ein Tool eigentlich nicht von selbst und signalisiert „nimm mich - nimm mich …“ :wink: