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:
@@ -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');
|
||||
Reference in New Issue
Block a user