Isdnlogd

Dames, Heren,

Het is mij gelukt om met visual studio C “caller id” informatie uit een isdnlijn in een output file te krijgen. Moet alleen nog verder in het programma duiken om de precieze locatie te vinden.

To do list:

  1. Het als service (windows 2000, XP, etc) programmeren;
  2. Een mysql koppeling programmeren.

In mijn beeld gaat Isdnlogd de isdn lijnen monitoren, dus een technische monitoringstool. Capimonitor zie ik meer als rapportage tool voor end users gebaseerd op de nog te ontwikkelen “database browser”.

Belt iemand met een callerid die niet in de capimonitor “database browser” staat dan kan je in de browser de informatie in gaan vullen. Hierna kan de entry gesynchroniseerd worden op internet. Dit houdt in als je hem public eigenschap meegeeft iedereen op internet de nieuwe informatie krijgt in zijn database.

De vriendelijke groet Jan Marco

Goedemiddag,

Allereerst dank aan RGJ inzake het opnieuw online zetten van het forum. Jammer dat de oude bestanden “verdwenen” zijn.

Jan marco,
Goed dat je in visual studio c een begin hebt kunnen maken voor een vervangende capimonitor.
Zoals je weet wil ik graag e.e.a. testen

Inzake de nieuwe foongrep i.c.m. met huidige capi monitor:
CM wordt bij mij bij het opstarten van windows automatisch mee opgestart. Probleem is dat ik elke keer als computer (lees CM) opnieuw is opgestart, handmatig via het instellingen menu CM nogmaals de locatie van foongrep moet wijzen, ondanks dat de goede directory en de capistatus verschijnen.
Doe ik dit niet, dan wordt, ongeacht het nummer wat binnenkomt, altijd de gegevens getoond van het nummer wat het laatst binnenkwam voordat de computer werd afgesloten.

Kort gezegd, CM / foongrep onthoud de laatste gegevens, maar vernieuwd deze niet tenzij de directory van foongrep opnieuw wordt aangewezen.
hoop dat eea duidelijk is, zo niet dan hoor ik het wel

Germ

Hoi Germ,

Goed dat je in visual studio c een begin hebt kunnen maken voor een vervangende capimonitor.

Ik ga dus capimonitor splitsen in twee tools:

  1. Een isdnlogd (technische) monitoring tool;

  2. rapportage tool (database browser, wat nu de capimonitor klapper is).

ad 1) Isdnlog in portable C code zonder grafische zaken zoals MFC. Je moet het een beetje als de code van mysqld zien.

ad 2) Daarentegen zal de database browser wel in MFC (en later in java) gemaakt worden. Het voordeel van een generieke database browser is dat je het ook kan gebruiken bij de andere bronnen (postcodepro, kvk-cd, dm-cd, route/map informatie, etc.)

Zoals je weet wil ik graag e.e.a. testen

Perfect --)

Ik denk dat het niet zo lang gaat duren voordat ik iets wat werkt afheb.

Ik denk aan:

1)Proces/programma isdnlogd.exe die via ODBC in (Access, MySQL, Oracle, Process, DB2, etc) logt.

  1. Proces/programma isdnlogexampled.exe die in een simpele output bestand logt.

  2. Proces/programma fshisdnlogd.exe die in MySQL logt.

N.B. Naamgeving kan nog wel veranderen.

Inzake de nieuwe foongrep i.c.m. met huidige capi monitor: CM wordt bij mij bij het opstarten van windows automatisch mee opgestart. Probleem is dat ik elke keer als computer (lees CM) opnieuw is opgestart, handmatig via het instellingen menu CM nogmaals de locatie van foongrep moet wijzen, ondanks dat de goede directory en de capistatus verschijnen.

Misschien foongrep in c:\cdfoon zetten. Ik geloof dat dit de default directory is van de originele CM. Ik geloof dat ik dit fenomeen ook al heb gezien.

Doe ik dit niet, dan wordt, ongeacht het nummer wat binnenkomt, altijd de gegevens getoond van het nummer wat het laatst binnenkwam voordat de computer werd afgesloten.

Foongrep werkt als volgt. CM doet een call naar foongrep met een telefoonnummer. Is het nummer niet te vinden in de cdfoon dan wordt een leeg bestand opgeleverd. Is er wel iets te vinden dan komt er 1 entry in capimon.log.

Jij geeft aan dat als je CM niet opnieuw de foongrep directory zet hij wel de file capimon.log pakt die mogelijk gevuld is met oude info, maar NIET het programma “foongrep.exe met telefoonnummer” aanroept.

Hoe te oplossen? Misschien heeft iemand anders op het forum een pasklare oplossing —) Ik ben niet zo goed in CM.

De vriendelijke groet Jan Marco

