diff --git a/agc_2-X/trunk/extras/ConfBridge/ConfBridge Documentation.txt b/agc_2-X/trunk/extras/ConfBridge/ConfBridge Documentation.txt index dd07521b..d70c388b 100644 --- a/agc_2-X/trunk/extras/ConfBridge/ConfBridge Documentation.txt +++ b/agc_2-X/trunk/extras/ConfBridge/ConfBridge Documentation.txt @@ -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 @@ -203,8 +210,19 @@ to the bottom of the file. Then create the /etc/asterisk/confbridge-vicidial.con marked=no 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 To accomodate the change to ConfBridge two fields were added to the "servers" table in Vicidial and another table was added. Here are the two fields added to the servers table: @@ -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/ - diff --git a/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_ALL_inbound.agi.diff b/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_ALL_inbound.agi.diff new file mode 100644 index 00000000..a6a62a87 --- /dev/null +++ b/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_ALL_inbound.agi.diff @@ -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"; + + diff --git a/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_RINGALL.agi.diff b/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_RINGALL.agi.diff new file mode 100644 index 00000000..ffa73838 --- /dev/null +++ b/agc_2-X/trunk/extras/ConfBridge/agi-VDAD_RINGALL.agi.diff @@ -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');