From b99606955ea0436da6ebace42d05a76b13d83f39 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 2 Oct 2023 20:03:03 +0800 Subject: [PATCH] ari/stasis: Indicate progress before playback on a bridge Make it possible to start a playback and the calling party to receive audio on a bridge before the call is connected. Model the implementation after play_on_channel and deliver a AST_CONTROL_PROGRESS before starting the playback. For a PJSIP channel this will result in sending a SIP 183 Session Progress. --- res/ari/resource_bridges.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c index 8c6acdb676..b66e41cc81 100644 --- a/res/ari/resource_bridges.c +++ b/res/ari/resource_bridges.c @@ -425,6 +425,12 @@ static void ari_bridges_play_new(const char **args_media, struct bridge_channel_control_thread_data *thread_data; pthread_t threadid; + struct ast_frame prog = { + .frametype = AST_FRAME_CONTROL, + .subclass.integer = AST_CONTROL_PROGRESS, + }; + + if (!(play_channel = prepare_bridge_media_channel("Announcer"))) { ast_ari_response_error( response, 500, "Internal Error", "Could not create playback channel"); @@ -472,6 +478,8 @@ static void ari_bridges_play_new(const char **args_media, return; } + ast_bridge_queue_everyone_else(bridge, NULL, &prog); + /* Give play_channel and control reference to the thread data */ thread_data = ast_malloc(sizeof(*thread_data) + strlen(bridge->uniqueid) + 1); if (!thread_data) { -- 2.47.2