/* * Asterisk -- A telephony toolkit for Linux. * * CDR Event for the Asterisk manager interface * * Copyright (C) 2003, Thomas Häger * * Thomas Häger * * This program is free software, distributed under the terms of * the GNU General Public License */ #include #include #include #include #include #include #include #include #include #include #include #include #define DATE_FORMAT "%Y-%m-%d %T" static char *tdesc = "Asterisk manager CDR event application"; static char *app = "CDREvent"; static int fire_cdr(struct ast_cdr *cdr) { int res; char t_start[80]; char t_answ[80]; char t_end[80]; struct tm tm; time_t t = cdr->start.tv_sec; localtime_r(&t,&tm); strftime(t_start,sizeof(t_start),DATE_FORMAT,&tm); t = cdr->answer.tv_sec; localtime_r(&t,&tm); strftime(t_answ,sizeof(t_answ),DATE_FORMAT,&tm); t = cdr->end.tv_sec; localtime_r(&t,&tm); strftime(t_end,sizeof(t_end),DATE_FORMAT,&tm); res = manager_event(EVENT_FLAG_CALL, "CDR", "Channel: %s\r\n" "DstChannel: %s\r\n" "Context: %s\r\n" "OAD: %s\r\n" "DAD: %s\r\n" "TStart: %s\r\n" "TAnsw: %s\r\n" "TEnd: %s\r\n" "Duration: %d\r\n" "Accountcode: %s\r\n" "Disposition: %s\r\n", cdr->channel,cdr->dstchannel,cdr->dcontext,cdr->src,cdr->dst, t_start,t_answ,t_end,cdr->billsec,cdr->accountcode,ast_cdr_disp2str(cdr->disposition)); return res; } int unload_module(void) { ast_cdr_unregister(app); return 0; } int load_module(void) { int res; res = ast_cdr_register(app, tdesc, fire_cdr); if (res) { ast_log(LOG_ERROR, "Unable to register CDR event handling\n"); } return res; } char *description(void) { return tdesc; } int usecount(void) { return 0; } char *key() { return ASTERISK_GPL_KEY; }