[Asterisk-code-review] app confbridge: Add talking indicator for ConfBridgeList AMI... (asterisk[13])

George Joseph asteriskteam at digium.com
Wed Jun 6 09:46:29 CDT 2018


George Joseph has submitted this change and it was merged. ( https://gerrit.asterisk.org/9060 )

Change subject: app_confbridge: Add talking indicator for ConfBridgeList AMI response
......................................................................

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
---
M CHANGES
M apps/app_confbridge.c
M apps/confbridge/include/confbridge.h
3 files changed, 21 insertions(+), 1 deletion(-)

Approvals:
  Richard Mudgett: Looks good to me, but someone else must approve
  Joshua Colp: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved; Approved for Submit



diff --git a/CHANGES b/CHANGES
index 4bb2737..a02cd8a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -28,6 +28,12 @@
     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 ----------
 ------------------------------------------------------------------------------
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index df93215..ebeef92 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -278,6 +278,13 @@
 						<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 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;
 
@@ -2094,6 +2101,10 @@
 		/* Remove the hook since the conference does not exist. */
 		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",
@@ -3526,6 +3537,7 @@
 		"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 @@
 		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));
 
diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h
index e59400c..a1f9f4a 100644
--- a/apps/confbridge/include/confbridge.h
+++ b/apps/confbridge/include/confbridge.h
@@ -254,6 +254,7 @@
 	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 */
 };

-- 
To view, visit https://gerrit.asterisk.org/9060
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: merged
Gerrit-Change-Id: I19b5284f34966c3fda94f5b99a7e40e6b89767c6
Gerrit-Change-Number: 9060
Gerrit-PatchSet: 4
Gerrit-Owner: William McCall <william.mccall at gmail.com>
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Jenkins2
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Matthew Fredrickson <creslin at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
Gerrit-Reviewer: William McCall <william.mccall at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20180606/fd6925f4/attachment-0001.html>


More information about the asterisk-code-review mailing list