CallingNumber und dasOertliche

Hallo,

kann mir jemand helfen?

Wie bekomme ich es hin, die CallingNumber auszuwerten und diese dann zur Inverssuche bei das Oertliche zu nehmen, wobei zur Suche auch noch die führende Null der Vorwahl gebraucht wird.

Ich habe es mit „schnipseln“ aus scripten des Forums versucht aber irgendwie klappt es nicht :frowning:

Hier mal das was ich habe:

$buffer = GetValueString(„ISDNStatus1“);

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

// wer hat angerufen?
if (substr($item, 0, 13) == „CallingNumber“){ // nach „CallingNumber“ suchen
$callnum = substr($item, 14, 20); // der Rest ist die Telefonnummer
}

if ($item == „CallingNumber“){

$url_orig=„http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=#NUMMER#&main=Antwort&s=2“;
$url=str_replace("#NUMMER#",".$callnum.",$url_orig);
WWWReader_SetPage(24942,$url);
WWWReader_UpdatePage(24942);
echo(GetValueString(„Namensaufloesung“));

}
// Auflegen erkennen
$items = explode(chr(13).chr(10), $buffer);
foreach($items as $item)

if($item == „Disconnected“) {

}
//… und den Status-Buffer löschen
SetValueString(„ISDNStatus1“, „“);
exit;
}

Für Hilfe bin ich wie immer Dankbar.

Also vom ersten Anschauen und ohne zu wissen, was wirklich abläuft,würde ich sagen ,das Dein Script nie die if-Bedingung

