diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-22 23:00:23 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-08-22 23:00:23 +0000 |
commit | 11c869642b25163b70d6f9b6ad5c61079c8e097f (patch) | |
tree | 2e54405c3d5be319a0cad6fd0476e89bd6fb6b59 /res/res_agi.c | |
parent | 9f55bb92598bacb7b38cd30631dbb177a8e6e8c8 (diff) |
allow custom dialplan functions to be called from AGI (issue #4855)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6363 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_agi.c')
-rwxr-xr-x | res/res_agi.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/res/res_agi.c b/res/res_agi.c index 914291420..9dd62fba7 100755 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -50,6 +50,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/manager.h" #include "asterisk/utils.h" #include "asterisk/lock.h" +#include "asterisk/strings.h" #include "asterisk/agi.h" #define MAX_ARGS 128 @@ -1131,7 +1132,14 @@ static int handle_getvariable(struct ast_channel *chan, AGI *agi, int argc, char if (argc != 3) return RESULT_SHOWUSAGE; - pbx_retrieve_variable(chan, argv[2], &ret, tempstr, sizeof(tempstr), NULL); + + /* check if we want to execute an ast_custom_function */ + if (!ast_strlen_zero(argv[2]) && (argv[2][strlen(argv[2]) - 1] == ')')) { + ret = ast_func_read(chan, argv[2], tempstr, sizeof(tempstr)); + } else { + pbx_retrieve_variable(chan, argv[2], &ret, tempstr, sizeof(tempstr), NULL); + } + if (ret) fdprintf(agi->fd, "200 result=1 (%s)\n", ret); else |