]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
pbx_builtins: Allow Answer to return immediately.
authorNaveen Albert <asterisk@phreaknet.org>
Fri, 11 Nov 2022 20:30:27 +0000 (20:30 +0000)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Tue, 29 Nov 2022 15:23:49 +0000 (09:23 -0600)
The Answer application currently waits for up to 500ms
for media, even if users specify a different timeout.

This adds an option to not wait for media on the channel
by doing a raw answer instead. The default 500ms threshold
is also documented.

ASTERISK-30308 #close

Change-Id: Id59cd340c44b8b8b2384c479e17e5123e917cba4

doc/CHANGES-staging/answer.txt [new file with mode: 0644]
main/pbx_builtins.c

diff --git a/doc/CHANGES-staging/answer.txt b/doc/CHANGES-staging/answer.txt
new file mode 100644 (file)
index 0000000..7e04701
--- /dev/null
@@ -0,0 +1,5 @@
+Subject: pbx_builtins
+
+It is now possible to not wait for media on
+a channel when answering it using Answer,
+by specifying the i option.
index 7ef4d031a98659f89d0988b9ee700137936abe20..fa6e63d1849af0d5cddde230fb50dbbeaa5476ea 100644 (file)
                        <parameter name="delay">
                                <para>Asterisk will wait this number of milliseconds before returning to
                                the dialplan after answering the call.</para>
+                               <para>The minimum is 500 ms. To answer immediately without waiting for media,
+                               use the i option.</para>
+                       </parameter>
+                       <parameter name="options">
+                               <optionlist>
+                                       <option name="i">
+                                               <para>Answer the channel immediately without waiting for media.</para>
+                                       </option>
+                               </optionlist>
                        </parameter>
                </syntax>
                <description>
                        <para>If the call has not been answered, this application will
                        answer it. Otherwise, it has no effect on the call.</para>
+                       <para>By default, Asterisk will wait for media for up to 500 ms, or
+                       the user specified delay, whichever is longer. If you do not want
+                       to wait for media at all, use the i option.</para>
                </description>
                <see-also>
                        <ref type="application">Hangup</ref>
@@ -836,6 +848,11 @@ static int pbx_builtin_answer(struct ast_channel *chan, const char *data)
                delay = 0;
        }
 
+       if (!ast_strlen_zero(args.answer_cdr) && !strcmp(args.answer_cdr, "i")) {
+               /*! \todo We will remove the nocdr stuff for 21 entirely, as part of another review. */
+               return ast_raw_answer(chan);
+       }
+
        if (!ast_strlen_zero(args.answer_cdr) && !strcasecmp(args.answer_cdr, "nocdr")) {
                ast_log(AST_LOG_WARNING, "The nocdr option for the Answer application has been removed and is no longer supported.\n");
        }