diff --git a/apps/app_sendtext.c b/apps/app_sendtext.c index 45ae073a3d..07e6accff9 100644 --- a/apps/app_sendtext.c +++ b/apps/app_sendtext.c @@ -21,6 +21,7 @@ * \brief App to transmit a text message * * \author Mark Spencer + * \author Naveen Albert * * \note Requires support of sending text messages from channel driver * @@ -140,11 +141,50 @@ SendImage SendURL + ReceiveText + + + + + Receive a Text Message on a channel. + + + + Time in seconds to wait for text. Default is 0 (forever). + + + + Waits for timeout seconds on the current channel + to receive text. + Result of transmission will be stored in the following variables: + + + The received text message. + + + + Transmission succeeded. + + + Transmission failed or timed out. + + + + + same => n,ReceiveText() + same => n,NoOp(${RECEIVETEXTMESSAGE}) + + + + SendText + SendImage + SendURL ***/ static const char * const app = "SendText"; +static const char * const app2 = "ReceiveText"; static int sendtext_exec(struct ast_channel *chan, const char *data) { @@ -237,14 +277,55 @@ cleanup: return rc; } +static int recvtext_exec(struct ast_channel *chan, const char *data) +{ + double timeout = 0, timeout_ms = 0; + char *parse, *buf; + + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(timeout); + ); + + parse = ast_strdupa(data); + + AST_STANDARD_APP_ARGS(args, parse); + + if (!ast_strlen_zero(args.timeout)) { + if (sscanf(args.timeout, "%30lg", &timeout) != 1) { + ast_log(LOG_WARNING, "Invalid timeout provided: %s. No timeout set.\n", args.timeout); + return -1; + } + timeout_ms = timeout * 1000.0; + } + + buf = ast_recvtext(chan, timeout_ms); + pbx_builtin_setvar_helper(chan, "RECEIVETEXTSTATUS", buf ? "SUCCESS" : "FAILURE"); + if (buf) { + pbx_builtin_setvar_helper(chan, "RECEIVETEXTMESSAGE", buf); + ast_free(buf); + } + + return 0; +} + static int unload_module(void) { - return ast_unregister_application(app); + int res; + + res = ast_unregister_application(app); + res |= ast_unregister_application(app2); + + return res; } static int load_module(void) { - return ast_register_application_xml(app, sendtext_exec); + int res; + + res = ast_register_application_xml(app, sendtext_exec); + res |= ast_register_application_xml(app2, recvtext_exec); + + return res; } -AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Send Text Applications"); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Send and Receive Text Applications"); diff --git a/doc/CHANGES-staging/app_sendtext.txt b/doc/CHANGES-staging/app_sendtext.txt new file mode 100644 index 0000000000..37dd64bace --- /dev/null +++ b/doc/CHANGES-staging/app_sendtext.txt @@ -0,0 +1,4 @@ +Subject: app_sendtext + +A ReceiveText application has been added that can be +used in conjunction with the SendText application.