diff options
Diffstat (limited to 'bridges/bridge_builtin_features.c')
-rw-r--r-- | bridges/bridge_builtin_features.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/bridges/bridge_builtin_features.c b/bridges/bridge_builtin_features.c index e11b280cd..3a081c83d 100644 --- a/bridges/bridge_builtin_features.c +++ b/bridges/bridge_builtin_features.c @@ -134,6 +134,9 @@ static struct ast_channel *dial_transfer(struct ast_channel *caller, const char return NULL; } + /* Who is transferring the call. */ + pbx_builtin_setvar_helper(chan, "TRANSFERERNAME", ast_channel_name(caller)); + /* Before we actually dial out let's inherit appropriate information. */ copy_caller_data(chan, caller); @@ -275,6 +278,7 @@ static int feature_attended_transfer(struct ast_bridge *bridge, struct ast_bridg struct ast_bridge_features caller_features; int xfer_failed; struct ast_bridge_features_attended_transfer *attended_transfer = hook_pvt; + const char *complete_sound; const char *context; enum atxfer_code transfer_code = ATXFER_INCOMPLETE; const char *atxfer_abort; @@ -407,6 +411,20 @@ static int feature_attended_transfer(struct ast_bridge *bridge, struct ast_bridg ast_bridge_destroy(attended_bridge); ast_bridge_features_cleanup(&caller_features); + /* Is there a courtesy sound to play to the peer? */ + ast_channel_lock(bridge_channel->chan); + complete_sound = pbx_builtin_getvar_helper(bridge_channel->chan, + "ATTENDED_TRANSFER_COMPLETE_SOUND"); + if (!ast_strlen_zero(complete_sound)) { + complete_sound = ast_strdupa(complete_sound); + } else { + complete_sound = NULL; + } + ast_channel_unlock(bridge_channel->chan); + if (complete_sound) { + pbx_builtin_setvar_helper(peer, "BRIDGE_PLAY_SOUND", complete_sound); + } + xfer_failed = -1; switch (transfer_code) { case ATXFER_INCOMPLETE: |