[commit] r12653 - freeswitch/trunk/scripts/contrib/swk/php/esl_cdr
Author: silik0n Date: Tue Mar 17 16:09:12 2009 New Revision: 12653 Log: just a little something for an example of how to do CDRs from ESL with PHP Added: freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/ freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.php freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.postgres.sql Added: freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.php ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.php Tue Mar 17 16:09:12 2009 @@ -0,0 +1,92 @@ +<? +require_once('ESL.php'); +require_once("MDB2.php"); + +$esl_host = '127.0.0.1'; +$esl_port = '8021'; +$esl_password = 'ClueCon'; + + +$db_url ="pgsql://root@localhost/esl_cdr"; + +$con = MDB2::factory($db_url); +if(PEAR::isError($con)) { + die("Error while connecting : " . $con->getMessage()); +} + +/* set up the ESL Connection */ +$esl = new eslConnection('204.8.45.218', '8021', 'disasterisk-sucks'); +$e = $esl->sendRecv("api status"); +print $e->getBody(); +$esl->events("plain", "channel_hangup"); +for(;;) { + print "foo - 1\n"; + $e = $esl->recvEvent(); + if ($e) { + $lines = explode("\n", $e->serialize()); + foreach ($lines as $line){ + $temp_data = explode(": ", $line); + + if ($temp_data[0]){ + if ($temp_data[0] == 'variable_easy_acctcode'){ + $data['acctcode'] = $temp_data[1]; + } elseif ($temp_data[0] == 'variable_acctcode'){ + $data['acctcode'] = $temp_data[1]; + } elseif ($temp_data[0] == 'variable_accountcode'){ + $data['acctcode'] = $temp_data[1]; + } elseif ($temp_data[0] == 'variable_account_code'){ + $data['acctcode'] = $temp_data[1]; + } else { + $data[$temp_data[0]] = $temp_data[1]; + } + } + } + + $insert = sprintf("INSERT into cdr (uuid, acctcode, ani, e164_ani, dnis, translated_dnis, e164_dnis, src_host, read_codec, write_codec, clid_name, ". + "clid_number, src_sdp, dest_sdp, originate_disposition, bridge_to_uuid, endpoint_disposition, sip_hangup_disposition, term_cause, ". + "hangup_cause, start_stamp, answer_stamp, progress_media_stamp, end_stamp, duration, billsec, progress_mediasec, billmin, ". + "carrier_id, cust_cost, carrier_cost)". + "VALUES". + "('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %s, '%s', '%s',". + "%s, %s, %s, %s, %s, %s, %s)", + $data['Unique-ID'], + $data['acctcode'], + $data['Caller-Caller-ID-Number'], + $data['Caller-Caller-ID-Number'], + urldecode($data['Caller-Destination-Number']), + urldecode($data['Caller-Destination-Number']), + urldecode($data['Caller-Destination-Number']), + $data['Caller-Network-Addr'], + $data['Channel-Read-Codec-Name']."-". $data['Channel-Read-Codec-Rate'], + $data['Channel-Write-Codec-Name']."-". $data['Channel-Write-Codec-Rate'], + urlencode($data['Caller-Caller-ID-Name']), + $data['Caller-Caller-ID-Number'], + $data['variable_switch_r_sdp'], + $data['variable_switch_m_sdp'], + $data['variable_originate_disposition'], + $data['variable_bridge_to'], + $data['variable_endpoint_disposition'], + $data['variable_sip_hangup_disposition'], + $data['variable_sip_term_cause'], + $data['variable_hangup_cause'], + urldecode($data['variable_start_stamp']) . '-05', + isset($data['variable_answer_stamp'])?'\''. urldecode($data['variable_answer_stamp']) . '-05\'':'null', + urldecode($data['variable_progress_media_stamp']) . '-05', + urldecode($data['variable_end_stamp']) . '-05', + $data['variable_duration'], + $data['variable_billsec'], + $data['variable_progress_mediasec'], + $data['variable_billsec'], + "0", + "0", + "0" + ); + + $result = $con->query($insert); + if(PEAR::isError($result)) { + echo "$insert\n"; + die(); + } + } +} +?> Added: freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.postgres.sql ============================================================================== --- (empty file) +++ freeswitch/trunk/scripts/contrib/swk/php/esl_cdr/esl_cdr.postgres.sql Tue Mar 17 16:09:12 2009 @@ -0,0 +1,71 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = off; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET escape_string_warning = off; + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: cdr; Type: TABLE; Schema: public; Owner: root; Tablespace: +-- + +CREATE TABLE cdr ( + uuid character varying, + acctcode character varying, + ani character varying, + e164_ani character varying, + dnis character varying, + translated_dnis character varying, + e164_dnis character varying, + src_host character varying, + read_codec character varying, + write_codec character varying, + clid_name character varying, + clid_number character varying, + src_sdp character varying, + dest_sdp character varying, + originate_disposition character varying, + bridge_to_uuid character varying, + endpoint_disposition character varying, + sip_hangup_disposition character varying, + term_cause character varying, + hangup_cause character varying, + start_stamp timestamp with time zone, + answer_stamp timestamp with time zone, + progress_media_stamp timestamp with time zone, + end_stamp timestamp with time zone, + duration integer, + billsec integer, + progress_mediasec integer, + billmin numeric(8,2), + carrier_id integer, + cust_cost numeric(7,4), + carrier_cost numeric(7,4) +); + + +ALTER TABLE public.cdr OWNER TO root; + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- +
participants (1)
-
FreeSWITCH SVN