• Dieses Thema hat 29 Antworten, 5 Teilnehmer, und wurde zuletzt am vor 8 Jahre, 7 Monate von Anonym aktualisiert.
Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 30)
  • Autor
    Beiträge
  • #16525
    Anonym
    Inaktiv

    Nachricht verschoben zu „Version für Telefon-Anschluss (T-Net)“

    Ich nutze schon seit PowerISDNMonitor-Zeit die Server/Client Software (über FritzBox CAPI).
    Geniale Software…

    Leider musste ich die Telefon-Anlage umstellen auf einen Anlagenanschluss (Auerswald Commander Basic 2), wodurch der Fritz!Box-CAPI Zugriff entfällt und ich auf TAPI umsteigen muss.

    Leider stehe ich jetzt auch in dieser uralten Stelle
    2011 viewtopic.php?f=23&t=1626#p8998 (keine Regel / Filter möglich)
    2008 viewtopic.php?f=9&t=339


    Ich habe 24 Leitungen und wenn es klingelt werden soviele Nachrichten generiert wie Telefone klingeln.

    Frage:
    Ist als Workaround eventuell eine TAPI Line Auswahl auf unterer Ebene möglich (als dirty Hack)?

    viewtopic.php?f=27&t=794#p4650
    @thilo.brandt wrote:

    momentan nimmt jAnrufmonitor immer alle verfügbaren TAPI-Leitungen zur Überwachung, d.h. kommt ein Anruf auf verschiedenen Leitung zum jAnrufmonitor, wird der Anruf mehrfach im Programm verarbeitet. Ich habe den Punkt schon auf meiner ToDo-Liste für zukünftige Versionen. Als Work-a-round könntest du derzeit lediglich eine Leitung aus deinen Windows-TAPI-Einstellungen entfernen.

    Ich finde leider diese Einstellung nicht. Wie kann man einzelne Leitungen aus den Windows-TAPI-Einstellungen entfernen?

    Danke,
    Thomas



    Info zu Auerswald-TAPI-Treiber:
    Ich kann bestätigen, dass der aktuelle Auerswald Lan Tapi Treiber von jam nicht erkannt wird.
    Ich musste auch einen alten Ositron Lan Tapi Treiber installieren

    viewtopic.php?f=27&t=1185#p6596
    @Chuckyaliasj154 wrote:

    Beim Auerswald Lan Tapi Treiber wird dieser nicht mal von jam erkannt.
    Bei dem Ositron Lan Tapi Treiber ist es anders. Dieser wird vom jam erkannt.

    #27140
    Anonym
    Inaktiv

    Hallo Thilo,

    die TAPI-Line-Frage wurde hier wohl schon zu oft gestellt 🙂

    Ich fragte nach einem Hack und da wollte ich „schnell mal“ die XTapi.dll anpassen, da hier der Source Code vorliegt.

    Nach meinen Recherchen verwendest Du die 32 Bit XTapi.dll Version aus diesem Projekt
    MSTAPI Service Provider http://sourceforge.net/projects/xtapi/files/MSTAPI%20Service%20Provider/
    (eine 64 Bit TAPI Version wurde nie realisiert)

    der o.g. Link ist aber aus dem Jahr 2002 ( Beta Release 0.10 XTapi.dll vom ‎21. ‎Juli ‎2002)
    Du verwendest in der mod-mon-xtapi.1.0.11.jam eine XTapi.dll vom ‎22. ‎Juni ‎2011

    ein String-Vergleich ergab kleine Unterschiede (Deine Erweiterung von logs/mstapi.log), aber die Funktionsaufrufe scheinen zu passen

    strings -n 10 mod-mon-xtapi.1.0.11.jamXTapi.dll | grep -i MSTAPI
    logs/mstapi.log
    _Java_net_xtapi_serviceProvider_MSTAPI_answerCall@12
    _Java_net_xtapi_serviceProvider_MSTAPI_connectCall@20
    _Java_net_xtapi_serviceProvider_MSTAPI_dropCall@12
    _Java_net_xtapi_serviceProvider_MSTAPI_getCallInfo@12
    _Java_net_xtapi_serviceProvider_MSTAPI_initTapi@8
    _Java_net_xtapi_serviceProvider_MSTAPI_monitorDigits@16
    _Java_net_xtapi_serviceProvider_MSTAPI_openLine@16
    _Java_net_xtapi_serviceProvider_MSTAPI_playSound@16
    _Java_net_xtapi_serviceProvider_MSTAPI_recordSound@16
    _Java_net_xtapi_serviceProvider_MSTAPI_sendDigits@16
    _Java_net_xtapi_serviceProvider_MSTAPI_shutDown@8
    _Java_net_xtapi_serviceProvider_MSTAPI_stopPlaying@12
    _Java_net_xtapi_serviceProvider_MSTAPI_stopRecording@12

    Fragen:
    – Ist XTapi.dll die richtige Stelle, um Tapi in JAM auf eine einzelne Leitung hart zu beschränken?
    – Verwendest Du für die XTapi.dll einen eigenen Fork oder hast Du eine Quelle im Netz für den aktuellen Source Code?
    – Hast Du eine Idee, wo man schneller den Hebel (einzelne Leitung filtern) ansetzen kann?

    PS: das sieht nach eigener XTapi.dll Anpassung aus: viewtopic.php?f=23&t=1410#p8034

    Gruß,
    Thomas

    #27141
    Thilo Brandt
    Keymaster

    Hallo Thomas,

    ich nutze einen eigen Fork in github: https://github.com/tbrandt77/janrufmonitor/tree/master/modules/tapi

    Wenn du eine generische Anpassung vornehmen möchtest, kann ich deinen commit auch wieder im Github merken 🙂

    Viele Grüße
    Thilo

    #27142
    Anonym
    Inaktiv

    Danke für den Link. Ich wusste gar nicht, dass der JAM Code öffentlich ist.
    Wer lesen kann ist klar im Vorteil: https://www.janrufmonitor.de/developer.html

    Zum leichtsinnigen Stichwort „schnell mal“ 😀 :
    An welcher Stelle würdest Du die TAPI-Line-Auswahl patchen (jar/dll)?

    #27143
    Thilo Brandt
    Keymaster

    @tomas12 wrote:

    An welcher Stelle würdest Du die TAPI-Line-Auswahl patchen (jar/dll)?

    Grundsätzlich bevorzuge ich das JAR (Java Coding) zur Auswahl.

    #27144
    Anonym
    Inaktiv

    Hallo Thilo,

    dank https://www.janrufmonitor.de/developer.html steht die Entwicklungsumgebung 😀

    jamjanrufmonitormodulestapi [master +0 ~0 -13]> ant
    Buildfile: jamjanrufmonitormodulestapibuild.xml
    ...
    bundle_module:
    [echo] jAnrufmonitor Kernel framework compile...

    bundle:
    [zip] Building zip: jamjanrufmonitordist20140514modulesmod-mon-xtapi.1.0.11.jam.zip

    BUILD SUCCESSFUL
    Total time: 1 second

    Leider finde ich mich in dem JAVA Code nicht so schnell zurecht.
    Ich habe folgenden Ansatz für einen TAPI-Hack gefunden:

    Wie Du im Screenshot im ersten Bild siehst, ersetzt die Auerswald die externe MSN durch die interne Gruppennummer (im Bild **8751), welche für alle klingelnden Telefone gleich ist.
    Dadurch ist kein Filtern möglich.

    Wenn mehrere Telefone klingeln steht im LogFile folgendes
    tapi-pattern.log

    14.05.2014 19:52:37: *,2,5,1,0,0
    14.05.2014 19:52:38: *,2,8,1,0,0
    14.05.2014 19:52:38: *,2,9,1,0,0
    14.05.2014 19:52:38: *,2,13,1,0,0
    14.05.2014 19:52:38: *,2,15,1,0,0
    14.05.2014 19:52:38: *,2,17,1,0,0
    14.05.2014 19:52:38: *,2,18,1,0,0
    14.05.2014 19:52:38: *,2,19,1,0,0
    14.05.2014 19:52:38: *,2,21,1,0,0

    die zweite Ziffer (8,9 usw) gibt die interne Nummer des Telefon an, welches klingelt

    im Quellcode ist das die Nummer dwInstance
    XTapiMonitor.java


    private void detectTapiPattern(int dwDevice, int dwMessage, int dwInstance,
    int dwParam1, int dwParam2, int dwParam3) {
    ...
    StringBuffer pattern = new StringBuffer();
    pattern.append(formatter.format(new Date()));
    pattern.append(": ");
    pattern.append("*");
    pattern.append(",");
    pattern.append(dwMessage);
    pattern.append(",");
    pattern.append(dwInstance);
    pattern.append(",");
    pattern.append(dwParam1);
    ...

    bzw. mit „jamlogger.level=ALL“ im jam-0.log
    findet sich diese Nummer unter tapi.instance

    [ INFO - 14/Mai/2014:19:34:57 +0200 - EventThread#1 - de.janrufmonitor.service.identification.QuickIdentify.enabledReceived() - New incoming call received for identification: {CALL: [UUID: d826cdfb-4501-0010-0080-af2ca6a9d8ba][{CALLER: [UUID: d726cdfb-4501-0010-0080-af2ca6a9d8ba][Name: ][Phonenumber: 123456789]{add=add = , fn=fn = , ln=ln = }}][MSN: 624][CIP: 4 (Analoger Telefondienst/Fax G3)][DATE: Wed May 14 19:34:57 CEST 2014]{tapi.device=tapi.device = 67534, tapi.instance=tapi.instance = 8, start-ring=start-ring = 1400088897239, status=status = missed, tapi.key=tapi.key = 67534-8}} ]
    [ INFO - 14/Mai/2014:19:34:57 +0200 - EventThread#3 - de.janrufmonitor.service.identification.QuickIdentify.enabledReceived() - New incoming call received for identification: {CALL: [UUID: da26cdfb-4501-0010-0080-af2ca6a9d8ba][{CALLER: [UUID: d926cdfb-4501-0010-0080-af2ca6a9d8ba][Name: ][Phonenumber: 123456789]{add=add = , fn=fn = , ln=ln = }}][MSN: 624][CIP: 4 (Analoger Telefondienst/Fax G3)][DATE: Wed May 14 19:34:57 CEST 2014]{tapi.device=tapi.device = 66562, tapi.instance=tapi.instance = 9, start-ring=start-ring = 1400088897239, status=status = missed, tapi.key=tapi.key = 66562-9}} ]

    Frage:
    Kannst Du mir einen Tip geben, an welcher Stelle ich in der JAM-TAPI-Benachrichtigung die Nummer der MSN (=interne Gruppennummer) gegen die tapi.instance alias dwInstance (=Nummer des Telefons) ersetze?

    Dann könnte man die Benachrichtigungen bei TAPI nach der LINE (=Telefon) filtern.

    Danke 💡

    #27145
    Thilo Brandt
    Keymaster

    Hallo Thomas12,

    du findest die MSN Erzeugung in TapiMonitor.java in der Methode private void signalDoCallConnect(int dwDevice, int dwInstance) { … }:


    ICall c = null;
    if (callerInfo.length>2) {
    m_logger.info("Called extension from TAPI: "+callerInfo[3]);
    c = new XTapiCall(dwDevice, dwInstance,
    removeSpecialChars(callerInfo[1]), callerInfo[3], this.m_configuration).toCall();
    }

    callerInfo[3]) enthält die MSN. In der Call-Klasse XTapiCall kannst in der Methode toCall() nutzen um die MSN und tapi.instance zu tauschen.

    Viele Grüße
    Thilo

    #27146
    Anonym
    Inaktiv

    DANKE!!

    der Patch in
    XTapiMonitor.java (wg. Bold-Markierung als Quote)

    private void signalDoCallConnect(int dwDevice, int dwInstance) {
    String[] callerInfo = this.getCallerInfoFromTapi(dwDevice);
    if (callerInfo == null) {
    return;
    }

    m_logger.info(„Caller information from TAPI: „+callerInfo[0]+“, „+callerInfo[1]);

    ICall c = null;
    if (callerInfo.length>2) {
    m_logger.info(„Called extension from TAPI: „+String.valueOf(dwInstance));
    c = new XTapiCall(dwDevice, dwInstance,
    removeSpecialChars(callerInfo[1]), String.valueOf(dwInstance), this.m_configuration).toCall();
    } else {
    c = new XTapiCall(dwDevice, dwInstance,
    removeSpecialChars(callerInfo[1]), this.m_configuration).toCall();
    }

    führt dazu, dass anstatt der internen MSN (=Gruppe, siehe Screenshot im ersten Post) die tapi.instance (Device-ID) angezeigt wird

    diese Nummer lässt sich in
    Administration / Grundeinstellung / MSN Verwaltung bequem filtern um mehrfach-logging zu vermeiden

    PS: Ich habe keine Ahnung, was diese tapi.instance für eine fortlaufende Nummer ist (d.h. wie sie generiert wird, fängt bei mir mit 5 an).
    Im Tapi-Explorer wird diese Nummer als Device-ID geführt (im Screenshot 5).
    Sie enspricht nicht der Apparate-Nummer (im Screenshot 31).
    Ich hoffe mal, dass diese Nummer fest ist und nicht irgenwie wechselt (einen Neustart hat dieNummer überlebt)

    #27147
    Thilo Brandt
    Keymaster

    Hi Thomas,

    Cool !!! Proble, ist nur, dass die tapi.instance nicht bei TAPI Implementierung die MSN beinhaltet. Das scheint von Hersteller zu Hersteller verschieden zu sein. Aber könnte mir vorstellen das tapi-Feld für MSN in der Konfiguration also optionaler Parameter einzubinden.

    Viele Grüße
    Thilo

    #27148
    Anonym
    Inaktiv

    JAVA ist leider nicht meine Welt 😳

    wie oben schon geschrieben, hatte ich (erfolglos) versucht, mich in die XTAPI JTapi Implementation (XTapi.dll) in http://sourceforge.net/projects/xtapi/files/MSTAPI%20Service%20Provider/ einzulesen
    ich dachte ganz simple, das XTapi.dll ein paar Funktionen exportiert die man einfach verfolgen kann … nun ja … wäre da nicht die objektorientierte Programmierung



    An dieser Stelle liest jAnrufmonitor die echte Tapi Line Number aus:

    Damit kennt man die Zuordnung der tapi.instance (Device-ID) und der Tapi-Line-Number und könnte somit die Telefonnummer anstatt der Device-ID ausgeben

    XTapiMonitor.java

    		public String[] getDescription() {
    String[] info = new String[this.m_tapiHandles.entrySet().size() + 2];
    info[0] = "XTapiMonitor Module 1.0";
    info[1] = "Detected TAPI devices:";
    Iterator i = this.m_tapiHandles.entrySet().iterator();
    int j = 2;
    while (i.hasNext()) {
    TapiHandle th = (TapiHandle) ((Map.Entry) i.next()).getValue();
    info[j] = "t" + th.getName();
    j++;
    }
    return info;
    }

    das letzte Element des Strings getName ist die Nummer des Telefons

    #27149
    Anonym
    Inaktiv

    zur TAPI-Device-ID
    Windows TAPI beginnt mit der Zählung der DeviceID bei Null. (siehe Screenshot unten)
    Vor der Auerswald Telefonanlage kommen da noch VPN-RAS-Verbindungen usw.
    Somit hängt die Nummer von der lokalen Rechnerkonfiguration ab.



    hier ist die Zuordnung LineHandle (65862) zu LineName (Auerswald COMmander 32)

    XTapiMonitor.java

    				for (int i = 0; i < n; i++) {
    nameOfLine = new StringBuffer();
    m_lineHandle = m_tapi.openLineTapi(i, nameOfLine);
    if (m_lineHandle > 0) {
    m_logger.info("Opening line #" + m_lineHandle);
    m_logger.info("Opening line name "
    + nameOfLine.toString());
    m_tapiHandles.put(new Integer(m_lineHandle),
    new TapiHandle(m_lineHandle, nameOfLine
    .toString()));
    }
    }

    bzw. im jam-0.log

    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line #65862 ]
    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line name Auerswald COMmander 32 ]
    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line #65879 ]
    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line name Auerswald COMmander 33 ]
    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line #65537 ]
    [ INFO - 14/Mai/2014:19:34:47 +0200 - JAM-XTapiMonitorNotifier-Thread-(deamon) - de.janrufmonitor.xtapi.XTapiMonitor$XTapiMonitorNotifier.run() - Opening line name Auerswald COMmander 34 ]

    Fazit: Die Apparate-Nummer lässt sich einfach aus dem String LineName herausschneiden

    #27150
    Anonym
    Inaktiv

    gelöscht

    #27151
    Anonym
    Inaktiv

    die Zuordnung des TAPI-Line-Strings zur DeviceID (zählt ab 0) erfolgt in dem Augenblick, wenn jAnrufmonitor alle Tapi-Geräte abklappert um sie zu öffnen
    (man muss die Zuordnung nur noch speichern)

    XTapiMonitor.java


    protected class XTapiMonitorNotifier implements Runnable, IEventReceiver, IEventSender,
    ...
    for (int i = 0; i < n; i++) {
    nameOfLine = new StringBuffer();
    m_lineHandle = m_tapi.openLineTapi(i, nameOfLine);
    if (m_lineHandle > 0) {
    m_logger.info("Opening line #" + m_lineHandle);
    m_logger.info("Opening line name "
    + nameOfLine.toString());
    numberOfLine = nameOfLine.toString().replaceAll("[^0-9]+", "");
    m_tapiHandles.put(new Integer(m_lineHandle),
    new TapiHandle(m_lineHandle, nameOfLine
    .toString()+" ( Nummer:"+ numberOfLine +" DeviceID:"+String.valueOf(i)+" )"));
    }
    }

    ich habe mal den String erweitert um die DeviceID und die Telefonnummer aus dem String herausgefiltert

    #27152
    Anonym
    Inaktiv

    ich habe als dirty Hack (ein globales LineNumberArray für max. 100 Tapi Devices)
    drei Code-Zeilen in XTapiMonitor.java geändert,
    so dass jetzt anstatt der für alle Telefone identischen Gruppennummer,
    die Apparate-Nummer (= filterbare MSN) geloggt wird

    /diff XTapiMonitor.java.orig XTapiMonitor.java.patched -c
    *** XTapiMonitor.java.orig 2014-05-14 17:44:27.564726500 +0200
    --- XTapiMonitor.java.patched 2014-05-19 16:10:33.419023400 +0200
    ***************
    *** 97,102 ****
    --- 97,104 ----
    private List m_proceededCalls;

    private int m_lineHandle;
    +
    + private int[] _LineNumberArray = new int[100];

    public void run() {
    try {
    ***************
    *** 122,127 ****
    --- 124,130 ----
    m_logger.info("Opening line #" + m_lineHandle);
    m_logger.info("Opening line name "
    + nameOfLine.toString());
    + _LineNumberArray=Integer.valueOf("0"+nameOfLine.toString().replaceAll("[^0-9]+", ""));
    m_tapiHandles.put(new Integer(m_lineHandle),
    new TapiHandle(m_lineHandle, nameOfLine
    .toString()));
    ***************
    *** 324,330 ****
    if (callerInfo.length>2) {
    m_logger.info("Called extension from TAPI: "+callerInfo[3]);
    c = new XTapiCall(dwDevice, dwInstance,
    ! removeSpecialChars(callerInfo[1]), callerInfo[3], this.m_configuration).toCall();
    } else {
    c = new XTapiCall(dwDevice, dwInstance,
    removeSpecialChars(callerInfo[1]), this.m_configuration).toCall();
    --- 327,333 ----
    if (callerInfo.length>2) {
    m_logger.info("Called extension from TAPI: "+callerInfo[3]);
    c = new XTapiCall(dwDevice, dwInstance,
    ! removeSpecialChars(callerInfo[1]), String.valueOf(_LineNumberArray[dwInstance]), this.m_configuration).toCall();
    } else {
    c = new XTapiCall(dwDevice, dwInstance,
    removeSpecialChars(callerInfo[1]), this.m_configuration).toCall();
    #27153
    Anonym
    Inaktiv

    Interessantes Thema, denn ich habe ein ähnliches Problem und einen Feature Request gestellt um die Mehrfachmeldungen reduzieren zu können. In meinem Fall habe ich aber in den Einstellungen von Windows (Telefon & Modem -> erweitert) den „Dienstanbieter für Funkwerk TK-Anlagen“ konfigurieren können. Aber ich möchte mehrere Eintragungen aktiv lassen um abgehend ausgelöst durch die Anwendung am PC wählen zu können. Das geht aber nur wenn die TAPI für die Nebenstellen auch aktiv sind.

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 30)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.