CapITris Archiver
A CapITris Archiver célja, hogy a CapITris telefonos rendszerén keresztül futó hívások adatait, illetve hanganyagait a CapITris API-n keresztül lekérje és lementse. A program egy Java alkalmazás (CapITrisArchiver.jar), adatbázis-kapcsolatot nem igényel.
A program futtatása
A programot el lehet egyedileg is indítani, de praktikus lehet ütemezett feladatot beállítani. Több példányban nem futhat, ezt a program elején létrehozott és a program végén törölt 'run.lock' fájl biztosítja.
A programot lehet nostatelistening argumentummal indítani, ez esetben csak a config.json fájlban található adatokat veszi figyelembe és a state.json fájlt figyelmen kívül hagyja.
A state.json fájlt a program lefutása végén menti a program, itt jegyzi be, hogy ha van hiba, illetve, hogy hol tart a letöltési folyamatban. A config.json-ben állítjuk be az időintervallumot, de a state.json-ban a program elmenti, hogy melyik hívás volt az utolsó mentésünk, illetve - ha hiba volt - melyik volt az a hívás, ahol a hiba fellépett.
A program futtatása:
java -jar CapITrisArchiver.jar
VAGY
java -jar CapITrisArchiver.jar -nostatelistening
config.json
Kötelező, enélkül nem működik a program.
Példa:
{
"output_dir": "D:/output"
"api_config": {
"apikey": "APIKEY...",
"apiurl": "https://api.capitris.hu/v3/api/ügyfél/"
},
"cdr_config": {
"cdr_mp3name": "[CDRID]_[INTERVIEWID]_[PHONE]_[TIME]",
"cdr_startdate": "2023.10.25",
"cdr_enddate": "2023.10.25",
"cdr_savelist": true,
"cdr_savemp3": true,
"cdr_storefields": "cdrid,interviewid,historyid,listitem_num,start_time,..."
},
"smtp_config": {
"sendemail_iferror": true,
"sender_to": "test@support.hu",
"smtp_tls": 3,
"smtp_host": "smtp.office365.com",
"sender_from": "Teszt <teszt@teszt.hu>",
"smtp_username": "teszt@teszt.hu",
"smtp_password": "PWD",
"smtp_port": 587
}
}
| Mező | Típus | Kötelezőség | Leírás |
|---|---|---|---|
output_dir |
szöveg | opcionális (default: futási hely/output) | Mentés helye |
api_config |
objektum | kötelező | CapITris-API konfigurációja |
api_config/apikey |
szöveg | kötelező | CapITris-API kulcs |
api_config/apiurl |
szöveg | kötelező | CapITris-API url |
cdr_config |
objektum | kötelező | Hívások letöltési módjának konfigurációja |
cdr_config/cdr_mp3name |
szöveg | opcionális, alapértelmezett: [CDRID][INTERVIEWID][PHONE]_[TIME]) | Fájlok elnevezése, az alapértelmezett szövegben található "[" és "]" közötti kifejezések az adott hívásnak megfelelő értékre cserélődnek |
cdr_config/cdr_startdate |
dátum | kötelező | Hívás idejére vonatkozó kezdő dátum, formátum=yyyy.MM.dd |
cdr_config/cdr_enddate |
dátum | opcionális, alapértelmezett mai nap | Hívás idejére vonatkozó végdátum, formátum=yyyy.MM.dd |
cdr_config/cdr_savelist |
boolean | opcionális, alapértelmezett false | Hívás adatait mentse-e a program |
cdr_config/cdr_savemp3 |
boolean | opcionális, alapértelmezett false | Hívás hanganyagát mentse-e a program |
cdr_config/cdr_storefields |
szöveg | kötelező | Az elérhető változókat vesszővel elválasztva kell megadni (elérhető változókról lásd a cdr/list végpontra vonatkozó API-leírást) |
smtp_config |
objektum | opcionális | Ha a program hibára fut, be lehet állítani megadott címre e-mail kiküldést, amelyekhez SMTP-adatok szükségesek |
smtp_config/sendemail_iferror |
boolean | opcionális, alapértelmezett false | Küldjön-e e-mailt a program |
smtp_config/sender_to |
szöveg | kötelező | Címzett e-mail címe |
smtp_config/smtp_tls |
integer | kötelező | Titkosítás módja |
smtp_config/smtp_host |
szöveg | kötelező | SMTP-host |
smtp_config/sender_from |
szöveg | kötelező | Feladó e-mail címe |
smtp_config/sender_username |
szöveg | kötelező | SMTP-user |
smtp_config/sender_password |
szöveg | kötelező | SMTP-password |
smtp_config/smtp_port |
integer | kötelező | SMTP-port |
state.json
A fájlt a program írja automatikusan.
Példa:
{
"cdr_lastrunstate": 0,
"cdr_lastcdrid": 1051021,
"cdr_lastdate": "2023.10.25 19:42:16",
"cdr_laststopped": "2023.10.25 23:19:33"
}
| Mező | Típus | Leírás |
|---|---|---|
cdr_lastrunstate |
integer | 0=összes lekért rekordot elmentette, 1=nem mentette el az összeset, de csak azért, mert folyamatban lévő beszélgetésbe futott, vagy 10 percen belül végetérthez, 2=Hibával ért véget a a letöltési folyamat |
cdr_lastcdrid |
integer | Ha cdr_lastrunstate=0, az utolsó elmentett hívás, ha cdr_lastrunstate>0, akkor az a rekord, amelynek a mentése már nem sikerült |
cdr_lastdate |
időpont | cdr_lastcdrid tartozó hívás kezdési ideje |
cdr_laststopped |
időpont | fájl mentési ideje |
Mentési szerkezet
A program havi bontásban menti az adatokat, hanganyagokat. A mappákat yyyyMM formátumban hozzuk létre. A mappán belül két további almappa van:
- cdrlists: naponként egy, tabbal szeparált txt-fájl található a mappában.
-
mp3: az adott hónap hanganyagai
-
202310/cdrlists=>cdrlist_20231001.txt,cdrlist_20231002.txt,cdrlist_20231003.txt... 202310/mp3=>1000001_1000001_3611234567_20231001120720.mp3...
A program működése
A program a config.json és a state.json fájlok segítségével határozza meg, hogy milyen időintervallumban kéri le az adatokat. Mivel nem adatbázisba mentjük az adatokat, a naponkénti mentéssel biztosítjuk az adatok konzisztenciáját.
Alapvetően kétféleképpen történhet a futás:
1. Kezdő dátum config.json beállításai alapján: a program a beállított kezdő és végdátum intervallumban kéri le az adatokat, napokra osztva az intervallumot. Ha az adott napra már van cdr-lista mentve, akkor azt törli a program, és nulláról kezdi tölteni.
Példa: cdr_startdate="2023.10.01", cdr_enddate="2023.10.05"
1. intervallum: 2023.10.01 00:00:00-2023.10.02 00:00:00
2. intervallum: 2023.10.02 00:00:00-2023.10.03 00:00:00
3. intervallum: 2023.10.03 00:00:00-2023.10.04 00:00:00
4. intervallum: 2023.10.04 00:00:00-2023.10.05 00:00:00
2. Kezdő dátum state.json beállításai alapján: a program a cdr_lastdate és a konfig-végdátum intervallumban kéri le az adatokat.
A nem teljes napra vonatkozó lekérés esetén a program nem törli az adott nap cdr-listáját, hanem hozzáírja a kapott hívások adatait.
Példa: cdr_startdate="2023.10.01", cdr_enddate="2023.10.05", cdr_lastdate="2023.10.03 15:01:15
1. intervallum: 2023.10.03 15:01:15-2023.10.04 00:00:00
2. intervallum: 2023.10.04 00:00:00-2023.10.05 00:00:00
A program futásának kimenetele
Hibás esetek:
1. Hiba lép fel a hívások letöltése előtt (pl. nincs config.json file, vagy nem elérhető a CapITris-API): ha kell, a program küld e-mailt a hibáról, de érdemben nem történik semmi
2. A program eljut a hanganyagok letöltéséig, de még az első rekord feldolgozása előtt hibára fut. Ez az eset az elsőhöz hasonló
Megfelelelő működés:
1. A program eljut a hanganyagok letöltéséig, rendben megy a folyamat, de elérkezik egy híváshoz, ami még folyamatban van, vagy a hívás vége 10 percen belül van.
Ez esetben a program kilép rendeltetésszerűen, és elmenti, hogy melyik volt ez a cdrid. Ebben az esetben
a legközelebbi futáskor ezt a cdr-t is megpróbálja feldolgozni.
2. A program eljut a hanganyagok letöltéséig, rendben megy a folyamat, az összes hanganyagot fel tudja dolgozni.
Ez esetben a program kilép rendeltetésszerűen, és elmenti, hogy melyik volt ez a cdrid. Csak ebben az esetben
a legközelebbi futáskor (cdrid + 1)-gyel folytatja a letöltést.