if ($item == "CallingNumber"){

erfüllt
Warum? Weil Du vorher

substr($item, 0, 13) == "CallingNumber"

verwendest, bedeutet das, das $item mehr zeichen als „CallingNumber“ beinhalten und deshalb nicht ==„CallingNumber“ werden kann.

Ich würde deshalb statt

if ($item == "CallingNumber"){
if (!empty($callnum)) { 

verwenden, da Du diese Variable nur füllst, wenn die Bedingung erfüllt ist. Um die Sache noch rund zu mache, würde ich ganz am Anfang $callnum=null setzen.

HTH
Tommi

Hast du es mit diesem Script versucht ? (funktion findNumberDE())
Ich habe da auch eine Null hinzufügen müssen.

http://www.ipsymcon.de/forum/showpost.php?p=11100&postcount=28

Hallo Zapp,

nein noch nicht, mal sehen ob ich damit klar komme.

Danke für den Tip.

Hallo Zapp,

na da steig ich schon garnicht durch:(

Ich will einfach nur das bei einem Anruf die CallingNumber in das Oertliche gesucht wird und wenn ein Name dazu gefunden wird dieser in eine Variable geschrieben wird oder wenn nicht, Anrufer unbekannt.

Ich Stelle mir vor das während das Telefon klingelt mir IPS über diesen Weg per TTS sagt wer anruft.

Dein Script müsste mit Tommi’s Änderungen funktionieren, wenn du es
auch richtig mit der ISDNStatus1 Variable triggerst.

Probleme, die wir anhand des Scripts nicht sehen können, gibt
es vieleicht in der WWWReader Einstellung.

Eine führende Null fügst du z.B. so in deinem Script ein:


// wer hat angerufen?
if (substr($item, 0, 13) == "CallingNumber"){ // nach "CallingNumber" suchen
$callnum = substr($item, 14, 20); // der Rest ist die Telefonnummer
if (substr($callnum,0,1) != "0") $callnum = "0".$callnum;
}

Danke an Tommi und Zapp,

ich denke ich hab’s hinbekommen.

Hat sich erledigt, Ich hatte noch ein Testscript das die ganze zeit auf die variable getriggert hat. :o

Hallo,

so ganz klappt es noch nicht :frowning:

Könnt ihr euch mal die beiden Scripte ansehen ?

Script 1:

$buffer = GetValueString(„ISDNStatus1“);

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

// wer hat angerufen?
if (substr($item, 0, 13) == „CallingNumber“){ // nach „CallingNumber“ suchen
$callnum = substr($item, 14, 20); // der Rest ist die Telefonnummer

}

//echo „0$callnum“;

SetValueString(„Anrufer“, „$callnum“);
$anrufer = GetValueString(„Anrufer“);

SetValueString(„ISDNStatus1“, „“);

if($anrufer=="") {
exit;
}

$url_orig=„http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=#NUMMER#&main=Antwort&s=2“;
$url=str_replace("#NUMMER#",„0$callnum“,$url_orig );
WWWReader_SetPage(24942,$url);
WWWReader_UpdatePage(24942);
echo(GetValueString(„Namensaufloesung“));
}
IPS_RunScript(„Ansage_Anrufer“);

exit;
?>

Script 2:

include_once(„GlobalDefines.ips.php“);

$buffer = GetValueString(„Anrufer“);
$Namensaufloesung=GetValueString(„Namensaufloesung“);

if($buffer=="") {
TTS_Speak(TTS, „Unbekannter Anrufer“);
}
else
{
TTS_Speak(TTS, „Anruf von „.$Namensaufloesung.““);
}

SetValueString(„Anrufer“, „“);
SetValueString(„Namensaufloesung“, „“);

?>

Script 1 triggert auf die Variable ISDNStatus1 on Update.

Und hier kommt es irgendwie zu einer Schleife, bei einem Anruf läuft das Script immer wieder durch und führt dem entsprechend auch das Zweite immer wieder aus :frowning:

Kann evtl. irgendwer erkennen wo der Fehler liegt ?

Vielen Dank im voraus für die Hilfe.

Hallo,

Dein Triggerproblem wird durch SetValueString(„ISDNStatus1“, „“);
verursacht. Also entweder am Begin auf $IPS_SENDER checken oder auf GetValueString(„ISDNStatus1“)>"" und nur dann den Code ausführen.


SetValueString("Anrufer", "$callnum");
$anrufer = GetValueString("Anrufer");

ist doch das gleiche wie $anrufer=$callnum;
Bist Du Dir sicher, das wirklich nur die Telefonnummer drin stehen kann? Wer weiss, was sonst noch ab position14 stehen kann… Deshalb vorher auf Nummernformat prüfen! Am Anfang hätte ich sicherheitshalber $callnum="" und $anrufer=null gesetzt und das SetValueString erst gemacht, wenn ich weiss, das es wirklich die Nummer ist.


if($anrufer=="") {
exit;
}

Der Form halber schreibt man das normalerweise anders herum (ohne exit)
if ($anrufer>"") {
… Webabfrage
}
Das implizite exit (weil Scriptende) gilt dann für beide Antworten.

HTH
Tommi

Hallo tommi,
hallo hbraun,

bitte verwendet in Euren Scripten kein „exit;“, dazu schaut auch nochmal die Update Hinweise an:

Neue IPS Version:
Nach der Installation
-Statt dem Befehl „exit;“ -> „return;“ verwenden. Bei Exit meldet IPS sonst, dass das Script nicht erfolgreich durchgelaufen ist.
=> Die Search in Files Funktion sollte da gute Dienste leisten

Gruss Torro

Hallo,

Tommi Danke für die Tipps, werde ich berücksichtigen.

Torro Danke für den Hinweis auf „exit“ habe ich schon geändert.

Hallo,

ich habe auch an der Namensauflösung gesessen. Leider komme ich mit den Einstellungen des Parsers nicht klar. In der Variable stehen irgendwelche Daten.
Ich habe es mit den Einstellungen von http://www.ipsymcon.de/forum/showthread.php?t=1290&highlight=oertliche
getestet.

WWW Reader: keine Parameter
Text Parser mit folgenden Regeln:

  1. Cut After: www.dasoertliche.de/DB4Web
  2. Get Between: Tag One > Tag Two </a>

der Wert wird in der Variablen www_TelefonBuchEintrag abgelegt.

Aber dann landen nur wirre Daten von der Page in der Var.

Ich habe mir die Seite die zurück kommt mal angesehen. Aber da steht sehr viel drin. Die Auswertung erscheint mir nicht so einfach.

Könnt Ihr mir mal Eure Einstellungen vom Parser mitteilen?

Fabian

:confused: :confused: :confused:

hat denn keiner eine Idee??? :confused:

Fabian

Ich gehe mal davon aus, dass du die tatsächlichen Tags, die vor und nach Name Vorname stehen, eingetragen hast und nicht die Inhalte aus dem Quote?

Falls nein, meine Testabfrage zeigt folgenden Seiten-Quellcode:

 ... href="home.htm?main=Detailansicht ... &tk=2021464F4C455221224D2E2F
&rid=000000671214600"> Name Vorname</a><br>Strasse, Ort</td> ...

Da sich die Zahlen im Quellcode ändern, müsstest du meiner Meinung nach ungefähr folgendes versuchen:

  1. Schritt: cut text after: href="home.htm?main=Detailansicht
  2. Schritt: get between: "> and </a>

dann sollte Name Vorname in der Variablen stehen.

Hallo zusammen,
ich bin nun auch dabei, bei einem Anruf die eingehende Nummer in eine Variable zu schreiben- und bin da wohl zu d…
Kann jmd. ein simples (funktionstüchtiges) Skript veroeffentlichen, mit dem ich die Calling Number in eine Variable schreiben kann und wie die korrekten Trigger lauten müssen? Ich habe als Anfänger und Autodidakt zwar schon einiges (auf vermutlich umständlichem Weg) geloest- hier komm ich aber nicht weiter und hoffe auf eure Hilfe…
Das mit der Namensaufloesung per Reverse Suche habe ich hinbekommen…

Vielen Dank!!!