VICIdial ConfBridge Support:		STARTED: 2022-06-22	UPDATED: 2025-01-08


!!!!! NOTE: As of svn/trunk revision 3894(2025-01-06), the below code and configuration changes have all been integrated into the VICIdial codebase for use with Asterisk versions 18 and higher. For non-new installs you may still need to make some manual conf file changes and/or trigger a rebuild of the conf files on your Asterisk servers.


!!! NOTE: VICIdial ConfBridge has been in use by several companies in production for over a year now and is considered stable !!!

!!! NOTE: VICIdial ConfBridge support requires Asterisk 16 or higher to be installed on your dialers. Code development and testing was done with VICIbox 11 and the optional Asterisk 16 package available through VICIbox 11 !!!

!!! NOTE: As of svn/trunk revision 3828, the new 'AST_conf_update_screen.pl' script is installed by the VICIdial codebase and all other required code patches are already applied by default.


BETA support for ConfBridge was first included in the VICIdial svn/trunk codebase as of revision 3624.



- Background 
For the past 19 years, the core of Vicidial has been based around the MeetMe conferencing engine built into Asterisk. When an agent logs into Vicidial their phone gets called by Vicidial. When that call connects the agent gets placed into a MeetMe conference. For the most part they stay within that conference the entire time they are logged into Vicidial. It is only when they leave a consultative transfer that they get moved to a different MeetMe conference. When an agent places a Manual dial phone call, the outbound call gets connected to their MeetMe phone conference. When an auto dial phone call answers it goes through the outbound routing agi and ultimately gets routed into an agent's MeetMe phone conference. When an inbound call gets past to the inbound routing AGI script it ultimately gets routed to an agent's MeetMe phone conference. Vicidial initiates call recordings by attaching a monitoring extension to an agents MeetMe phone conference. As such Vicidial at its most basic level is designed to place channels into and remove them from MeetMe phone conferences.

As such when Digium announced that they would be removing the MeetMe conferencing engine from the Asterisk code base in favor of their ConfBridge application, it meant a major change to Vicidial. The web interface code needed to be updated. The routing scripts needed to be updated. The core process monitoring scripts needed to be updated. The Asterisk dialplan needed to be updated. ConfBridge does have several features that make it a better fit for Vicidial, but it uses more load to preform the same tasks and it does not have a 19 year track record of being rock solid stable. 


- Changes to ConfBridge
One request we have gotten through the years with the MeetMe conference engine was to remove the "Bloop" sound that is heard by both the agents and the customer when the customer enters the conference. The only issue with doing this is it means the agent does not get an auditory alert when a customers channel enters their phone conference. Agent's have a bad habit of not paying attention to their screen. As such it is not really a good idea to have no alert when the customer enters the conference. With the changes being done to Vicidial to accommodate ConfBridge we felt that altering the ConfBridge code to allow a way to not play this incoming alter to the customer, while still playing it to the agent was a good idea. We added an option to user profile of the confbridge.conf configuration file in Asterisk called "hear_own_join_sound". When this is set to 'no' a channel entering a conference using their user profile will trigger the sound_join audio file to be played BEFORE the channel gets placed into the conference. When this option is set to 'yes' the channel is placed into the conference before the sound_join audio file is played. After quite a bit of back and forth with the Asterisk developers we were able to get this option merged into the official version of ConfBridge.


- Dialplan changes
The following extensions needed to be added to the Asterisk /etc/asterisk/extensions.conf dialplan to work with ConfBridge:

	; --------------------------
	; ConfBridge Extensions
	; --------------------------

	; 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 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)
	exten => _29600XXX,n,Hangup()

	; used by an admin to enter the confernece
	exten => _39600XXX,1,Answer()
	exten => _39600XXX,n,Playback(sip-silence)
	exten => _39600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_admin_user)
	exten => _39600XXX,n,Hangup()

	; used to monitor a conference
	exten => _49600XXX,1,Answer()
	exten => _49600XXX,n,Playback(sip-silence)
	exten => _49600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_monitor_user)
	exten => _49600XXX,n,Hangup()

	; used to record into a conference
	exten => _59600XXX,1,Answer()
	exten => _59600XXX,n,Playback(sip-silence)
	exten => _59600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_recording_user)
	exten => _59600XXX,n,Hangup()

	; used to barge a conference
	exten => _69600XXX,1,Answer()
	exten => _69600XXX,n,Playback(sip-silence)
	exten => _69600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_barge_user)
	exten => _69600XXX,n,Hangup()

	; used to trigger DTMF tones in a conference
	exten => _79600XXX,1,Answer()
	exten => _79600XXX,n,Playback(sip-silence)
	exten => _79600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_dtmf_user)
	exten => _79600XXX,n,Hangup()

	; Used to play an audio file to a conference
	exten => _89600XXX,1,Answer()
	exten => _89600XXX,n,Playback(sip-silence)
	exten => _89600XXX,n,ConfBridge(${EXTEN:1},vici_agent_bridge,vici_audio_user)
	exten => _89600XXX,n,Hangup()

	; Used to kick all channels from a conference
	exten => _99600XXX,1,ConfKick(${EXTEN:1},all)
	exten => _99600XXX,2,Hangup()
	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.


