From: Richard Mudgett Date: Thu, 23 Feb 2017 05:26:13 +0000 (-0600) Subject: CHANNEL(callid): Give dialplan access to the callid. X-Git-Tag: 13.15.0-rc1~2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60b372a883d97193a98e2eff7a50d1f8762c8dc6;p=thirdparty%2Fasterisk.git CHANNEL(callid): Give dialplan access to the callid. * Added CHANNEL(callid) to retrieve the call identifier log tag associated with the channel. Dialplan now has access to the call log search key associated with the channel so it can be saved in case there is a problem with the call. ASTERISK-26878 Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f --- diff --git a/CHANGES b/CHANGES index 08c9185b6a..a8fd715c9e 100644 --- a/CHANGES +++ b/CHANGES @@ -41,6 +41,13 @@ app_voicemail * Added 'fromstring' field to the voicemail boxes. If set, it will override the global 'fromstring' field on a per-mailbox basis. +func_channel +------------------ + * Added CHANNEL(callid) to retrieve the call log tag associated with the + channel. e.g., [C-00000000] Dialplan now has access to the call log + search key associated with the channel so it can be saved in case there + is a problem with the call. + res_pjsip ------------------ * A new transport parameter 'symmetric_transport' has been added. diff --git a/funcs/func_channel.c b/funcs/func_channel.c index 673de51d09..3273b78c47 100644 --- a/funcs/func_channel.c +++ b/funcs/func_channel.c @@ -232,6 +232,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") R/W The maximum number of forwards allowed. + + R/O Call identifier log tag associated with the channel + e.g., [C-00000000]. + @@ -446,6 +450,17 @@ static int func_channel_read(struct ast_channel *chan, const char *function, ast_channel_lock(chan); snprintf(buf, len, "%d", ast_max_forwards_get(chan)); ast_channel_unlock(chan); + } else if (!strcasecmp(data, "callid")) { + struct ast_callid *callid; + + buf[0] = '\0'; + ast_channel_lock(chan); + callid = ast_channel_callid(chan); + if (callid) { + ast_callid_strnprint(buf, len, callid); + ast_callid_unref(callid); + } + ast_channel_unlock(chan); } else if (!ast_channel_tech(chan) || !ast_channel_tech(chan)->func_channel_read || ast_channel_tech(chan)->func_channel_read(chan, function, data, buf, len)) { ast_log(LOG_WARNING, "Unknown or unavailable item requested: '%s'\n", data); ret = -1;