diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index 667ea73f067be88a40d51a5c1b7185442b225eba..c6900f1b21a2d8d049e93828dd49dcf79010b8ab 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -687,43 +687,6 @@ void ast_ari_channels_list(struct ast_variable *headers, ast_ari_response_ok(response, ast_json_ref(json)); } -static int ari_channels_set_channel_var(struct ast_channel *chan, - const char *variable, const char *value, struct ast_ari_response *response) -{ - if (pbx_builtin_setvar_helper(chan, variable, value)) { - ast_ari_response_error( - response, 400, "Bad Request", - "Unable to set channel variable %s=%s", variable, value); - return -1; - } - - return 0; -} - -static int ari_channels_set_channel_vars(struct ast_channel *chan, - struct ast_json *variables, struct ast_ari_response *response) -{ - struct ast_json_iter *i; - - if (!variables) { - /* nothing to do */ - return 0; - } - - for (i = ast_json_object_iter(variables); i; - i = ast_json_object_iter_next(variables, i)) { - if (ari_channels_set_channel_var( - chan, ast_json_object_iter_key(i), - ast_json_string_get(ast_json_object_iter_value(i)), - response)) { - /* response filled in by called function */ - return -1; - } - } - - return 0; -} - void ast_ari_channels_originate(struct ast_variable *headers, struct ast_ari_channels_originate_args *args, struct ast_ari_response *response) @@ -813,11 +776,6 @@ void ast_ari_channels_originate(struct ast_variable *headers, return; } - if (ari_channels_set_channel_vars(chan, args->variables, response)) { - /* response filled in by called function */ - return; - } - snapshot = ast_channel_snapshot_create(chan); ast_channel_unlock(chan); diff --git a/res/ari/resource_channels.h b/res/ari/resource_channels.h index 36c7339ba19fb9abce1220cf46aa6e12b4fd2a0c..49ab8eb3425f1a0174d2742d997551a4e24b15ba 100644 --- a/res/ari/resource_channels.h +++ b/res/ari/resource_channels.h @@ -68,8 +68,6 @@ struct ast_ari_channels_originate_args { const char *caller_id; /*! \brief Timeout (in seconds) before giving up dialing, or -1 for no timeout. */ int timeout; - /*! \brief Variables to be set on the channel. */ - struct ast_json *variables; }; /*! * \brief Create a new channel (originate). diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index 6b741b04c16b6d06ec78f231b5db24e9544c860b..40ad32b2b895f8ecf958a95808052f54784d27f3 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -117,6 +117,7 @@ static void ast_ari_channels_originate_cb( struct ast_ari_channels_originate_args args = {}; struct ast_variable *i; RAII_VAR(struct ast_json *, body, NULL, ast_json_unref); + struct ast_json *field; #if defined(AST_DEVMODE) int is_valid; int code; @@ -164,7 +165,39 @@ static void ast_ari_channels_originate_cb( goto fin; } } - args.variables = ast_json_ref(body); + /* Parse query parameters out of it */ + field = ast_json_object_get(body, "endpoint"); + if (field) { + args.endpoint = ast_json_string_get(field); + } + field = ast_json_object_get(body, "extension"); + if (field) { + args.extension = ast_json_string_get(field); + } + field = ast_json_object_get(body, "context"); + if (field) { + args.context = ast_json_string_get(field); + } + field = ast_json_object_get(body, "priority"); + if (field) { + args.priority = ast_json_integer_get(field); + } + field = ast_json_object_get(body, "app"); + if (field) { + args.app = ast_json_string_get(field); + } + field = ast_json_object_get(body, "appArgs"); + if (field) { + args.app_args = ast_json_string_get(field); + } + field = ast_json_object_get(body, "callerId"); + if (field) { + args.caller_id = ast_json_string_get(field); + } + field = ast_json_object_get(body, "timeout"); + if (field) { + args.timeout = ast_json_integer_get(field); + } ast_ari_channels_originate(headers, &args, response); #if defined(AST_DEVMODE) code = response->response_code; diff --git a/rest-api/api-docs/applications.json b/rest-api/api-docs/applications.json index e0a1cfaa6d58d9c8f41b6a2e28be2da0412f2dff..32ee3c458213d58a6c7bc8498463f88bfc77e820 100644 --- a/rest-api/api-docs/applications.json +++ b/rest-api/api-docs/applications.json @@ -107,7 +107,7 @@ }, { "name": "eventSource", - "description": "URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, device_state:{deviceName}", + "description": "URI for event source (channel:{channelId}, bridge:{bridgeId}, endpoint:{tech}/{resource}, deviceState:{deviceName}", "paramType": "query", "required": true, "allowMultiple": true, diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index d5094f3cca747ecc80cc74f9f52cb64dbceed1d2..3b14c8fbb3dc2121494335c4f53406f4fe80b060 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -88,14 +88,6 @@ "allowMultiple": false, "dataType": "int", "defaultValue": 30 - }, - { - "name": "variables", - "description": "Variables to be set on the channel.", - "paramType": "body", - "required": false, - "allowMultiple": false, - "dataType": "containers" } ], "errorResponses": [