app_confbridge: Add the Muted header to ConfbridgeJoin AMI event.

ASTERISK-27651

Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34
pull/9/head
Richard Mudgett 7 years ago
parent 0a784a91a3
commit f4b161440b

@ -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

@ -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;
} }

@ -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_admin_header(struct ast_str **extra_text, struct stasis_message *message) 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_bridge_blob *blob = stasis_message_data(message);
const struct ast_json *admin = ast_json_object_get(blob->blob, "admin"); const struct ast_json *obj;
if (!admin) {
obj = ast_json_object_get(blob->blob, json_key);
if (!obj) {
return -1; return -1;
} }
return ast_str_append_event_header(extra_text, "Admin", return ast_str_append_event_header(extra_text, ami_header,
S_COR(ast_json_is_true(admin), "Yes", "No")); AST_YESNO(ast_json_is_true(obj)));
}
static int get_admin_header(struct ast_str **extra_text, struct stasis_message *message)
{
return get_bool_header(extra_text, message, "admin", "Admin");
}
static int get_muted_header(struct ast_str **extra_text, struct stasis_message *message)
{
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);

Loading…
Cancel
Save