diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index a3d0f31eb9147695f2f4acbb9d648aac2b2e71f9..e792a2a8d1ed23343eefb9db1e5b96a4a0d5f6eb 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -2188,6 +2188,18 @@ void ast_ari_channels_external_media(struct ast_variable *headers, ast_assert(response != NULL); + /* Parse any query parameters out of the body parameter */ + if (args->variables) { + struct ast_json *json_variables; + + ast_ari_channels_external_media_parse_body(args->variables, args); + json_variables = ast_json_object_get(args->variables, "variables"); + if (json_variables + && json_to_ast_variables(response, json_variables, &variables)) { + return; + } + } + if (ast_strlen_zero(args->app)) { ast_ari_response_error(response, 400, "Bad Request", "app cannot be empty"); return; @@ -2222,17 +2234,6 @@ void ast_ari_channels_external_media(struct ast_variable *headers, args->direction = "both"; } - if (args->variables) { - struct ast_json *json_variables; - - ast_ari_channels_external_media_parse_body(args->variables, args); - json_variables = ast_json_object_get(args->variables, "variables"); - if (json_variables - && json_to_ast_variables(response, json_variables, &variables)) { - return; - } - } - if (strcasecmp(args->encapsulation, "rtp") == 0 && strcasecmp(args->transport, "udp") == 0) { external_media_rtp_udp(args, variables, response); } else if (strcasecmp(args->encapsulation, "audiosocket") == 0 && strcasecmp(args->transport, "tcp") == 0) {