diff options
Diffstat (limited to 'apps/app_stasis.c')
-rw-r--r-- | apps/app_stasis.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/apps/app_stasis.c b/apps/app_stasis.c index f0389947a..1e7b7f9c9 100644 --- a/apps/app_stasis.c +++ b/apps/app_stasis.c @@ -54,6 +54,25 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") Invoke a Stasis application. </para> </description> + <para>This application will set the following channel variable upon + completion:</para> + <variablelist> + <variable name="STASISSTATUS"> + <para>This indicates the status of the execution of the + Stasis application.</para> + <value name="SUCCESS"> + The channel has exited Stasis without any failures in Stasis + </value> + <value name="FAILED"> + A failure occurred when executing the Stasis application. + Some (not all) possible reasons for this: + <para>The app registry is not instantiated</para> + <para>The app requested is not registered</para> + <para>The app requested is not active</para> + <para>Stasis couldn't send a start message</para> + </value> + </variable> + </variablelist> </application> ***/ @@ -67,6 +86,7 @@ static const char *stasis = "Stasis"; static int app_exec(struct ast_channel *chan, const char *data) { char *parse = NULL; + int ret = -1; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(app_name); @@ -76,17 +96,28 @@ static int app_exec(struct ast_channel *chan, const char *data) ast_assert(chan != NULL); ast_assert(data != NULL); + pbx_builtin_setvar_helper(chan, "STASISSTATUS", ""); + /* parse the arguments */ parse = ast_strdupa(data); AST_STANDARD_APP_ARGS(args, parse); if (args.argc < 1) { ast_log(LOG_WARNING, "Stasis app_name argument missing\n"); - return -1; + } else { + ret = stasis_app_exec(chan, + args.app_name, + args.argc - 1, + args.app_argv); + } + + if (ret == -1) { + pbx_builtin_setvar_helper(chan, "STASISSTATUS", "FAILED"); + } else { + pbx_builtin_setvar_helper(chan, "STASISSTATUS", "SUCCESS"); } - return stasis_app_exec( - chan, args.app_name, args.argc - 1, args.app_argv); + return ret; } static int load_module(void) |