NCID EasyBox 803 Telefondaten auslesen und in EXCEL speichern

  • Seit 4 Wochen bin ich nach Wechsel meines Internetanbieters Besitzer einer EasyBox 800 a.
    Ich musste leider feststellen, dass Die Möglichkeiten der Datenübernahme sehr gering sind (cut and paste).

    Ich fand dann hier im Forum einen Beitrag, der sich mit diesem Problem beschäftigt (NCID Anrufmonitor). Das hat mich dazu veranlasste mich mit Autoit zu beschäftigen. Meinen Dank an den Autor.

    Daraus ist nun ein Programm geworden, dass die Telefondaten in eine Excel-Datei übernimmt. Die Daten werden getrennt nach eingehenden und ausgehenden Verbindungen aufgeführt. Neu hinzugekommene Telefonnummern werden in einem dritten Block aufgeführt. Wenn man hier den Teilnehmer hinzufügt, hat man bald ein gutes Telefonbuch. Hier als Beispiel:
    ]
    Und hier dann der Autoit-Code

    Spoiler anzeigen

    Im Anhang dann noch die EXCEL-Tabelle als Zip-Datei.

    Was ist zu tun?
    Die ZipDatei dekomprimieren, Die Datei abspeichern.
    Den Autoit-code übernehmen, den Pfad der Exceldatei einsetzen, compilieren und hoffentlich Freude haben.

  • Für alle, die noch mit EXCEL 2003 arbeiten ist im Anhang eine Zip-Datei, mit dem Compilierten Programm und der EXCEL 2003 Datei.

    Seit März 2013 habe ich nun eine EasyBox 904 LTE. Auch hier funktioniert das Programm (beide Ausführungen).

    Dateien

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

    7 Mal editiert, zuletzt von Fernando (13. März 2013 um 01:27) aus folgendem Grund: Beim Konvertieren der EXCEL-Datei von Excel 2007 auf Excel 2003 hatte ich nicht ganz sauber gearbeitet. Die Datei lief auf einen Fehler. Der ist jetzt behoben. Viel Freude mit der neuen Version

  • Die Autorin freut sich das sie mit ihrem Programmbeispiel jemanden helfen konnte und auch das Du das für deine Zwecke erweitern konntest :)
    Nun hat das Forum dadurch sogar einen neuen User bekommen, lief doch bisher alles Perfekt.

    Ich hab den Anrufmonitor auch noch ein wenig erweitert.
    Die Anzeige der Anrufer oder getätigten Anrufe erfolgt in einem eigenen Bereich, zusätzlich wird man über Anrufe informiert.
    z.B in Form eines kleinen Fensters auf dem Computer oder als Email, sollte man unterwegs sein.

    Dazu dann die schon beschriebene Rufnummernabfrage mittels KlickTel.

    Man sieht, das ganze ist Ausbaufähig und kann man ja mal an Vodafone schicken :D

  • Ich bin vor zwei Wochen auf der Suche nach der Lösung meines Problems unter anderem auch auf AutoIt incl. diesem Forum gestossen und muss sagen, diese Programiersprache (darf man sie so nennen?) ist sehr interessant.
    Auch wenn ich sie noch nicht beherrsche, versuche ich zumindest sie zu verstehen und nachzuvollziehen.
    Klappt eigentlich ganz gut.

    Den hier aufgeführten Script habe ich allerdings vergeblich versucht an meine Anforderungen anzupassen.
    Die sehen nämlich vor, dass auch die rufende oder angerufene Nummer mit angezeigt und abgespeichert wird, genauso, wie es im Web-Interface-Log unter Sprache eingetragen ist.
    (Hier läuft ein echter ISDN-Anschluss!)

    Nach vielen, vergeblichen Versuchen bin ich darauf gekommen, dass hiermit nur der NCID-Server abgefragt wird, welcher scheinbar im Protokoll nur die Voice-over-IP Nummern speichert.
    Es gibt zwar einen LINE-Eintrag, aber der ist immer leer.
    Vorhanden sind sie jedoch, sonst könnte man sie ja über das Web-Interface nicht sehen.

    Per Telnet kann ich mir die CIDLOG über Port 3333 anzeigen lassen,
    Verbindungen über diverse andere Ports sind auch möglich (nicht aber über den Standard 23!), allerdings wird
    danach die Connection sofort gekappt oder bricht bei der ersten Eingabe
    zusammen.

    Hat jemand eine Idee, was man abfragen müsste, und vor allem wie, um an diese Daten heran zu kommen?

  • Ich bin mir nicht sicher, ob ich Dir helfen kann, da die Frage auf die technische Seite zielt. Ich selber habe einen LTE-Anschluß.
    Voraussetzung, dass die Daten übernommen werden können ist, dass auf der EasyBox unter Extras --> NCID die Häkchen gesetzt sind.

    dann werden die Gespräche auch unter Sprache --> Status eingetragen

    Diese dort eingetragenen Daten werden von mir ausgelesen und archiviert.
    Es sollte auch bei einem ISDN-Anschluss so funktionieren.

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

  • Ich danke dir erstmal für die schnelle Antwort.

    Das Prinzip von NCID und die Vorraussetzungen habe ich schon verstanden.
    Leider sind deine Bilder etwas kurz geraten (die Gründe weshalb verstehe ich auch).
    Komplett sieht es bei mir so aus:

    autoit.de/wcf/attachment/19312/
    autoit.de/wcf/attachment/19317/

    Müsste bei dir eigentlich auch so angezeigt werden.

    Diese 624 und 548 sind zwei meiner Anschlussnummern ohne Vorwahl (ja, ich habe noch dreistellige).
    Mich interessiert das von (Ausgehend) bzw. nach (Eingehend), welches irgendwo gespeichert sein muss.

    Laut Specificationen http://ncid.sourceforge.net/NCID-SDK.pdf ist es auch vorgesehen, nur LINE*label ist bei mir immer leer.

  • Hier die Datenblöcke, wie sie auf der EasyBox pro Gespräch gespeichert sind.
    Script Daten der eingehenden Gespräche:

    von diesen werden in meinem Programm nur voip_i_Phone, voip_i_Date und voip_i_Keep genutzt.

    Script Daten der ausgehenden Gespräche:

    von diesen werden in meinem Programm nur voip_o_Phone, voip_o_Date und voip_o_Keep genutzt.
    Unter welcher Bezeichnung sich LINE*label befindet kann ich nur vermuten ( voip_i_AC und voip_o_AC)

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

  • Danke Dir.

    _AC_Phone war die Lösung.

    Das Script von JaneDoe habe ich schon angepasst.
    Man muss nur die Sortierung ergänzen, mehr ist nicht nötig.

    [autoit]

    ;###############################################
    ; Anruflisten sortieren in Nr.Datum.Dauer
    ;###############################################
    Func _SortAnrufer($EB_Sort)
    Dim $EB_Array
    Local $EB_ResultArray[1][3],$EB_Lenght,$EB_End,$EB_GetStr
    Local $ArSize=0,$ArRegEx,$EB_Anrufer,$EB_Date,$EB_Lenght,$EB_AC_Phone
    $EB_End = StringInStr($EB_Anrufliste, 'var '&$EB_Sort&'_count=') ; ende der einträge finden
    $EB_GetStr= $EB_End-$EB_Start ; zeichen berechenen zum ausschneiden
    $EB_Eintraege=StringMid($EB_Anrufliste, $EB_Start, $EB_GetStr) ; telefonliste ausschneiden
    $EB_Array = StringSplit($EB_Eintraege, @CRLF) ; telefonliste in array splitten

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($EB_Array)-1 ; jeden eintrag abklappern...
    ; voip_i_Phone[x] = 'suchtext';
    $ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_"&$EB_Sort&"_Phone([^;]*)", 1) ; 1 regex
    if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1) ; 2 regex...profi kann da sicher 1 regex machen :)
    if not @Error then $EB_Anrufer= $ArRegEx[0]

    [/autoit][autoit][/autoit][autoit]

    ; voip_i_Date[x] = 'suchtext';
    $ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_"&$EB_Sort&"_Date([^;]*)", 1) ; 1 regex
    if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1) ; 2 regex...profi kann da sicher 1 regex machen :)
    if not @Error then $EB_Date= $ArRegEx[0]

    [/autoit][autoit][/autoit][autoit]

    ; voip_i_AC_Phone[x] = 'suchtext';
    $ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_"&$EB_Sort&"_AC_Phone([^;]*)", 1) ; 1 regex
    if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1) ; 2 regex...profi kann da sicher 1 regex machen :)
    if not @Error then $EB_AC_Phone= $ArRegEx[0]

    [/autoit][autoit][/autoit][autoit]

    ; voip_i_Keep[x] = 'suchtext';
    $ArRegEx = StringRegExp($EB_Array[$i], "(?i)voip_"&$EB_Sort&"_Keep([^;]*)", 1) ; 1 regex
    if not @Error then $ArRegEx = StringRegExp($ArRegEx[0], "(?i)'([^']*)", 1) ; 2 regex...profi kann da sicher 1 regex machen :)
    if not @Error then
    $EB_Lenght= $ArRegEx[0]

    [/autoit][autoit][/autoit][autoit]

    ReDim $EB_ResultArray[$ArSize+1][4] ; neuer eintrag mit gefundenen daten...(erhöht um 1)
    $EB_ResultArray[$ArSize][0]= $EB_Anrufer ; anrufer nummer
    $EB_ResultArray[$ArSize][1]= $EB_Date ; anrufer datum und zeit
    $EB_ResultArray[$ArSize][2]= $EB_AC_Phone ;ein-/ausgehende Nummer
    $EB_ResultArray[$ArSize][3]= $EB_Lenght ; anruf dauer oder 00:00:00 = anruf verpasst
    $ArSize+=1
    endif
    next
    Return $EB_ResultArray
    EndFunc

    [/autoit]

    Momentan kämpfe ich noch mit der Übergabe an Excel, da wird es nicht angezeigt, obwohl die Felder vorhanden sind.
    Aber das wird schon, irgendwie kenne ich ja das Problem.
    Zumindest ist jetzt klar, dass die Daten vorhanden sind und auch gelesen werden können.

    Wenn das erledigt ist, geht es ans Duplikate löschen.