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.
This commit is contained in:
Holger Hans Peter Freyther 2023-10-02 20:03:03 +08:00
parent acb2348f90
commit 1171dcee02
1 changed files with 8 additions and 0 deletions

View File

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