mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	app_confbridge: Add talking indicator for ConfBridgeList AMI response
When an AMI client connects, it cannot determine if a user was talking prior to a transition in the user speaking state (which would generate a ConfbridgeTalking event). This patch causes app_confbridge to track the talking state and make this state available via ConfBridgeList. ASTERISK-27877 #close Change-Id: I19b5284f34966c3fda94f5b99a7e40e6b89767c6
This commit is contained in:
		
							
								
								
									
										6
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -28,6 +28,12 @@ app_sendtext | ||||
|     Content-Type of a message.  Since you can now set Content-Type, other | ||||
|     text/* content types are now valid. | ||||
|  | ||||
| app_confbridge | ||||
| ------------------ | ||||
|   * ConfbridgeList now shows talking status. This utilizes the same voice | ||||
|     detection as the ConfbridgeTalking event, so bridges must be configured | ||||
|     with "talk_detection_events=yes" for this flag to have meaning. | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| --- Functionality changes from Asterisk 13.20.0 to Asterisk 13.21.0 ---------- | ||||
| ------------------------------------------------------------------------------ | ||||
|   | ||||
| @@ -278,6 +278,13 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | ||||
| 						<enum name="No"/> | ||||
| 					</enumlist> | ||||
| 				</parameter> | ||||
| 				<parameter name="Talking"> | ||||
| 					<para>Is this user talking?</para> | ||||
| 					<enumlist> | ||||
| 						<enum name="Yes"/> | ||||
| 						<enum name="No"/> | ||||
| 					</enumlist> | ||||
| 				</parameter> | ||||
| 				<parameter name="AnsweredTime"> | ||||
| 					<para>The number of seconds the channel has been up.</para> | ||||
| 				</parameter> | ||||
| @@ -2085,7 +2092,7 @@ static int play_sound_number(struct confbridge_conference *conference, int say_n | ||||
|  | ||||
| static int conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void *hook_pvt, int talking) | ||||
| { | ||||
| 	const struct confbridge_user *user = hook_pvt; | ||||
| 	struct confbridge_user *user = hook_pvt; | ||||
| 	RAII_VAR(struct confbridge_conference *, conference, NULL, ao2_cleanup); | ||||
| 	struct ast_json *talking_extras; | ||||
|  | ||||
| @@ -2095,6 +2102,10 @@ static int conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	ao2_lock(conference); | ||||
| 	user->talking = talking; | ||||
| 	ao2_unlock(conference); | ||||
|  | ||||
| 	talking_extras = ast_json_pack("{s: s, s: b}", | ||||
| 		"talking_status", talking ? "on" : "off", | ||||
| 		"admin", ast_test_flag(&user->u_profile, USER_OPT_ADMIN)); | ||||
| @@ -3526,6 +3537,7 @@ static int action_confbridgelist_item(struct mansession *s, const char *id_text, | ||||
| 		"EndMarked: %s\r\n" | ||||
| 		"Waiting: %s\r\n" | ||||
| 		"Muted: %s\r\n" | ||||
| 		"Talking: %s\r\n" | ||||
| 		"AnsweredTime: %d\r\n" | ||||
| 		"%s" | ||||
| 		"\r\n", | ||||
| @@ -3537,6 +3549,7 @@ static int action_confbridgelist_item(struct mansession *s, const char *id_text, | ||||
| 		AST_YESNO(ast_test_flag(&user->u_profile, USER_OPT_ENDMARKED)), | ||||
| 		AST_YESNO(waiting), | ||||
| 		AST_YESNO(user->muted), | ||||
| 		AST_YESNO(user->talking), | ||||
| 		ast_channel_get_up_time(user->chan), | ||||
| 		ast_str_buffer(snap_str)); | ||||
|  | ||||
|   | ||||
| @@ -254,6 +254,7 @@ struct confbridge_user { | ||||
| 	unsigned int muted:1;                        /*!< Has the user requested to be muted? */ | ||||
| 	unsigned int kicked:1;                       /*!< User has been kicked from the conference */ | ||||
| 	unsigned int playing_moh:1;                  /*!< MOH is currently being played to the user */ | ||||
| 	unsigned int talking:1;                      /*!< User is currently talking */ | ||||
| 	AST_LIST_HEAD_NOLOCK(, post_join_action) post_join_list; /*!< List of sounds to play after joining */; | ||||
| 	AST_LIST_ENTRY(confbridge_user) list;        /*!< Linked list information */ | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user