diff options
author | Mark Michelson <mmichelson@digium.com> | 2013-08-02 14:13:04 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2013-08-02 14:13:04 +0000 |
commit | 328e99f41d48d8f15832bf4f6c97beb0ef71fc0c (patch) | |
tree | c79646508e9ae44a0728fa38832ae112d02ece45 /main/manager_bridges.c | |
parent | 41d6be2432a77cf9da5dbb3f0590a74340a2c54e (diff) |
Make a couple of changes to help AMI events to be more clear in what is occurring.
* BridgeEnter now contains the unique ID of the channel that is to be swapped out, if applicable.
* There is a ParkedCallSwap event that is sent when a parked channel has a new channel take its place.
(closes issue ASTERISK-22193)
reported by Mark Michelson
Review: https://reviewboard.asterisk.org/r/2712
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396107 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager_bridges.c')
-rw-r--r-- | main/manager_bridges.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/main/manager_bridges.c b/main/manager_bridges.c index 5d831b5b4..77533c600 100644 --- a/main/manager_bridges.c +++ b/main/manager_bridges.c @@ -58,6 +58,9 @@ static struct stasis_message_router *bridge_state_router; <syntax> <bridge_snapshot/> <channel_snapshot/> + <parameter name="SwapUniqueid"> + <para>The uniqueid of the channel being swapped out of the bridge</para> + </parameter> </syntax> </managerEventInstance> </managerEvent> @@ -247,9 +250,11 @@ static void channel_enter_cb(void *data, struct stasis_subscription *sub, struct stasis_topic *topic, struct stasis_message *message) { + static const char *swap_name = "SwapUniqueid: "; struct ast_bridge_blob *blob = stasis_message_data(message); RAII_VAR(struct ast_str *, bridge_text, NULL, ast_free); RAII_VAR(struct ast_str *, channel_text, NULL, ast_free); + const char *swap_id; bridge_text = ast_manager_build_bridge_state_string(blob->bridge, ""); channel_text = ast_manager_build_channel_state_string(blob->channel); @@ -257,11 +262,17 @@ static void channel_enter_cb(void *data, struct stasis_subscription *sub, return; } + swap_id = ast_json_string_get(ast_json_object_get(blob->blob, "swap")); + manager_event(EVENT_FLAG_CALL, "BridgeEnter", "%s" - "%s", + "%s" + "%s%s%s", ast_str_buffer(bridge_text), - ast_str_buffer(channel_text)); + ast_str_buffer(channel_text), + swap_id ? swap_name : "", + S_OR(swap_id, ""), + swap_id ? "\r\n" : ""); } static void channel_leave_cb(void *data, struct stasis_subscription *sub, |