From 365aebc3082afa1d61816b02275f7df1ae9cbb34 Mon Sep 17 00:00:00 2001 From: konradSC Date: Wed, 26 Dec 2018 00:25:24 -0500 Subject: [PATCH] Update BLF for agents when making changes in the GUI. Also use BLF as a speed dial for login/logout. (#3949) * Create call_center_notify.php Function for sending BLF notify to ELS. * Update call_center_agent_status.php * Update 200_agent_status.xml * Update 200_agent_status.xml --- app/call_centers/call_center_agent_status.php | 25 +++++++- .../resources/classes/call_center_notify.php | 63 +++++++++++++++++++ .../switch/conf/dialplan/200_agent_status.xml | 7 ++- 3 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 app/conference_centers/resources/classes/call_center_notify.php diff --git a/app/call_centers/call_center_agent_status.php b/app/call_centers/call_center_agent_status.php index d75ebc2624..52e1536b7a 100644 --- a/app/call_centers/call_center_agent_status.php +++ b/app/call_centers/call_center_agent_status.php @@ -120,8 +120,31 @@ $response = event_socket_request($fp, $cmd); } usleep(200); - } + + //set the blf status + //get the agents from the database + $sql = "select agent_name from v_call_center_agents "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and call_center_agent_uuid = '".$row['agent_uuid']."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $agent_name = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if ($row['agent_status'] == 'Available') { + $answer_state = 'confirmed'; + } + else { + $answer_state = 'terminated'; + } + + $call_center_notify = new call_center_notify; + $call_center_notify->domain_name = $_SESSION['domain_name']; + $call_center_notify->agent_name = $agent_name[0]['agent_name']; + $call_center_notify->answer_state = $answer_state; + $call_center_notify->agent_uuid = $row['agent_uuid']; + $call_center_notify->send_call_center_notify(); + unset($call_center_notify); + } } } } diff --git a/app/conference_centers/resources/classes/call_center_notify.php b/app/conference_centers/resources/classes/call_center_notify.php new file mode 100644 index 0000000000..7a3b54aeb5 --- /dev/null +++ b/app/conference_centers/resources/classes/call_center_notify.php @@ -0,0 +1,63 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2017 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane + KonradSC +*/ +include "root.php"; + +//define the blf_notify class + class call_center_notify { + + public $debug; + public $domain_name; + public $agent_name; + public $answer_state; + public $agent_uuid; + + + //feature_event method + public function send_call_center_notify() { + + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + //send the event + $event = "sendevent PRESENCE_IN\n"; + $event .= "proto: agent\n"; + $event .= "event_type: presence\n"; + $event .= "alt_event_type: dialog\n"; + $event .= "Presence-Call-Direction: outbound\n"; + $event .= "state: Active (1 waiting)\n"; + $event .= "from: agent+".$this->agent_name."@".$this->domain_name."\n"; + $event .= "login: agent+".$this->agent_name."@".$this->domain_name."\n"; + $event .= "unique-id: ".$this->agent_uuid."\n"; + $event .= "answer-state: ".$this->answer_state."\n"; + event_socket_request($fp, $event); + //echo $event."
"; + fclose($fp); + } + } //function + + } //class + +?> diff --git a/app/dialplans/resources/switch/conf/dialplan/200_agent_status.xml b/app/dialplans/resources/switch/conf/dialplan/200_agent_status.xml index c911ba32ea..d4de5065be 100644 --- a/app/dialplans/resources/switch/conf/dialplan/200_agent_status.xml +++ b/app/dialplans/resources/switch/conf/dialplan/200_agent_status.xml @@ -1,8 +1,11 @@ - + + + + - \ No newline at end of file +