summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/app_stasis.c37
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)