[asterisk-commits] qwell: trunk r234776 - /trunk/apps/app_readexten.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Dec 14 15:32:07 CST 2009


Author: qwell
Date: Mon Dec 14 15:32:03 2009
New Revision: 234776

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=234776
Log:
Allow tonelist as argument to ReadExten.

ReadExten already supported playing a tonezone from indications.conf.
It now has the ability to use a tonelist like 440+480/2000|0/4000

(closes issue #15185)
Reported by: jcovert
Patches:
      app_readexten.c.patch uploaded by jcovert (license 551)
Tested by: qwell
Patch modified by me, to maintain backwards compatibility.

Modified:
    trunk/apps/app_readexten.c

Modified: trunk/apps/app_readexten.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_readexten.c?view=diff&rev=234776&r1=234775&r2=234776
==============================================================================
--- trunk/apps/app_readexten.c (original)
+++ trunk/apps/app_readexten.c Mon Dec 14 15:32:03 2009
@@ -55,7 +55,8 @@
 					</option>
 					<option name="i">
 						<para>Play <replaceable>filename</replaceable> as an indication tone from your
-						<filename>indications.conf</filename></para>
+						<filename>indications.conf</filename> or a directly specified list of
+						frequencies and durations.</para>
 					</option>
 					<option name="n">
 						<para>Read digits even if the channel is not answered.</para>
@@ -204,10 +205,21 @@
 		ast_playtones_stop(chan);
 		ast_stopstream(chan);
 
-		if (ts && ts->data[0])
+		if (ts && ts->data[0]) {
 			res = ast_playtones_start(chan, 0, ts->data, 0);
-		else if (arglist.filename)
-			res = ast_streamfile(chan, arglist.filename, chan->language);
+		} else if (arglist.filename) {
+			if (ast_test_flag(&flags, OPT_INDICATION) && ast_fileexists(arglist.filename, NULL, chan->language) <= 0) {
+				/*
+				 * We were asked to play an indication that did not exist in the config.
+				 * If no such file exists, play it as a tonelist.  With any luck they won't
+				 * have a file named "350+440.ulaw"
+				 * (but honestly, who would do something so silly?)
+				 */
+				res = ast_playtones_start(chan, 0, arglist.filename, 0);
+			} else {
+				res = ast_streamfile(chan, arglist.filename, chan->language);
+			}
+		}
 
 		for (x = 0; x < maxdigits; x++) {
 			ast_debug(3, "extension so far: '%s', timeout: %d\n", exten, timeout);




More information about the asterisk-commits mailing list