CDR(Call Detail Record)
最近做H.323的计费管理系统。系统初始从GK采集CDR纪录。对于不同的设备,不同的厂商,具体的CDR纪录格式差别很大。网络上搜集了很久,没有获得具体的CDR纪录格式。
根据手头的一些具体的CDR记录数据,分析其基本的格式如下:
CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId|CalledIP|CalledEndId|DestinationInfo|SrcInfo|GatekeeperID
1.每条CDR纪录以“CDR”字符串开始,以‘/n’字符为结尾;
2.每条纪录之间以字符‘|’进行分割
3.各字段含义如下:
CDR:CDR纪录的开始标记;
CallNo:该条记录所对应的呼叫编号;
CallId:该条纪录所对应的呼叫ID;
Duration:本次呼叫的持续时间,单位(S 秒);
StartTime:呼叫建立的时间,Datatime类型,精确到秒;
EndTime:呼叫结束时间,Datatime类型,精确到秒;
CallerIP:主叫端IP;
CallerEndId:主叫端的ID号;
CalledIP:被叫端IP;
CalledEndId:被叫端ID号;
DestinationInfo:被叫目标信息;
SrcInfo:主叫信息
GatekeeperID:信息采集点的GK ID号
4.一条实际的CDR纪录如下:
CDR|76|02 b2 24 12 52 9c d2 72 02 d6 56 34 34 34 34 ef|183|2004-06-14 08:03:00|2004-06-14 08:06:04|192.168.66.88:1721|9176_endp|61.56
.70.61:1720|9169_endp|11112222:dialedDigits=11112222:dialedDigits|1111111111:h323_ID=1111111111:dialedDigits|TestGK
5.鉴于对以上字段的理解,建立CDR数据库
CREATE TABLE [你的计费数据库].[CDR] (
[ID] [char] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[GKID] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[CallID] [char] (47) COLLATE Chinese_PRC_CI_AS NULL ,
[CallNo] [int] NOT NULL ,
[CallDuration] [int] NOT NULL ,
[CallStart] [datetime] NOT NULL ,
[CallEnd] [datetime] NULL ,
[CallerIP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CallerEndp] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL ,
[CalledIP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CalledEndp] [varchar] (64) COLLATE Chinese_PRC_CI_AS NULL ,
[DestInfo] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL ,
[SourceInfo] [varchar] (256) COLLATE Chinese_PRC_CI_AS NULL ,
[CalledNo] [varchar] (128) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[CallerNo] [varchar] (128) COLLATE Chinese_PRC_CI_AS NOT NULL ,
) ON [PRIMARY]
6.不同的厂商设备的CDR可能有所差异,但是基本上都可以提取以上数据。