NEWS
Tr-064.0 Adapter und unbekannte Anrufe
-
Hallo
Ich habe die Fritzbox 7590 noch mit Fritz!OS 6.92
In der Fritz werden die Anrufe die im Fritz Telefonbuch hinterlegt sind mit Namen angezeigt.
Im tr-064-Adapter unter Objekte/tr-064.0/callmonitor/inbound/callerName aber nicht.
Auch unter Objekte/tr-064.0/callmonitor/lastCall/callerName nicht.
Das Objekt caller wird aber bei beiden angezeigt.
#965 habe ich im Telefon eingegeben.
Was kann ich machen das ich den callerName angezeigt bekomme?
Ich habe z.Z noch eine Gigaset S675iP.
Die holt sich auch den Anrufer Namen aus einem einstellbaren Telefonbuch.
Das möchte ich weiter auch ohne Gigaset S675iP erreichen.
Ich habe ein kleines Script aus einem anderen Forum von PHP auf JavaScript umgeschrieben.
Diese Script holt holt sich anhand der Telefonnummer vom "Das Örtliche" den Namen des Anrufers
wenn er bekannt ist.
Das Script muss ich aber in ioBroker Scripte noch richtig einbinden.
Kommt ein Anruf wird mit callmonitor.ringing das Script gestartet.
on({id: 'tr-064.0.callmonitor.ringing', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val;
Dann soll aus callerName der Name ausgelesen werden.
Wenn kein Name vorhanden dann ins "Das Örtliche" schauen.
Ist dort ein Name vorhanden dann Name in callerName eintragen,
wenn kein Name vorhanden dann Unbekannt in callerNamen eintragen.
Dann müsste das DECT-Fon den Namen anzeigen?
Gruß NetFritz
-
Hallo
callerName wird jetzt nach einem Reset der Fritzbox angezeigt.
Dann geht es mal weiter mit dem Script.
Gruß NetFritz
-
Hallo
Hier mal das Script.
var request = require('request'); on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { // wenn Anruf var value = obj.state.val; var oldValue = obj.oldState.val; log("Skript2 klingeln"); var nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val, 2000, false); // caller Nummer auslesen log(' caller=' + nummer); var namen = String(getState("tr-064.0.callmonitor.inbound.callerName").val, 2000, false); // caller Name auslesen if (!namen.length){ // Namen leer in Fritz Telefonbuch, dann Namen in Das Örtliche suchen log('namen ist leer.'); var url = 'http://www.dasoertliche.de/Controller?form_name=search_inv&ph='+ nummer; // suche namen request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); var matches = body.match(/class="name ".*?<.*?>(.*?)&/); // in matches[1] steht der Namen aus Das Örtliche log('Name' + matches[1]); if (!matches[1].length){ // Das Örtliche kein Name gefunden log('Namen Unbekannt'); setState('tr-064.0.callmonitor.inbound.calleeName').String('Unbekannt'); } else { log (Namen= + matches[1]); setState('tr-064.0.callmonitor.inbound.calleeName').matches[1]; } }); } });
Der letzte Teil die Suche in Das Örtliche ist in diesen Script noch nicht getestet worden.
In einem Test-Script wo die Nummer fest in einer Variable belegt ist geht es.
Unter Instanzen Javascript.0 muss noch das npm Modul "request" eingetragen werden.
Wer Lust hat kann das mal testen.
Es muss ihn jemand anrufen der in Das Örtliche steht und nicht in Fritzbox Telefonbuch.
Gruß NetFritz
-
Hallo NetFritz,
vielen Dank. So ein Script such ich schon lange für den iobroker. Hast du an dem Script noch weiter gearbeitet?
Ich bekomme leider diese Fehlermeldung:
host.iobroker 2018-10-17 16:10:36.402 info Restart adapter system.adapter.javascript.0 because enabled
host.iobroker 2018-10-17 16:10:36.402 error instance system.adapter.javascript.0 terminated with code 0 (OK)
Caught 2018-10-17 16:10:36.402 error by controller[0]: at emitNone (events.js:111:20)
Caught 2018-10-17 16:10:36.402 error by controller[0]: at Object.onceWrapper (events.js:313:30)
Caught 2018-10-17 16:10:36.402 error by controller[0]: at IncomingMessage. <anonymous>(/opt/iobroker/node_modules/request/request.js:1083:12)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at Request.emit (events.js:211:7)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at emitOne (events.js:116:13)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at Request. <anonymous>(/opt/iobroker/node_modules/request/request.js:1161:10)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at Request.emit (events.js:214:7)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at emitTwo (events.js:126:13)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
Caught 2018-10-17 16:10:36.401 error by controller[0]: at Request._callback (script.js.common.dasOertliche:22:64)
Caught 2018-10-17 16:10:36.400 error by controller[0]: TypeError: Cannot read property 'matches' of undefined
javascript.0 2018-10-17 16:10:36.378 info terminating
javascript.0 2018-10-17 16:10:36.369 error at emitNone (events.js:111:20)
javascript.0 2018-10-17 16:10:36.369 error at Object.onceWrapper (events.js:313:30)
javascript.0 2018-10-17 16:10:36.369 error at IncomingMessage. <anonymous>(/opt/iobroker/node_modules/request/request.js:1083:12)
javascript.0 2018-10-17 16:10:36.369 error at Request.emit (events.js:211:7)
javascript.0 2018-10-17 16:10:36.369 error at emitOne (events.js:116:13)
javascript.0 2018-10-17 16:10:36.369 error at Request. <anonymous>(/opt/iobroker/node_modules/request/request.js:1161:10)
javascript.0 2018-10-17 16:10:36.369 error at Request.emit (events.js:214:7)
javascript.0 2018-10-17 16:10:36.369 error at emitTwo (events.js:126:13)
javascript.0 2018-10-17 16:10:36.369 error at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
javascript.0 2018-10-17 16:10:36.369 error at Request._callback (script.js.common.dasOertliche:22:64)
javascript.0 2018-10-17 16:10:36.369 error TypeError: Cannot read property 'matches' of undefined
javascript.0 2018-10-17 16:10:36.369 error uncaught exception: Cannot read property 'matches' of undefined
javascript.0 2018-10-17 16:10:36.361 warn at process._tickCallback (internal/process/next_tick.js:181:9)
javascript.0 2018-10-17 16:10:36.361 warn at _combinedTickCallback (internal/process/next_tick.js:139:11)
javascript.0 2018-10-17 16:10:36.361 warn at endReadableNT (_stream_readable.js:1064:12)
javascript.0 2018-10-17 16:10:36.361 warn at IncomingMessage.emit (events.js:208:7)
javascript.0 2018-10-17 16:10:36.360 warn at emitNone (events.js:111:20)
javascript.0 2018-10-17 16:10:36.360 warn at Object.onceWrapper (events.js:313:30)
javascript.0 2018-10-17 16:10:36.360 warn at IncomingMessage. <anonymous>(/opt/iobroker/node_modules/request/request.js:1083:12)
javascript.0 2018-10-17 16:10:36.360 warn at Request.emit (events.js:211:7)
javascript.0 2018-10-17 16:10:36.360 warn at emitOne (events.js:116:13)
javascript.0 2018-10-17 16:10:36.360 warn at Request. <anonymous>(/opt/iobroker/node_modules/request/request.js:1161:10)
javascript.0 2018-10-17 16:10:36.360 warn at Request.emit (events.js:214:7)
javascript.0 2018-10-17 16:10:36.360 warn at emitTwo (events.js:126:13)
javascript.0 2018-10-17 16:10:36.359 warn at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
javascript.0 2018-10-17 16:10:36.359 warn at Request._callback (script.js.common.dasOertliche:21:13)
javascript.0 2018-10-17 16:10:36.354 warn Wrong type of tr-064.0.callmonitor.inbound.calleeName: "undefined". Please fix, while deprecated and will not work in next versions.
javascript.0 2018-10-17 16:10:36.351 info script.js.common.dasOertliche: NaN
Viele Grüße,
RoliRoland</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>
-
Hallo
Habe am Script noch nicht weiter gemacht.
Das ist aber nicht die ganze Log vom Script.
Ich hatte vorhin einen Anruf wo der Name nicht übermittelt wird.
Dort fing die Log so an:
javascript.0 2018-10-17 16:45:10.643 info script.js.common.ruekwaertesuche: NaN javascript.0 2018-10-17 16:45:10.642 info script.js.common.ruekwaertesuche: NamePraxisgemeinschaft Loccum xxxxxxxxxxxxxxxxxxxx javascript.0 2018-10-17 16:45:10.307 info script.js.common.ruekwaertesuche: caller=0576xxxxx javascript.0 2018-10-17 16:45:10.307 info script.js.common.ruekwaertesuche: Skript2 klingeln
Da hat das Script den Anrufer aus der Datenbank ausgelesen und erkannt.
Dann folgt bei mir die gleiche Fehlermeldung wie bei Dir.
Ich nehme mal an das es damit zusammenhängt wie der Anrufer in den tr-064.0 Adapter eingetragen wird um ihn dann auf den Telefon anzuzeigen.
Das hatte ich erstmal noch nicht getestet.
Werde mal schauen wie das läuft.
Du kannst ja mal so zur Fehlersuche
die beiden Zeihlen mit setState auskommentieren dann dürften die Fehlermeldungen nicht mehr auftreten.
Gruß NetFritz
-
Hallo NetFritz,
du hast recht. Das Log ging so los:
javascript.0 2018-10-17 16:10:36.351 info script.js.common.dasOertliche: NaN
javascript.0 2018-10-17 16:10:36.350 info script.js.common.dasOertliche: NameMxxxxxx xxxx
javascript.0 2018-10-17 16:10:35.947 info script.js.common.dasOertliche: caller=0383486xxxx
javascript.0 2018-10-17 16:10:35.947 info script.js.common.dasOertliche: Skript2 klingeln
javascript.0 2018-10-17 16:10:35.923 info script.js.common.dasOertliche: namen ist leer.
javascript.0 2018-10-17 16:10:35.923 info script.js.common.dasOertliche: caller=0383543xxxx
javascript.0 2018-10-17 16:10:35.917 info script.js.common.dasOertliche: Skript2 klingeln
Der Eintrag caller=0383543xxxx war der Anruf um 16:10:35.923. caller=0383486xxxx mit NameMxxxxxx xxxx war eigentlich ein früherer Anruf. Warum diese auch noch einmal eingelesen wird verstehe ich im Moment noch noch nicht ganz. Leider kann ich den Fehler aktuell nicht mehr reproduzieren. Ich muss mal ein paar Anrufe abwarten.
VG
RoliRoland
-
Hallo
Die Rückwärtssuche in einem Online Telebuch geht wunderbar.
Aber wo muss ich in den tr-064.0 Adapter Objekten den Anrufer namen eintragen,
das der Namen auf den Schurlosen Handaparat im Display erscheint?
"tr-064.0/callmonitor/connect/CalleeName" dort steht auch der Name wenn Anrufer bekannt ist.
Gruß NetFritz
-
Hallo NetFritz,
das Auslesen aus dem Online Telefonbuch scheint gut zu funktionieren.
Aber an der Stelle "setState" in deinem Skript bekomme ich u.a. diese Fehler und unter CalleeName wir nichts eingetrage:
warn wrong type of tr-064.0.callmonitor.inbound.calleeName: "undefined". Please fix, while deprecated and will not work in next versions.
error uncaught exception: Cannot read property 'matches' of undefined
Ist das bei dir auch so?
VG
RoliRoland
-
Mit einem
setState('tr-064.0.callmonitor.inbound.calleeName', 'Unbekannt', true, parseInt(0, 10), false);
bzw.
setState('tr-064.0.callmonitor.inbound.calleeName', matches[1], true, parseInt(0, 10), false);
müsste es es gehen.
VG
RoliRoland