Ik heb capimonitor op twee pc’s geinstalleerd. Tijdens het testen werkte het op de ene computer goed, en op de andere had ik hetzelfde probleem als Germ. Het verschil is dat op de ene computer foongrep in de capimonitor directory staat (goed). Op de andere staat foongrep in een andere directory (fout). Ik denk dat er in foongrep nog ergens een foutje mbt het pad staat. Volgens mij werkt foongrep prima als je in de code alleen de filenamen (capimon.log + capimon2.log) zonder pad gebruikt.

Vincent

Hoi Vincent,

Hierbij de messages bij het binnen bellen van mijn zus naar mijn vaste lijn. (nummers even gemasked).

Je hebt natuurlijk minstens twee isdn kanalen. Je moet bijvoorbeeld wel weten welke kanaal wordt “gecleared”.

Eigenlijk wil je onderstaande informatie in een mysql record “insert structuur” gaan gieten.

De tijd is ook wel iets om naar te kijken. Op 0 seconden wordt isdnlog zo gezet dat alles gemonitoord wordt. Op 1 minuut en 18 seconden komt een call binnen van mijn zus. Na 17 minuten en 45 seconden wordt de verbinding verbroken met “Non-selected user clearing”.

De vriendelijke groet Jan Marco

P.S. Onderstaande messages worden opgebouwd in “PROTOCOL_MESSAGE_2_PARS”, dus hieruit de info gaan halen. Ik zie ook call_back methode. Mogelijk kan ik hier vanaf komen --)

±--------------------------------------------------------------------
| COMMON-ISDN-API Development Kit www.foondump.nl Version 0.01
|
| Sat Jul 03 19:42:23 2004
±--------------------------------------------------------------------

LISTEN_REQ ID=001 #0x0000 LEN=0026 00:00:00:00
Controller/PLCI/NCCI = 0x1
InfoMask = 0x0
CIPmask = 0x1fff03ff
CIPmask2 = 0x0
CallingPartyNumber = default
CallingPartySubaddress = default

LISTEN_CONF ID=001 #0x0000 LEN=0014 00:00:00:00
Controller/PLCI/NCCI = 0x1
Info = 0x0

CONNECT_IND ID=001 #0x8000 LEN=0043 00:00:01:08
Controller/PLCI/NCCI = 0x101
CIPValue = 0x1
CalledPartyNumber = <80>531234567
CallingPartyNumber = <21 81>596612345
CalledPartySubaddress = default
CallingPartySubaddress = default
BC = default
LLC = default
HLC = default
AdditionalInfo = default

ALERT_REQ ID=001 #0x0000 LEN=0017 00:00:01:08
Controller/PLCI/NCCI = 0x101
AdditionalInfo
BChannelinformation = default
Keypadfacility = default
Useruserdata = default
Facilitydataarray = default

ALERT_CONF ID=001 #0x0000 LEN=0014 00:00:01:09
Controller/PLCI/NCCI = 0x101
Info = 0x0

DISCONNECT_IND ID=001 #0x8001 LEN=0014 00:00:17:44
Controller/PLCI/NCCI = 0x101
Reason = 0x349a
Reason 0x349A: Non-selected user clearing

DISCONNECT_RESP ID=001 #0x8001 LEN=0012 00:00:17:45
Controller/PLCI/NCCI = 0x101

Vincent,

Bij mij staat foongrep momenteel in de directory …/capimonitor/fshfoongrep/debug/