- ConfBridge configuration

In the /etc/asterisk/confbridge.conf add:

	#include "confbridge-vicidial.conf"

to the bottom of the file. Then create the /etc/asterisk/confbridge-vicidial.conf file with the following contents:

	; Bridge Profile for agent conferences
	[vici_agent_bridge]
	type=bridge
	max_members=10
	record_conference=no
	internal_sample_rate=8000
	mixing_interval=20
	video_mode=none
	sound_join=enter
	sound_leave=leave
	sound_has_joined=sip-silence
	sound_has_left=sip-silence
	sound_kicked=sip-silence
	sound_muted=sip-silence
	sound_unmuted=sip-silence
	sound_only_person=confbridge-only-participant
	sound_only_one=sip-silence
	sound_there_are=sip-silence
	sound_other_in_party=sip-silence
	sound_begin=sip-silence
	sound_wait_for_leader=sip-silence
	sound_leader_has_left=sip-silence
	sound_get_pin=sip-silence
	sound_invalid_pin=sip-silence
	sound_locked=sip-silence
	sound_locked_now=sip-silence
	sound_unlocked_now=sip-silence
	sound_error_menu=sip-silence
	sound_participants_muted=sip-silence


	; User Profile for agent channels
	[vici_agent_user]
	type=user
	admin=no
	quiet=no
	startmuted=no
	marked=yes
	dtmf_passthrough=yes
	hear_own_join_sound=yes
	dsp_drop_silence=yes

	; User Profile for admin channels
	[vici_admin_user]
	type=user
	admin=yes
	quiet=no
	startmuted=no
	marked=yes
	dtmf_passthrough=yes
	dsp_drop_silence=yes

	; User Profile for monitoring
	[vici_monitor_user]
	type=user
	admin=no
	quiet=yes
	startmuted=yes
	marked=no
	dtmf_passthrough=no
	dsp_drop_silence=yes

	; User Profile for barging
	[vici_barge_user]
	type=user
	admin=no
	quiet=no
	startmuted=no
	marked=no
	dtmf_passthrough=yes
	dsp_drop_silence=yes

	; User Profile for customers channels
	[vici_customer_user]
	type=user
	admin=no
	quiet=no
	startmuted=no
	marked=yes
	dtmf_passthrough=yes
	hear_own_join_sound=no
	dsp_drop_silence=yes

	; User Profile for call recording channels
	[vici_recording_user]
	type=user
	admin=no
	quiet=yes
	startmuted=yes
	marked=no
	dtmf_passthrough=no
	dsp_drop_silence=yes

	; User Profile for audio playback channels
	[vici_audio_user]
	type=user
	admin=no
	quiet=yes
	startmuted=no
	marked=no
	dtmf_passthrough=no
	dsp_drop_silence=yes

	; User Profile for triggering DTMF
	[vici_dtmf_user]
	type=user
	admin=no
	quiet=yes
	startmuted=yes
	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

In the /etc/asterisk/manager.conf add:

	[confcron]
	secret = 1234
	read = command,reporting
	write = command,reporting

	eventfilter=Event: Meetme
	eventfilter=Event: Confbridge

to the bottom of the file.



- Timing changes

