PDA

Voir la version complète : Cdr



kloklo
23/11/2011, 10h17
Bonjour,

j'ai un problème avec mon CDR. Mon CDR est stocké dans un base MySQL. En fait, il n'apparait dans mon CDR que les disposition ANSWER et NOANSWER. Alors que je fais desfois je fais exécuter la fonction CONGESTION ou BUSY et cela n'apparait pas dans mon CDR. J’exécute CONGESTION après mon Dial afin que mon CDR le prenne en compte mais non.
J'ai essayé d'utiliser la commande CDR(accountcode) pour mettre a jour le champ accountcode. Il marche a moitier, je le fait avant mon Dial pas de problème mais si je le fais apres cela ne marche pas. Moi ce que m'interresse c'est de le mettre a jour apres le Dial avec la Cause de hangup. La cause de hangup n'est pas reporter dans le CDR.

Pouvez vous m'aider a corriger cela SVP? voyez vous une solution?

salaheddine
23/11/2011, 12h29
Bonjour,

le script ci-dessous fonctionne avec asterisk 1.8

il faut changer PASSWORD avec le mot de passe que vous voulez utiliser


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE DATABASE `asterisk` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `asterisk`;CREATE TABLE IF NOT EXISTS `cdr` (
`recid` mediumint(8) unsigned NOT NULL auto_increment COMMENT 'Record ID',
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`userfield` varchar(255) NOT NULL default '',
PRIMARY KEY (`recid`),
KEY `calldate` (`calldate`),
KEY `dst` (`dst`),
KEY `accountcode` (`accountcode`),
KEY `src` (`src`),
KEY `disposition` (`disposition`),
KEY `uniqueid` (`uniqueid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT FILE ON * . * TO 'asterisk'@'localhost' IDENTIFIED BY 'PASSWORD' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT INSERT ON `asterisk`.`cdr` TO 'asterisk'@'localhost';





par la suite il faut ajouter sur etc/asterisk/cdr_mysql.conf



[global]
hostname=localhost
dbname=asterisk
table=cdr
password=PASSWORD
user=asterisk
port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1
loguniqueid=yes

kloklo
23/11/2011, 15h18
ok merci. Ca je l'ai dejà et cela marche. Mon probleme n'est pas la.

Je cherche a avoir dans disposition une vrai cause par exemple congestion lorsqu'il y a congestion car pour le moment ce n'est pas le cas

jean
24/11/2011, 14h36
mais le cdr apparait bien ?

tu peux parser le code de retour sip
${HASH(SIP_CAUSE,${CDR(dstchannel)})}
et evnetuellemet le Hangup Cause: ${HANGUPCAUSE}

dans l'extension h, et le stocker d'une facon ou d'une autre

kloklo
28/11/2011, 12h08
Oui.

Merci cela répond a ce que je voulais ^^