app_confbridge: Add the Muted header to ConfbridgeJoin AMI event.

ASTERISK-27651

Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34
This commit is contained in:
Richard Mudgett
2018-01-31 15:45:42 -06:00
parent 0a784a91a3
commit f4b161440b
3 changed files with 39 additions and 13 deletions

View File

@@ -74,6 +74,11 @@ Core
extension and include. These messages are no longer printed by the extension and include. These messages are no longer printed by the
verbose loggers, they are now only logged as debug messages. verbose loggers, they are now only logged as debug messages.
app_confbridge
------------------
* Added the Muted header to the ConfbridgeJoin AMI event to indicate the
participant's starting mute status.
app_followme app_followme
------------------ ------------------
* Added a new prompt, connecting-prompt, which will be played * Added a new prompt, connecting-prompt, which will be played

View File

@@ -530,9 +530,9 @@ static void send_join_event(struct confbridge_user *user, struct confbridge_conf
{ {
struct ast_json *json_object; struct ast_json *json_object;
json_object = ast_json_pack("{s: b}", json_object = ast_json_pack("{s: b, s: b}",
"admin", ast_test_flag(&user->u_profile, USER_OPT_ADMIN) "admin", ast_test_flag(&user->u_profile, USER_OPT_ADMIN),
); "muted", user->muted);
if (!json_object) { if (!json_object) {
return; return;
} }

View File

@@ -81,6 +81,13 @@
<enum name="No"/> <enum name="No"/>
</enumlist> </enumlist>
</parameter> </parameter>
<parameter name="Muted">
<para>The joining mute status.</para>
<enumlist>
<enum name="Yes"/>
<enum name="No"/>
</enumlist>
</parameter>
</syntax> </syntax>
<see-also> <see-also>
<ref type="managerEvent">ConfbridgeLeave</ref> <ref type="managerEvent">ConfbridgeLeave</ref>
@@ -252,20 +259,33 @@ static void confbridge_publish_manager_event(
"%s", "%s",
conference_name, conference_name,
ast_str_buffer(bridge_text), ast_str_buffer(bridge_text),
S_COR(channel_text, ast_str_buffer(channel_text), ""), channel_text ? ast_str_buffer(channel_text) : "",
S_COR(extra_text, ast_str_buffer(extra_text), "")); extra_text ? ast_str_buffer(extra_text) : "");
}
static int get_bool_header(struct ast_str **extra_text, struct stasis_message *message,
const char *json_key, const char *ami_header)
{
const struct ast_bridge_blob *blob = stasis_message_data(message);
const struct ast_json *obj;
obj = ast_json_object_get(blob->blob, json_key);
if (!obj) {
return -1;
}
return ast_str_append_event_header(extra_text, ami_header,
AST_YESNO(ast_json_is_true(obj)));
} }
static int get_admin_header(struct ast_str **extra_text, struct stasis_message *message) static int get_admin_header(struct ast_str **extra_text, struct stasis_message *message)
{ {
const struct ast_bridge_blob *blob = stasis_message_data(message); return get_bool_header(extra_text, message, "admin", "Admin");
const struct ast_json *admin = ast_json_object_get(blob->blob, "admin"); }
if (!admin) {
return -1;
}
return ast_str_append_event_header(extra_text, "Admin", static int get_muted_header(struct ast_str **extra_text, struct stasis_message *message)
S_COR(ast_json_is_true(admin), "Yes", "No")); {
return get_bool_header(extra_text, message, "muted", "Muted");
} }
static void confbridge_start_cb(void *data, struct stasis_subscription *sub, static void confbridge_start_cb(void *data, struct stasis_subscription *sub,
@@ -296,7 +316,8 @@ static void confbridge_join_cb(void *data, struct stasis_subscription *sub,
{ {
struct ast_str *extra_text = NULL; struct ast_str *extra_text = NULL;
if (!get_admin_header(&extra_text, message)) { if (!get_admin_header(&extra_text, message)
&& !get_muted_header(&extra_text, message)) {
confbridge_publish_manager_event(message, "ConfbridgeJoin", extra_text); confbridge_publish_manager_event(message, "ConfbridgeJoin", extra_text);
} }
ast_free(extra_text); ast_free(extra_text);