[Asterisk-code-review] app confbridge: ConfbridgeList event has standard channel sh... (asterisk[13])
Richard Mudgett
asteriskteam at digium.com
Thu Feb 1 14:14:34 CST 2018
Richard Mudgett has uploaded this change for review. ( https://gerrit.asterisk.org/8137
Change subject: app_confbridge: ConfbridgeList event has standard channel shapshot headers.
......................................................................
app_confbridge: ConfbridgeList event has standard channel shapshot headers.
* Made the AMI ConfbridgeList action's ConfbridgeList events output all
the standard channel snapshot headers instead of a few hand-coded channel
snapshot headers. The benefit is that the CallerIDName gets disruptive
characters like CR, LF, Tab, and a few others escaped. However, an empty
CallerIDName is now output as "<unknown>" instead of "<no name>".
ASTERISK-27651
Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977
---
M CHANGES
M UPGRADE.txt
M apps/app_confbridge.c
3 files changed, 102 insertions(+), 18 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/37/8137/1
diff --git a/CHANGES b/CHANGES
index a6351be..27cc326 100644
--- a/CHANGES
+++ b/CHANGES
@@ -23,6 +23,12 @@
* Added the Muted header to the ConfbridgeJoin AMI event to indicate the
participant's starting mute status.
+ * Made the AMI ConfbridgeList action's ConfbridgeList events output all
+ the standard channel snapshot headers instead of a few hand-coded channel
+ snapshot headers. The benefit is that the CallerIDName gets disruptive
+ characters like CR, LF, Tab, and a few others escaped. However, an empty
+ CallerIDName is now output as "<unknown>" instead of "<no name>".
+
app_followme
------------------
* Added a new prompt, connecting-prompt, which will be played
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 5d5cf8d..630c696 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -23,6 +23,14 @@
From 13.19.0 to 13.20.0:
+app_confbridge
+------------------
+ * Made the AMI ConfbridgeList action's ConfbridgeList events output all
+ the standard channel snapshot headers instead of a few hand-coded channel
+ snapshot headers. The benefit is that the CallerIDName gets disruptive
+ characters like CR, LF, Tab, and a few others escaped. However, an empty
+ CallerIDName is now output as "<unknown>" instead of "<no name>".
+
res_pjsip
------------------
* Users who are matching endpoints by SIP header need to reevaluate their
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index 1380d3c..ba6bb29 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -69,6 +69,7 @@
#include "asterisk/test.h"
#include "asterisk/stasis.h"
#include "asterisk/stasis_bridges.h"
+#include "asterisk/stasis_channels.h"
#include "asterisk/json.h"
#include "asterisk/format_cache.h"
#include "asterisk/taskprocessor.h"
@@ -228,6 +229,62 @@
ConfbridgeListComplete.</para>
</description>
</manager>
+ <managerEvent language="en_US" name="ConfbridgeList">
+ <managerEventInstance class="EVENT_FLAG_REPORTING">
+ <synopsis>Raised as part of the ConfbridgeList action response list.</synopsis>
+ <syntax>
+ <parameter name="Conference">
+ <para>The name of the Confbridge conference.</para>
+ </parameter>
+ <parameter name="Admin">
+ <para>Identifies this user as an admin user.</para>
+ <enumlist>
+ <enum name="Yes"/>
+ <enum name="No"/>
+ </enumlist>
+ </parameter>
+ <parameter name="MarkedUser">
+ <para>Identifies this user as a marked user.</para>
+ <enumlist>
+ <enum name="Yes"/>
+ <enum name="No"/>
+ </enumlist>
+ </parameter>
+ <parameter name="WaitMarked">
+ <para>Must this user wait for a marked user to join?</para>
+ <enumlist>
+ <enum name="Yes"/>
+ <enum name="No"/>
+ </enumlist>
+ </parameter>
+ <parameter name="EndMarked">
+ <para>Does this user get kicked after the last marked user leaves?</para>
+ <enumlist>
+ <enum name="Yes"/>
+ <enum name="No"/>
+ </enumlist>
+ </parameter>
+ <parameter name="Waiting">
+ <para>Is this user waiting for a marked user to join?</para>
+ <enumlist>
+ <enum name="Yes"/>
+ <enum name="No"/>
+ </enumlist>
+ </parameter>
+ <parameter name="Muted">
+ <para>The current mute status.</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>
+ <channel_snapshot/>
+ </syntax>
+ </managerEventInstance>
+ </managerEvent>
<manager name="ConfbridgeListRooms" language="en_US">
<synopsis>
List active conferences.
@@ -3443,15 +3500,26 @@
.read = func_confbridge_info,
};
-static void action_confbridgelist_item(struct mansession *s, const char *id_text, struct confbridge_conference *conference, struct confbridge_user *user, int waiting)
+static int action_confbridgelist_item(struct mansession *s, const char *id_text, struct confbridge_conference *conference, struct confbridge_user *user, int waiting)
{
+ struct ast_channel_snapshot *snapshot;
+ struct ast_str *snap_str;
+
+ snapshot = ast_channel_snapshot_get_latest(ast_channel_uniqueid(user->chan));
+ if (!snapshot) {
+ return 0;
+ }
+
+ snap_str = ast_manager_build_channel_state_string(snapshot);
+ if (!snap_str) {
+ ao2_ref(snapshot, -1);
+ return 0;
+ }
+
astman_append(s,
"Event: ConfbridgeList\r\n"
"%s"
"Conference: %s\r\n"
- "CallerIDNum: %s\r\n"
- "CallerIDName: %s\r\n"
- "Channel: %s\r\n"
"Admin: %s\r\n"
"MarkedUser: %s\r\n"
"WaitMarked: %s\r\n"
@@ -3459,19 +3527,23 @@
"Waiting: %s\r\n"
"Muted: %s\r\n"
"AnsweredTime: %d\r\n"
+ "%s"
"\r\n",
id_text,
conference->name,
- S_COR(ast_channel_caller(user->chan)->id.number.valid, ast_channel_caller(user->chan)->id.number.str, "<unknown>"),
- S_COR(ast_channel_caller(user->chan)->id.name.valid, ast_channel_caller(user->chan)->id.name.str, "<no name>"),
- ast_channel_name(user->chan),
- ast_test_flag(&user->u_profile, USER_OPT_ADMIN) ? "Yes" : "No",
- ast_test_flag(&user->u_profile, USER_OPT_MARKEDUSER) ? "Yes" : "No",
- ast_test_flag(&user->u_profile, USER_OPT_WAITMARKED) ? "Yes" : "No",
- ast_test_flag(&user->u_profile, USER_OPT_ENDMARKED) ? "Yes" : "No",
- waiting ? "Yes" : "No",
- user->muted ? "Yes" : "No",
- ast_channel_get_up_time(user->chan));
+ AST_YESNO(ast_test_flag(&user->u_profile, USER_OPT_ADMIN)),
+ AST_YESNO(ast_test_flag(&user->u_profile, USER_OPT_MARKEDUSER)),
+ AST_YESNO(ast_test_flag(&user->u_profile, USER_OPT_WAITMARKED)),
+ AST_YESNO(ast_test_flag(&user->u_profile, USER_OPT_ENDMARKED)),
+ AST_YESNO(waiting),
+ AST_YESNO(user->muted),
+ ast_channel_get_up_time(user->chan),
+ ast_str_buffer(snap_str));
+
+ ast_free(snap_str);
+ ao2_ref(snapshot, -1);
+
+ return 1;
}
static int action_confbridgelist(struct mansession *s, const struct message *m)
@@ -3505,12 +3577,10 @@
ao2_lock(conference);
AST_LIST_TRAVERSE(&conference->active_list, user, list) {
- total++;
- action_confbridgelist_item(s, id_text, conference, user, 0);
+ total += action_confbridgelist_item(s, id_text, conference, user, 0);
}
AST_LIST_TRAVERSE(&conference->waiting_list, user, list) {
- total++;
- action_confbridgelist_item(s, id_text, conference, user, 1);
+ total += action_confbridgelist_item(s, id_text, conference, user, 1);
}
ao2_unlock(conference);
ao2_ref(conference, -1);
--
To view, visit https://gerrit.asterisk.org/8137
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977
Gerrit-Change-Number: 8137
Gerrit-PatchSet: 1
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20180201/6ebc6915/attachment-0001.html>
More information about the asterisk-code-review
mailing list