1. 問題:
1.1一般公司電話總機,當分機對外通話時間過久之異常發生時,每個月將會有過高的電話費用支出。若沒有人負責抓出異常通話之紀錄明細,使用者將無意識,無限制地任意使用電話,可能還會持續發生,致浪費公司電話費用
1.2欲防止異常事件發生,需指派人員對每一分機,逐一手動查看明細,抓出異常的分機與異常的通話日期時間之資料內容,如此將花費工時,且人為作業可能會有錯誤疏忽之現象發生
2. 改善:
2.1 利用總機每日外線通話紀錄所產出之紀錄檔案,一筆一筆抓出,並加以判斷是否異常,若有意常發生,將擷取該筆資料明細出力之
2.2 擷取出力之異常資料,以便提供給相關管理者,
2.3 設計撰寫執行檔,功能為讀取上述總機每日產出之記錄檔,檢查是否有異常資料發生,若有時,隨即自動寄出警告email 給電話相關管理者,可以依此告知通話當事者,及其所屬主管,要求提出說明,防範異常通話事件再發。
2.4執行檔完成後,設定job自動執行排程,讓它可以每日自動執行,自動檢查通話紀錄明細是否有存在異常資料。
3.方法:
3.1 設計執行檔,讀取判斷電話記錄檔目錄是否存在?
取得昨日一天之電話記錄明細
3.2 記錄檔內明細一筆一筆抓取通話時間,判斷條件如下:
*大於 23:59:59 :表示資料內容欄位格式錯誤
*大於 00:29:59 :表示通話時間大於30分鐘,定義為異常通話時間
3.3 判斷異常發生時,執行自動寄出email,自動寄信所需之參數檔,於Bat內依據當時執行狀況作成
3.4 執行檔測試OK後,設定Windows自動排程作業如下:
*觸發程序:每日AM 4:00 執行
*動作:執行本例之bat執行檔
4. 預估效果
* 每日自動檢查,若有通話時間超過,自動寄出mail通知擔當
*異常通話之分機,時日等訊息,通知相關人員,可以發揮告誡功能,抑制再發,進而降低經費支出
*可以提高電話事務工作效率,控管電話預算費用
*可以提高各單位人員工作效率,尤其是夜間勤務時段 (夜間通話時間可有效約束管理)
5. 範例:
5.1 讀取昨日通話紀錄所產出之檔案
* 記錄檔 為一天一個txt檔,例如20240301.txt的部分資料如下:
2024/03/01,09:41:00,2202,,,,,中華電信,系統新增,2202,I<7561261,00:00:56,, 0.00,外線來電,撥入電話
2024/03/01,09:41:00,5211,,,,,中華電信,系統新增,5211,I<07800,00:00:41,, 0.00,外線來電,撥入電話
2024/03/01,09:41:00,5223,,,,,中華電信,系統新增,5223,I<08,00:00:40,, 0.00,外線來電,撥入電話
2024/03/01,09:40:00,7301,,,,,中華電信,系統新增,7301,0913571569,00:02:28,, 12.74,遠傳電信 2G,行動電話
2024/03/01,09:42:00,2237, , , ,,中華電信,系統新增,2237,02238800112745,00:00:24,, 1.60,大台北地區,國內長途
2024/03/01,09:37:00,7314,,,,,中華電信,系統新增,7314,I<0423586643,00:06:26,, 0.00,外線來電,撥入電話
2024/03/01,09:42:00,3534,,,,,中華電信,系統新增,3534,I<80,00:01:18,, 0.00,外線來電,撥入電話
2024/03/01,09:42:00,1237,,,,,中華電信,系統新增,1237,0287916688833,00:01:39,, 1.60,大台北地區,國內長途
2024/03/01,09:45:00,5223,,,,,中華電信,系統新增,5223,049232529942,00:00:25,, 1.60,南投地區,國內長途
2024/03/01,09:45:00,7314,,,,,中華電信,系統新增,7314,I<0900,00:01:41,, 0.00,外線來電,撥入電話
....
.....
5.2 bat 設計內容如下
echo off
rem ---net use O: 192.168.xx.231 for getting daily TEL detail data -----
if not exist O: (
net use O: \\192.168.xx.231\Trunk /user:192.168.xx.231\honda /yes /persistent:NO
)
rem --- get preday by prevday.vbs ------
D:
cd D:\xxx-IT\TEL_find
CScript /b prevday.vbs 1
set PREVD=%errorlevel%
rem set /a Today = %date:~0,4%%date:~5,2%%date:~8,2%
rem --- 前日CSV file 存在? -------
if not EXIST O:\SMDR_304TF_01\CSV\%PREVD%.txt (
type mail_par.txt > mail_par_WK.txt
echo 0,[ 警告信 ] 電話計費系統找無記錄檔,需調查-- sent >> mail_par.txt
echo 4, ### ERROR 找無 計費系統記錄檔 %PREVD%.txt , 需確認 >> mail_par.txt
CAll xxx_mail_ReadF.exe
type mail_par_WK.txt > mail_par.txt
goto :EOF)
rem --- find 前一日紀錄file 內容 ----
set G30=N
type mail_par.txt > mail_par_WK.txt
rem --- 1.find /V "I<" --只取外線 OR 2.find "." ---內外線全取
rem --- 超過29:59分 的選出---
For /f "skip=2 tokens=1-3,7,8* delims=," %%A in ('find "." "O:\SMDR_304TF_01\CSV\%PREVD%.txt" ') do (
if %%E GTR 23:59:59 (
set G30=Y
echo 4, ### ERROR formate---%%A %%B 分機:%%C 時間:%%E 外線:%%D %%F >> mail_par.txt
) else (
if %%E GTR 00:29:59 (
set G30=Y
echo 4, %%A %%B 分機:%%C 時間:%%E 外線:%%D %%F >> mail_par.txt ) )
)
if %G30% == Y (
CAll xxx_mail_ReadF.exe
type mail_par_WK.txt > mail_par.txt )
echo check %PREVD%.txt result= %G30% --
rem pause ---job end --
:EOF
--------------recorded by linct----------------