Update for ConfBridge Beta code and documentation

git-svn-id: svn://192.168.202.10@3638 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2022-09-08 15:51:31 +00:00
parent 5bf29a325c
commit 50670ab6db
3 changed files with 130 additions and 6 deletions
@@ -1,4 +1,4 @@
VICIdial ConfBridge Support: STARTED: 2022-06-22 UPDATED: 2022-08-31
VICIdial ConfBridge Support: STARTED: 2022-06-22 UPDATED: 2022-09-08
!!! NOTE: VICIdial ConfBridge support is currently in BETA mode and is not recommended for systems that require a stable and tested codebase !!!
@@ -26,13 +26,13 @@ The following extensions needed to be added to the Asterisk /etc/asterisk/extens
; ConfBridge Extensions
; --------------------------
; use to send a agent channel into the conference
; use to send a customer channel into the conference
exten => _9600XXX,1,Answer()
exten => _9600XXX,n,Playback(sip-silence)
exten => _9600XXX,n,ConfBridge(${EXTEN},vici_agent_bridge,vici_customer_user)
exten => _9600XXX,n,Hangup()
; used to send an customer channel into the conference
; used to send an agent channel into the conference
exten => _29600XXX,1,Answer()
exten => _29600XXX,n,Playback(sip-silence)
exten => _29600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_agent_user)
@@ -80,6 +80,13 @@ The following extensions needed to be added to the Asterisk /etc/asterisk/extens
exten => _55559600XXX,1,ConfKick(${EXTEN:4},all)
exten => _55559600XXX,2,Hangup()
; used to send an ringall agent channel into the conference
exten => _19600XXX,1,Answer()
exten => _19600XXX,n,Playback(sip-silence)
exten => _19600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_ringall_user)
exten => _19600XXX,n,Hangup()
One key difference between how Vicidial handles MeetMe and ConfBridge conferences is the way various types of channels enter a conference. Each channel type now has its own conference user profile. Most noteably the customer's channel is placed into the conference with a different user profile than the agent. With MeetMe these two types of channel used the same extension to enter the conference. These seperations should allow for more advanced features to be added in the future.
@@ -189,7 +196,7 @@ to the bottom of the file. Then create the /etc/asterisk/confbridge-vicidial.con
type=user
admin=no
quiet=yes
startmuted=yes
startmuted=no
marked=no
dtmf_passthrough=no
dsp_drop_silence=yes
@@ -204,6 +211,17 @@ to the bottom of the file. Then create the /etc/asterisk/confbridge-vicidial.con
dtmf_passthrough=yes
dsp_drop_silence=yes
; User Profile for RINGALL agent channels
[vici_ringall_user]
type=user
admin=no
quiet=no
startmuted=no
marked=yes
dtmf_passthrough=yes
announce_only_user=no
hear_own_join_sound=no
dsp_drop_silence=yes
- Database changes
@@ -554,6 +572,9 @@ Dialers:
- AST_reset_mysql_vars.pl.diff
- AST_VDremote_agents.pl.diff
- AST_conf_update_screen.pl
/var/lib/asterisk/agi-bin/ -
- agi-VDAD_RINGALL.agi.diff
- agi-VDAD_ALL_inbound.agi.diff
Webservers:
/srv/www/htdocs/agc/ -
@@ -0,0 +1,48 @@
--- agi-VDAD_ALL_inbound.agi.orig 2022-09-07 11:21:08.774397398 -0400
+++ agi-VDAD_ALL_inbound.agi 2022-09-07 11:20:24.378542407 -0400
@@ -372,6 +372,7 @@
$sthArows=$sthA->rows;
$dbhP=$dbhA; $mysql_count='02001'; $MEL_aff_rows=$sthArows; &mysql_error_logging;
$rec_count=0;
+$conf_engine='';
while ($sthArows > $rec_count)
{
$AGILOG = '0';
@@ -3773,6 +3774,21 @@
$dbhP=$dbhA; $mysql_count='02067'; $MEL_aff_rows=$affected_rows; &mysql_error_logging;
if ($AGILOG) {$agi_string = "-- closer log : |$affected_rows|update of vcl table: $insert_lead_id\n|$stmtA|"; &agi_output;}
+ ### Grab Server values from the database for the server the agent is on
+ $stmtA = "SELECT conf_engine FROM servers where server_ip = '$VARserver_ip';";
+ $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
+ $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
+ $sthArows=$sthA->rows;
+ $rec_count=0;
+ $conf_engine='';
+ while ($sthArows > $rec_count)
+ {
+ @aryA = $sthA->fetchrow_array;
+ $conf_engine = $aryA[0];
+ $rec_count++;
+ }
+ $sthA->finish();
+
### format the remote server dialstring to get the call to the overflow agent meetme room
if( $VDADserver_ip =~ m/(\S+)\.(\S+)\.(\S+)\.(\S+)/ )
{
@@ -3784,7 +3800,14 @@
$RAredDIALstr = "$a$S$b$S$c$S$d$S";
}
$alertVDADremDIALstr = "$VDADremDIALstr";
- $alertVDADremDIALstr .= "$dtmf_silent_prefix$VDADconf_exten";
+ if ($conf_engine == "CONFBRIDGE")
+ {
+ $alertVDADremDIALstr .= "8$VDADconf_exten";
+ }
+ else
+ {
+ $alertVDADremDIALstr .= "$dtmf_silent_prefix$VDADconf_exten";
+ }
$VDADremDIALstr .= "$VDADconf_exten";
@@ -0,0 +1,55 @@
--- agi-VDAD_RINGALL.agi.orig 2022-09-07 11:20:53.126448503 -0400
+++ agi-VDAD_RINGALL.agi 2022-09-07 11:20:12.322581793 -0400
@@ -90,7 +90,7 @@
or die "Couldn't connect to database: " . DBI->errstr;
### Grab Server values from the database
-$stmtA = "SELECT agi_output,ext_context,asterisk_version FROM servers where server_ip = '$VARserver_ip';";
+$stmtA = "SELECT agi_output,ext_context,asterisk_version,conf_engine FROM servers where server_ip = '$VARserver_ip';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -101,6 +101,7 @@
$DBagi_output = $aryA[0];
$ext_context = $aryA[1];
$asterisk_version = $aryA[2];
+ $conf_engine = $aryA[3];
if ($DBagi_output =~ /STDERR/) {$AGILOG = '1';}
if ($DBagi_output =~ /FILE/) {$AGILOG = '2';}
if ($DBagi_output =~ /BOTH/) {$AGILOG = '3';}
@@ -273,7 +274,9 @@
if ($VLAextension =~ /^R\//)
{
### BEGIN If remote agent, then reserve a vicidial_conferences session on their server to send the calls to ###
- $stmtA="SELECT count(*) FROM vicidial_conferences where server_ip='$VLAserver_ip' and ((extension='') or (extension is null)) and conf_exten != '$VLAconf_exten';";
+ $conf_table = "vicidial_conferences";
+ if ($conf_engine == "CONFBRIDGE") {$conf_table = "vicidial_confbridges";}
+ $stmtA="SELECT count(*) FROM $conf_table where server_ip='$VLAserver_ip' and ((extension='') or (extension is null)) and conf_exten != '$VLAconf_exten';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$AVCcount=$sthA->rows;
@@ -284,11 +287,11 @@
$sthA->finish();
if ($available_sessions > 0)
{
- $stmtA="UPDATE vicidial_conferences set extension='3WAY_$dial_user', leave_3way='1', leave_3way_datetime='$now_date' where server_ip='$VLAserver_ip' and ((extension='') or (extension is null)) and conf_exten != '$VLAconf_exten' limit 1;";
+ $stmtA="UPDATE $conf_table set extension='3WAY_$dial_user', leave_3way='1', leave_3way_datetime='$now_date' where server_ip='$VLAserver_ip' and ((extension='') or (extension is null)) and conf_exten != '$VLAconf_exten' limit 1;";
$AVCaffected_rows = $dbhA->do($stmtA);
if ($AVCaffected_rows > 0)
{
- $stmtA="SELECT conf_exten from vicidial_conferences where server_ip='$VLAserver_ip' and extension='3WAY_$dial_user' and leave_3way_datetime='$now_date' and conf_exten != '$VLAconf_exten';";
+ $stmtA="SELECT conf_exten from $conf_table where server_ip='$VLAserver_ip' and extension='3WAY_$dial_user' and leave_3way_datetime='$now_date' and conf_exten != '$VLAconf_exten';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$SVCcount=$sthA->rows;
@@ -560,8 +563,8 @@
$d = leading_zero($4);
$VLA_DIALstr = "$a$S$b$S$c$S$d$S";
}
- $VLA_DIALstr .= "7$VLAconf_exten";
-
+ if ($conf_engine == "CONFBRIDGE") {$VLA_DIALstrPrefix = "1";} else {$VLA_DIALstrPrefix = "7";}
+ $VLA_DIALstr .= "$VLA_DIALstrPrefix$VLAconf_exten";
$AGI->stream_file('sip-silence');
$AGI->stream_file('sip-silence');
$AGI->stream_file('sip-silence');