Unlike MeetMe which gets its timing directly from the DADHI kernel driver, ConfBridge gets its timing from the Asterisk Timing interface. By default this uses res_timing_timerfd.so and not res_timing_dahdi.so. To switch ConfBridge over to use DAHDI for its timing the following needs to be added to /etc/asterisk/modules.conf:

	noload => res_timing_timerfd.so
	noload => res_timing_kqueue.so
	noload => res_timing_pthread.so

This is important because the res_timing_timerfd.so module which is the default is affected whenever Asterisk forks itself like whenever an AGI script it executed. This can cause audio frames to be skipped by ConfBridge. Vicidial uses AGI scripts heavily.

	

- 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:
NOTE: These have already been added to the standard VICIdial install and upgrade SQL files:

	alter table servers add column `conf_engine` enum('MEETME','CONFBRIDGE') COLLATE utf8_unicode_ci DEFAULT 'MEETME';
	alter table servers add column `conf_update_interval` smallint(6) NOT NULL DEFAULT 60;

The conf_engine field determines which conferencing engine a server is using. This changes the way calls route on this server as well as the way the agent interface logs an agent in on the server. The conf_update_interval determines how often the new AST_conf_update_screen.pl screen process checks both MeetMe and ConfBridge conferences for orphaned channels. This is the SQL for adding the new table:
NOTE: This have already been added to the standard VICIdial install and upgrade SQL files:

	CREATE TABLE `vicidial_confbridges` (   
		`conf_exten` int(7) unsigned NOT NULL,
		`server_ip` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
		`extension` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
		`leave_3way` enum('0','1') COLLATE utf8_unicode_ci DEFAULT '0',
		`leave_3way_datetime` datetime DEFAULT NULL,
		UNIQUE KEY `serverconf` (`server_ip`,`conf_exten`),
		UNIQUE KEY `conf_exten` (`conf_exten`,`server_ip`) 
	) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
	