Zou dit goed moeten zijn of moeten de files meer “omhoog” naar bv capimontor/foongrep/
ZO ja, wat moet allemaal dan verplaatst worden. Naast de files in de …debug/ directory ook de files in de …fshfoongrep/ directory (fshfoorgrep.ncb / …slm en …vcproj ?

Hoi Germ,

De enige file is foongrep.exe. Dat is de gerename-de fshfoongrep.exe die in de distributie zit.

Het executeren van foongrep.exe maakt een file aan fshfoongrep.ini waarin je de host, db name, password kan herconfigureren.

De rest is source code en project files voor Visual studio. Dit houdt in dat iemand anders gemakkelijk het programma kan veranderen in Visual Studio om een nieuwe executable (foongrep.exe) te compileren.

De vriendelijke groet Jan Marco

Hoi Vincent, Ter Info,

De isdnlogd versie die ik nu heb gebruikt erg veel CPU resources, namelijk 70%. Het polt denk ik veel.

Ik weet dat dit komt omdat er geen CAPI_WAIT_FOR_SIGNAL in is opgenomen. Ik zal dit uit jcapi (java) gaan halen hoe dit er in geprogrammeerd kan worden. Ik wil eerst het telefoonnummer er uit gaan halen. De CAPI_WAIT_FOR_SIGNAL zie ik even als een belangrijke optimalisatieslag,

De vriendelijke groet Jan Marco

Hoi Germ, Vincent, Ter info,

capi2032.dll programmeren is best wel verradelijk. Je heb soms niet door dat na 5 * opstarten het programma niet meer werkt en ook capimonitor niet meer werkt. Het kan dus ook andere capi programma’s onderuit halen. Gelukkig kan je met rebooten het weer laten werken.

Na elke verandering laat ik mijn isdnlijn weer overgaan om te testen.

Ben weer teruggegaan naar een paar versies geleden. Als je ooit met capi2032 gaat programmeren dan is het heel verstandig om tussen versies in een subdirectory op te slaan.

De vriendelijke groet Jan Marco

Jan marco,

Is niet de oplossing. Probleem blijft ontstaan.

Germ

Hoi Germ,

Is niet de oplossing. Probleem blijft ontstaan.

Bij mij werkt het ook niet na reboot. Lijkt mij dat het aan CM ligt.

  1. 17:14:12 - 0598431234 - Niet gevonden - 534312345, speech (1), Niet gevonden in Klapper of KPN-cdfoongids

De vriendelijke groet Jan Marco

Hoi Germ, Vincent,

Ik heb nu een experimentele versie op mijn (anonieme) ftp server (www.foonsearch.com) gezet, namelijk fshisdnlogd-0.01.zip.

Je kan hem executeren en naast CM laten draaien. Je stopt hem met ‘esc’ toets. Er worden twee files aangemaakt. fshisdnlogd.prt de formele capi messages en isdnlog.log waarin ik een voorbeeld technisch monitoring heb opgenomen. De datum moet er nog voor en de commando’s zal ik nog in tekst omzetten. Mogelijk nog een reason veld waarom een verbinding is verbroken. Mogelijk zit het al in de command/subcommando.

Hij gebruikt wel veel CPU, maar daar zal ik in optimalisatie slag naar kijken.

Misschien hebben jullie nu al tips --)

De vriendelijke groet Jan Marco

P.S. Er zit nog geen verband met mysql, dus werkt ook zonder mysql.

Let niet te veel op de meldingen op het scherm. Dit is test info om het programma een beetje te leren begrijpen.

Hoi Germ,

Misschien foongrep in c:\cdfoon zetten. Ik geloof dat dit de default directory is van de originele CM. Ik geloof dat ik dit fenomeen ook al heb gezien.

Is niet de oplossing. Probleem blijft ontstaan.

Tip: Misschien kan je met filemon zien welke foongrep file (en waar op filesystem) CM wil open naar reboot.

Zie ook http://www.sysinternals.com/ntw2k/source/filemon.shtml

De vriendelijke groet Jan Marco

Jan marco,

2 maal bij het zoeken naar capimonlog.$$$ --> file not found. overige zijn allemaal succesvol

Germ

[/img]

Jan Marco

Eerste indruk is goed.
nummers worden correct weergegeven (als Callerpartynumber)
wel valt me op dat de nummer als 9 cijferig, dus zonder 0 worden weergegeven. Dit kan aan mijn modem liggen (hebben we het al eerder over gehad). Bij een meer definitieve versie moet je hier wel rekening mee houden omdat er via foongrep in een 10 cijferig database moet worden gezocht.

CPU gebruik valt mij mee. Draai het programma op een P4 met 1300 MHZ en 512 mb, maar kan geen noemenswaardige vertraging ontdekken.

Programma maakt keurig een isdnlog aan met daarin alle nummers

Ben beniewd naar de volgende “verbeterde” versie(s). zoals gezegd is de eerste indruk van deze versie goed.

Germ

Hoi Germ,

Eerste indruk is goed.

Bedankt voor het testen en jouw commentaar —)

wel valt me op dat de nummer als 9 cijferig, dus zonder 0 worden weergegeven.

Klopt, Ik registeer wat er uit de modem (capi device) komt.

Het is een technische monitoring, dus zonder adminstratieve info, want die kan fout zijn.

Ik ben op het idee gekomen om deze splitsing aan te brengen bij de Linux Isdnlog.

Ik installeerde deze versie op mijn linux server en kreeg foutieve nummers in de log file. Het nummer had de foutieve Duitse voorloop nummers. Dit kon je wel weer instellen.

Beter is om in een rapportage tool de administratieve informatie toe te voegen. Indien je in de rapportage tool Duitseland hebt ingevuld, kan je met 1 druk op de knop het om gaan zetten naar Nederland zonder dat je informatie bent kwijtgeraak of een conversieslag moet uitvoeren.

CPU gebruik valt mij mee. Draai het programma op een P4 met 1300 MHZ en 512 mb, maar kan geen noemenswaardige vertraging ontdekken.

