From: Kevin Harwell Date: Tue, 9 Dec 2014 20:19:03 +0000 (+0000) Subject: ARI/AMI: Include language in standard channel snapshot output X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a924d91481f3be2793324a75f2a357ab2d1d9a33;p=thirdparty%2Fasterisk.git ARI/AMI: Include language in standard channel snapshot output The channel "language" was already part of a channel snapshot, however is was not sent out over AMI or ARI. This patch makes it so the channel "language" is included in the appropriate AMI or ARI events. ASTERISK-24553 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/4245/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@429204 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/manager_channels.c b/main/manager_channels.c index 9a15353f2f..47dd603e0e 100644 --- a/main/manager_channels.c +++ b/main/manager_channels.c @@ -422,6 +422,7 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( "%sCallerIDName: %s\r\n" "%sConnectedLineNum: %s\r\n" "%sConnectedLineName: %s\r\n" + "%sLanguage: %s\r\n" "%sAccountCode: %s\r\n" "%sContext: %s\r\n" "%sExten: %s\r\n" @@ -434,6 +435,7 @@ struct ast_str *ast_manager_build_channel_state_string_prefix( prefix, S_OR(snapshot->caller_name, ""), prefix, S_OR(snapshot->connected_number, ""), prefix, S_OR(snapshot->connected_name, ""), + prefix, snapshot->language, prefix, snapshot->accountcode, prefix, snapshot->context, prefix, snapshot->exten, diff --git a/main/stasis_channels.c b/main/stasis_channels.c index eda5163b4f..40a80f9c2f 100644 --- a/main/stasis_channels.c +++ b/main/stasis_channels.c @@ -878,7 +878,7 @@ struct ast_json *ast_channel_snapshot_to_json( /* Broken up into groups of three for readability */ "{ s: s, s: s, s: s," " s: o, s: o, s: s," - " s: o, s: o }", + " s: o, s: o, s: s }", /* First line */ "id", snapshot->uniqueid, "name", snapshot->name, @@ -892,7 +892,8 @@ struct ast_json *ast_channel_snapshot_to_json( /* Third line */ "dialplan", ast_json_dialplan_cep( snapshot->context, snapshot->exten, snapshot->priority), - "creationtime", ast_json_timeval(snapshot->creationtime, NULL)); + "creationtime", ast_json_timeval(snapshot->creationtime, NULL), + "language", snapshot->language); return ast_json_ref(json_chan); } diff --git a/res/ari/ari_model_validators.c b/res/ari/ari_model_validators.c index 06c3cf7ee1..85895c5e55 100644 --- a/res/ari/ari_model_validators.c +++ b/res/ari/ari_model_validators.c @@ -786,6 +786,7 @@ int ast_ari_validate_channel(struct ast_json *json) int has_creationtime = 0; int has_dialplan = 0; int has_id = 0; + int has_language = 0; int has_name = 0; int has_state = 0; @@ -850,6 +851,16 @@ int ast_ari_validate_channel(struct ast_json *json) res = 0; } } else + if (strcmp("language", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_language = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI Channel field language failed validation\n"); + res = 0; + } + } else if (strcmp("name", ast_json_object_iter_key(iter)) == 0) { int prop_is_valid; has_name = 1; @@ -908,6 +919,11 @@ int ast_ari_validate_channel(struct ast_json *json) res = 0; } + if (!has_language) { + ast_log(LOG_ERROR, "ARI Channel missing required field language\n"); + res = 0; + } + if (!has_name) { ast_log(LOG_ERROR, "ARI Channel missing required field name\n"); res = 0; diff --git a/res/ari/ari_model_validators.h b/res/ari/ari_model_validators.h index 3a0bdb94ae..6b49a28215 100644 --- a/res/ari/ari_model_validators.h +++ b/res/ari/ari_model_validators.h @@ -1224,6 +1224,7 @@ ari_validator ast_ari_validate_application_fn(void); * - creationtime: Date (required) * - dialplan: DialplanCEP (required) * - id: string (required) + * - language: string (required) * - name: string (required) * - state: string (required) * Dialed diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json index d88434b3eb..63ceafce33 100644 --- a/rest-api/api-docs/channels.json +++ b/rest-api/api-docs/channels.json @@ -1449,6 +1449,11 @@ "required": true, "type": "Date", "description": "Timestamp when channel was created" + }, + "language": { + "required": true, + "type": "string", + "description": "The default spoken language" } } }