This table is currently the same as the vicidial_conferences table, but may be changed in the future to accomidate new features that can be added with ConfBridge. The following entries need to be inserted into the vicidial_confbridges table:

	INSERT INTO `vicidial_confbridges` VALUES 
	(9600000,'10.10.10.17','','0',NULL),
	(9600001,'10.10.10.17','','0',NULL),
	(9600002,'10.10.10.17','','0',NULL),
	(9600003,'10.10.10.17','','0',NULL),
	(9600004,'10.10.10.17','','0',NULL),
	(9600005,'10.10.10.17','','0',NULL),
	(9600006,'10.10.10.17','','0',NULL),
	(9600007,'10.10.10.17','','0',NULL),
	(9600008,'10.10.10.17','','0',NULL),
	(9600009,'10.10.10.17','','0',NULL),
	(9600010,'10.10.10.17','','0',NULL),
	(9600011,'10.10.10.17','','0',NULL),
	(9600012,'10.10.10.17','','0',NULL),
	(9600013,'10.10.10.17','','0',NULL),
	(9600014,'10.10.10.17','','0',NULL),
	(9600015,'10.10.10.17','','0',NULL),
	(9600016,'10.10.10.17','','0',NULL),
	(9600017,'10.10.10.17','','0',NULL),
	(9600018,'10.10.10.17','','0',NULL),
	(9600019,'10.10.10.17','','0',NULL),
	(9600020,'10.10.10.17','','0',NULL),
	(9600021,'10.10.10.17','','0',NULL),
	(9600022,'10.10.10.17','','0',NULL),
	(9600023,'10.10.10.17','','0',NULL),
	(9600024,'10.10.10.17','','0',NULL),
	(9600025,'10.10.10.17','','0',NULL),
	(9600026,'10.10.10.17','','0',NULL),
	(9600027,'10.10.10.17','','0',NULL),
	(9600028,'10.10.10.17','','0',NULL),
	(9600029,'10.10.10.17','','0',NULL),
	(9600030,'10.10.10.17','','0',NULL),
	(9600031,'10.10.10.17','','0',NULL),
	(9600032,'10.10.10.17','','0',NULL),
	(9600033,'10.10.10.17','','0',NULL),
	(9600034,'10.10.10.17','','0',NULL),
	(9600035,'10.10.10.17','','0',NULL),
	(9600036,'10.10.10.17','','0',NULL),
	(9600037,'10.10.10.17','','0',NULL),
	(9600038,'10.10.10.17','','0',NULL),
	(9600039,'10.10.10.17','','0',NULL),
	(9600040,'10.10.10.17','','0',NULL),
	(9600041,'10.10.10.17','','0',NULL),
	(9600042,'10.10.10.17','','0',NULL),
	(9600043,'10.10.10.17','','0',NULL),
	(9600044,'10.10.10.17','','0',NULL),
	(9600045,'10.10.10.17','','0',NULL),
	(9600046,'10.10.10.17','','0',NULL),
	(9600047,'10.10.10.17','','0',NULL),
	(9600048,'10.10.10.17','','0',NULL),
	(9600049,'10.10.10.17','','0',NULL),
	(9600050,'10.10.10.17','','0',NULL),
	(9600051,'10.10.10.17','','0',NULL),
	(9600052,'10.10.10.17','','0',NULL),
	(9600053,'10.10.10.17','','0',NULL),
	(9600054,'10.10.10.17','','0',NULL),
	(9600055,'10.10.10.17','','0',NULL),
	(9600056,'10.10.10.17','','0',NULL),
	(9600057,'10.10.10.17','','0',NULL),
	(9600058,'10.10.10.17','','0',NULL),
	(9600059,'10.10.10.17','','0',NULL),
	(9600060,'10.10.10.17','','0',NULL),
	(9600061,'10.10.10.17','','0',NULL),
	(9600062,'10.10.10.17','','0',NULL),
	(9600063,'10.10.10.17','','0',NULL),
	(9600064,'10.10.10.17','','0',NULL),
	(9600065,'10.10.10.17','','0',NULL),
	(9600066,'10.10.10.17','','0',NULL),
	(9600067,'10.10.10.17','','0',NULL),
	(9600068,'10.10.10.17','','0',NULL),
	(9600069,'10.10.10.17','','0',NULL),
	(9600070,'10.10.10.17','','0',NULL),
	(9600071,'10.10.10.17','','0',NULL),
	(9600072,'10.10.10.17','','0',NULL),
	(9600073,'10.10.10.17','','0',NULL),
	(9600074,'10.10.10.17','','0',NULL),
	(9600075,'10.10.10.17','','0',NULL),
	(9600076,'10.10.10.17','','0',NULL),
	(9600077,'10.10.10.17','','0',NULL),
	(9600078,'10.10.10.17','','0',NULL),
	(9600079,'10.10.10.17','','0',NULL),
	(9600080,'10.10.10.17','','0',NULL),
	(9600081,'10.10.10.17','','0',NULL),
	(9600082,'10.10.10.17','','0',NULL),
	(9600083,'10.10.10.17','','0',NULL),
	(9600084,'10.10.10.17','','0',NULL),
	(9600085,'10.10.10.17','','0',NULL),
	(9600086,'10.10.10.17','','0',NULL),
	(9600087,'10.10.10.17','','0',NULL),
	(9600088,'10.10.10.17','','0',NULL),
	(9600089,'10.10.10.17','','0',NULL),
	(9600090,'10.10.10.17','','0',NULL),
	(9600091,'10.10.10.17','','0',NULL),
	(9600092,'10.10.10.17','','0',NULL),
	(9600093,'10.10.10.17','','0',NULL),
	(9600094,'10.10.10.17','','0',NULL),
	(9600095,'10.10.10.17','','0',NULL),
	(9600096,'10.10.10.17','','0',NULL),
	(9600097,'10.10.10.17','','0',NULL),
	(9600098,'10.10.10.17','','0',NULL),
	(9600099,'10.10.10.17','','0',NULL),
	(9600100,'10.10.10.17','','0',NULL),
	(9600101,'10.10.10.17','','0',NULL),
	(9600102,'10.10.10.17','','0',NULL),
	(9600103,'10.10.10.17','','0',NULL),
	(9600104,'10.10.10.17','','0',NULL),
	(9600105,'10.10.10.17','','0',NULL),
	(9600106,'10.10.10.17','','0',NULL),
	(9600107,'10.10.10.17','','0',NULL),
	(9600108,'10.10.10.17','','0',NULL),
	(9600109,'10.10.10.17','','0',NULL),
	(9600110,'10.10.10.17','','0',NULL),
	(9600111,'10.10.10.17','','0',NULL),
	(9600112,'10.10.10.17','','0',NULL),
	(9600113,'10.10.10.17','','0',NULL),
	(9600114,'10.10.10.17','','0',NULL),
	(9600115,'10.10.10.17','','0',NULL),
	(9600116,'10.10.10.17','','0',NULL),
	(9600117,'10.10.10.17','','0',NULL),
	(9600118,'10.10.10.17','','0',NULL),
	(9600119,'10.10.10.17','','0',NULL),
	(9600120,'10.10.10.17','','0',NULL),
	(9600121,'10.10.10.17','','0',NULL),
	(9600122,'10.10.10.17','','0',NULL),
	(9600123,'10.10.10.17','','0',NULL),
	(9600124,'10.10.10.17','','0',NULL),
	(9600125,'10.10.10.17','','0',NULL),
	(9600126,'10.10.10.17','','0',NULL),
	(9600127,'10.10.10.17','','0',NULL),
	(9600128,'10.10.10.17','','0',NULL),
	(9600129,'10.10.10.17','','0',NULL),
	(9600130,'10.10.10.17','','0',NULL),
	(9600131,'10.10.10.17','','0',NULL),
	(9600132,'10.10.10.17','','0',NULL),
	(9600133,'10.10.10.17','','0',NULL),
	(9600134,'10.10.10.17','','0',NULL),
	(9600135,'10.10.10.17','','0',NULL),
	(9600136,'10.10.10.17','','0',NULL),
	(9600137,'10.10.10.17','','0',NULL),
	(9600138,'10.10.10.17','','0',NULL),
	(9600139,'10.10.10.17','','0',NULL),
	(9600140,'10.10.10.17','','0',NULL),
	(9600141,'10.10.10.17','','0',NULL),
	(9600142,'10.10.10.17','','0',NULL),
	(9600143,'10.10.10.17','','0',NULL),
	(9600144,'10.10.10.17','','0',NULL),
	(9600145,'10.10.10.17','','0',NULL),
	(9600146,'10.10.10.17','','0',NULL),
	(9600147,'10.10.10.17','','0',NULL),
	(9600148,'10.10.10.17','','0',NULL),
	(9600149,'10.10.10.17','','0',NULL),
	(9600150,'10.10.10.17','','0',NULL),
	(9600151,'10.10.10.17','','0',NULL),
	(9600152,'10.10.10.17','','0',NULL),
	(9600153,'10.10.10.17','','0',NULL),
	(9600154,'10.10.10.17','','0',NULL),
	(9600155,'10.10.10.17','','0',NULL),
	(9600156,'10.10.10.17','','0',NULL),
	(9600157,'10.10.10.17','','0',NULL),
	(9600158,'10.10.10.17','','0',NULL),
	(9600159,'10.10.10.17','','0',NULL),
	(9600160,'10.10.10.17','','0',NULL),
	(9600161,'10.10.10.17','','0',NULL),
	(9600162,'10.10.10.17','','0',NULL),
	(9600163,'10.10.10.17','','0',NULL),
	(9600164,'10.10.10.17','','0',NULL),
	(9600165,'10.10.10.17','','0',NULL),
	(9600166,'10.10.10.17','','0',NULL),
	(9600167,'10.10.10.17','','0',NULL),
	(9600168,'10.10.10.17','','0',NULL),
	(9600169,'10.10.10.17','','0',NULL),
	(9600170,'10.10.10.17','','0',NULL),
	(9600171,'10.10.10.17','','0',NULL),
	(9600172,'10.10.10.17','','0',NULL),
	(9600173,'10.10.10.17','','0',NULL),
	(9600174,'10.10.10.17','','0',NULL),
	(9600175,'10.10.10.17','','0',NULL),
	(9600176,'10.10.10.17','','0',NULL),
	(9600177,'10.10.10.17','','0',NULL),
	(9600178,'10.10.10.17','','0',NULL),
	(9600179,'10.10.10.17','','0',NULL),
	(9600180,'10.10.10.17','','0',NULL),
	(9600181,'10.10.10.17','','0',NULL),
	(9600182,'10.10.10.17','','0',NULL),
	(9600183,'10.10.10.17','','0',NULL),
	(9600184,'10.10.10.17','','0',NULL),
	(9600185,'10.10.10.17','','0',NULL),
	(9600186,'10.10.10.17','','0',NULL),
	(9600187,'10.10.10.17','','0',NULL),
	(9600188,'10.10.10.17','','0',NULL),
	(9600189,'10.10.10.17','','0',NULL),
	(9600190,'10.10.10.17','','0',NULL),
	(9600191,'10.10.10.17','','0',NULL),
	(9600192,'10.10.10.17','','0',NULL),
	(9600193,'10.10.10.17','','0',NULL),
	(9600194,'10.10.10.17','','0',NULL),
	(9600195,'10.10.10.17','','0',NULL),
	(9600196,'10.10.10.17','','0',NULL),
	(9600197,'10.10.10.17','','0',NULL),
	(9600198,'10.10.10.17','','0',NULL),
	(9600199,'10.10.10.17','','0',NULL),
	(9600200,'10.10.10.17','','0',NULL),
	(9600201,'10.10.10.17','','0',NULL),
	(9600202,'10.10.10.17','','0',NULL),
	(9600203,'10.10.10.17','','0',NULL),
	(9600204,'10.10.10.17','','0',NULL),
	(9600205,'10.10.10.17','','0',NULL),
	(9600206,'10.10.10.17','','0',NULL),
	(9600207,'10.10.10.17','','0',NULL),
	(9600208,'10.10.10.17','','0',NULL),
	(9600209,'10.10.10.17','','0',NULL),
	(9600210,'10.10.10.17','','0',NULL),
	(9600211,'10.10.10.17','','0',NULL),
	(9600212,'10.10.10.17','','0',NULL),
	(9600213,'10.10.10.17','','0',NULL),
	(9600214,'10.10.10.17','','0',NULL),
	(9600215,'10.10.10.17','','0',NULL),
	(9600216,'10.10.10.17','','0',NULL),
	(9600217,'10.10.10.17','','0',NULL),
	(9600218,'10.10.10.17','','0',NULL),
	(9600219,'10.10.10.17','','0',NULL),
	(9600220,'10.10.10.17','','0',NULL),
	(9600221,'10.10.10.17','','0',NULL),
	(9600222,'10.10.10.17','','0',NULL),
	(9600223,'10.10.10.17','','0',NULL),
	(9600224,'10.10.10.17','','0',NULL),
	(9600225,'10.10.10.17','','0',NULL),
	(9600226,'10.10.10.17','','0',NULL),
	(9600227,'10.10.10.17','','0',NULL),
	(9600228,'10.10.10.17','','0',NULL),
	(9600229,'10.10.10.17','','0',NULL),
	(9600230,'10.10.10.17','','0',NULL),
	(9600231,'10.10.10.17','','0',NULL),
	(9600232,'10.10.10.17','','0',NULL),
	(9600233,'10.10.10.17','','0',NULL),
	(9600234,'10.10.10.17','','0',NULL),
	(9600235,'10.10.10.17','','0',NULL),
	(9600236,'10.10.10.17','','0',NULL),
	(9600237,'10.10.10.17','','0',NULL),
	(9600238,'10.10.10.17','','0',NULL),
	(9600239,'10.10.10.17','','0',NULL),
	(9600240,'10.10.10.17','','0',NULL),
	(9600241,'10.10.10.17','','0',NULL),
	(9600242,'10.10.10.17','','0',NULL),
	(9600243,'10.10.10.17','','0',NULL),
	(9600244,'10.10.10.17','','0',NULL),
	(9600245,'10.10.10.17','','0',NULL),
	(9600246,'10.10.10.17','','0',NULL),
	(9600247,'10.10.10.17','','0',NULL),
	(9600248,'10.10.10.17','','0',NULL),
	(9600249,'10.10.10.17','','0',NULL),
	(9600250,'10.10.10.17','','0',NULL),
	(9600251,'10.10.10.17','','0',NULL),
	(9600252,'10.10.10.17','','0',NULL),
	(9600253,'10.10.10.17','','0',NULL),
	(9600254,'10.10.10.17','','0',NULL),
	(9600255,'10.10.10.17','','0',NULL),
	(9600256,'10.10.10.17','','0',NULL),
	(9600257,'10.10.10.17','','0',NULL),
	(9600258,'10.10.10.17','','0',NULL),
	(9600259,'10.10.10.17','','0',NULL),
	(9600260,'10.10.10.17','','0',NULL),
	(9600261,'10.10.10.17','','0',NULL),
	(9600262,'10.10.10.17','','0',NULL),
	(9600263,'10.10.10.17','','0',NULL),
	(9600264,'10.10.10.17','','0',NULL),
	(9600265,'10.10.10.17','','0',NULL),
	(9600266,'10.10.10.17','','0',NULL),
	(9600267,'10.10.10.17','','0',NULL),
	(9600268,'10.10.10.17','','0',NULL),
	(9600269,'10.10.10.17','','0',NULL),
	(9600270,'10.10.10.17','','0',NULL),
	(9600271,'10.10.10.17','','0',NULL),
	(9600272,'10.10.10.17','','0',NULL),
	(9600273,'10.10.10.17','','0',NULL),
	(9600274,'10.10.10.17','','0',NULL),
	(9600275,'10.10.10.17','','0',NULL),
	(9600276,'10.10.10.17','','0',NULL),
	(9600277,'10.10.10.17','','0',NULL),
	(9600278,'10.10.10.17','','0',NULL),
	(9600279,'10.10.10.17','','0',NULL),
	(9600280,'10.10.10.17','','0',NULL),
	(9600281,'10.10.10.17','','0',NULL),
	(9600282,'10.10.10.17','','0',NULL),
	(9600283,'10.10.10.17','','0',NULL),
	(9600284,'10.10.10.17','','0',NULL),
	(9600285,'10.10.10.17','','0',NULL),
	(9600286,'10.10.10.17','','0',NULL),
	(9600287,'10.10.10.17','','0',NULL),
	(9600288,'10.10.10.17','','0',NULL),
	(9600289,'10.10.10.17','','0',NULL),
	(9600290,'10.10.10.17','','0',NULL),
	(9600291,'10.10.10.17','','0',NULL),
	(9600292,'10.10.10.17','','0',NULL),
	(9600293,'10.10.10.17','','0',NULL),
	(9600294,'10.10.10.17','','0',NULL),
	(9600295,'10.10.10.17','','0',NULL),
	(9600296,'10.10.10.17','','0',NULL),
	(9600297,'10.10.10.17','','0',NULL),
	(9600298,'10.10.10.17','','0',NULL),
	(9600299,'10.10.10.17','','0',NULL);
	