Klopt dat je geen vertraging ziet. Maar het kan relatief zuiniger met cpu cycles omgaan. Ik kan mij nog goed herinneren dat de java variant een fractie van de cpu cycles gebruikte als mijn huidige variant. Ik dacht altijd dat java meer resources zou moeten gebruiken, totdat ik er achter kwam dat java een andere capi procedure ook gebruikte. Anders geformuleerd: Deze capi procedure is niet voor niets opgenomen in de capi2032.dll!

Ben beniewd naar de volgende “verbeterde” versie(s). zoals gezegd is de eerste indruk van deze versie goed.

Ik zal van het weekend weer mee verder gaan. Ik ga in de komende dagen uitzoeken hoe je CAPI_WAIT_FOR_SIGNAL er in moet programmeren,

De vriendelijke groet Jan Marco

P.S. Je kan ook in de rapportage tool gaan berekenen hoeveel geld de gesprekken hebben gekost. Je grut dan uit een tarieven database en uit de technische registratietool database (wie is gebeld en hoelang).

Hoi Germ, Vincent,

Ik heb een nieuwe versie van fshisdnlog (versie 0.02) op mijn anonieme ftp server gezet.

De CPU is van 70 % naar < 2 % gegaan, door gebruik te maken van CAPI_WAIT_FOR_SIGNAL!

Morgen ga ik meer kijken naar de commando’s in de outputfile. Ik heb liever wat teksten in outputfile dan (“nietszeggende” capi device) getallen.

De vriendelijke groet Jan Marco

Hoi Germ, Vincent,

Het fenomeen wat ik nu zie is dat als ik mijn vaste toestel opneem, fshisdnlog “disconnect” in capi log aangeeft. Zie ook appendix voor de details.

Dit zou kunnen komen omdat mijn 06 aangeeft dat “inkomen oproepen zijn doorgeschakeld” bij mijn vaste (gemonitoorde) telefoonlijn. Dus bij het opnemen wordt iets verbroken en naar iets “anders” toegewezen.

Ik meet nu de tijd dat het duurt dat ik opneem. Ik heb liever de tijd dat het gesprek heeft geduurd. Kan jullie mij een suggestie doen om dit op te lossen?

Germ, Vincent, Meet fshisdnlog wel goed de gespreksduur bij jullie is mijn concrete vraag

De vriendelijke groet Jan Marco

Appendix “isdnlog.log”: (binnen komend gesprek vanaf 06 naar mijn vast verbinding)

Time,ApplId,Command,Subcommand,Messagenumber,Callingpartynumber,Calledpartynumber
00:00:00:01,7,LISTEN,CONF,0,
00:00:00:01,7,LISTEN,CONF,0,
00:00:23:43,7,CONNECT,IND,8000,651234567,531234567
00:00:23:94,7,ALERT,CONF,0,
00:00:23:94,7,ALERT,CONF,0,
00:00:43:01,7,DISCONNECT,IND,8001,
00:00:43:01,7,DISCONNECT,RESP,8001,

Hoi Germ, Vincent,

Ik heb even weer een nieuwe versie (fshisdnlogd-0.03.zip) gemaakt, nu zit de datum/tijd voor de log regel:

Date,Time,ApplId,Command,Subcommand,Messagenumber,Callingpartynumber,Calledpartynumber
20040709,07:44:11,4,LISTEN,CONF,0,
20040709,07:44:11,4,LISTEN,CONF,0,
20040709,07:44:26,4,CONNECT,IND,8000,651234567,531234567
20040709,07:44:27,4,ALERT,CONF,0,
20040709,07:44:27,4,ALERT,CONF,0,
20040709,07:44:29,4,DISCONNECT,IND,8001,
20040709,07:44:29,4,DISCONNECT,RESP,8001,

Je kan wel meer info gaan loggen, bijvoorbeeld (controller adressen o.i.d) als je meerdere ISDN (modem) kaarten in 1 pc hebt. De vraag is hoeveel mensen hebben dat?

De vriendelijke groet Jan Marco

Jan Marco,

heb vanochtend circa 10 gesprekken gelogd.( met …0.03.zip)

Zodra het telefoongesprek binnenkomt wordt CONNECT geactiveerd
Zodra het telefoongesprek wordt aangenomen wordt DISCONNECT geactiveerd. --> de gemeten tijd is dus de tijd die tussen overgaan van de telefoon en het aannemen ervan zit.
Het programma logd dus niet hoelang een gesprek duurt.

Overigens is volgens mij alleen van belang dat geregistreerd wordt dat een gesprek binnenkomt, niet hoelang het duurt. Dit is pas van belang als je de gesprekskosten wil gaan berekenen.
Mijns inziens zal dit een eventuele uitbreiding voor de toekomst zijn. In eerste instantie is het correct registreren van de binnennkomende nummers van belang.

Germ