and their IP addresses adjusted for the server that is being setup to use ConfBridge.



- Code changes:

Included in the "extras/ConfBridge/" directory of the svn/trunk codebase are several new/patched files that need to be applied to the servers on your system for ConfBridge compatibility with VICIdial. They can be applied by going into the directory with the file to be patched in it and then running commands like the following:

vici-dev1:/srv/www/htdocs/agc/ # patch -p0 < vicidial.php.diff
patching file vicidial.php

NOTE: As of revision 3826, the new 'AST_conf_update_screen.pl' script is installed by the VICIdial codebase and all other required patches are already applied by default.


Here is the list of files for specific default directories:

Dialers:
/usr/share/astguiclient/ - 
- ADMIN_keepalive_ALL.pl.diff
- ADMIN_update_server_ip.pl.diff
- AST_DB_optimize.pl.diff
- 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/ - 
- vicidial.php.diff
- vdc_db_query.php.diff
- manager_send.php.diff
/srv/www/htdocs/vicidial/ - 
- non_agent_api.php.diff


- Web Admin changes:

The admin web screens had been modified to show ConfBridges on servers and management of ConfBridges in the database.

Also, the "Server Modify" page now has settings for the Conferencing Engine and the Conf Update Interval.



- Screen Session:

A new screen session has been added called 'AST_conf_update_screen.pl'. This screen session replaces both the AST_conf_update.pl and AST_conf_update_3way.pl scripts. It checks both MeetMe and ConfBridge conferences for unnecessary channels and removes them. For instance if an agent does a Leave 3way and a few minutes later one of the remaining channels hangs up. This script will remove the remaining channel and free the conference for use by Vicidial. This screen session is optional for use with MeetMe but is required to be used with ConfBridge.

To enable this screen session you need to add a 'C' to the 'VARactive_keepalives' variable in the '/etc/astguiclient.conf' on your dialers, and comment out the following line from your crontab:

                ### updater for conference validator
                * * * * * /usr/share/astguiclient/AST_conf_update.pl

You can configure the refresh interval for how often the screen session checks for unnecessary channels by changing "Conf Update Interval" in Admin -> Servers.
