Allow Answer(delay) to create delay after answering (bug #3160)
authorMark Spencer <markster@digium.com>
Wed, 29 Dec 2004 12:49:35 +0000 (12:49 +0000)
committerMark Spencer <markster@digium.com>
Wed, 29 Dec 2004 12:49:35 +0000 (12:49 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4586 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx.c

diff --git a/pbx.c b/pbx.c
index 67348fa..0acfb97 100755 (executable)
--- a/pbx.c
+++ b/pbx.c
@@ -210,8 +210,10 @@ static struct pbx_builtin {
 
        { "Answer", pbx_builtin_answer, 
        "Answer a channel if ringing", 
-       "  Answer(): If the channel is ringing, answer it, otherwise do nothing. \n"
-       "Returns 0 unless it tries to answer the channel and fails.\n"   
+       "  Answer([delay]): If the channel is ringing, answer it, otherwise do nothing. \n"
+       "If delay is specified, asterisk will pause execution for the specified amount\n"
+       "of milliseconds if an answer is required, in order to give audio a chance to\n"
+       "become ready. Returns 0 unless it tries to answer the channel and fails.\n"   
        },
 
        { "BackGround", pbx_builtin_background,
@@ -4705,7 +4707,16 @@ static int pbx_builtin_congestion(struct ast_channel *chan, void *data)
 
 static int pbx_builtin_answer(struct ast_channel *chan, void *data)
 {
-       return ast_answer(chan);
+       int delay = atoi(data);
+       int res;
+       if (chan->_state == AST_STATE_UP)
+               delay = 0;
+       res = ast_answer(chan);
+       if (res)
+               return res;
+       if (delay)
+               res = ast_safe_sleep(chan, delay);
+       return res;
 }
 
 static int pbx_builtin_setlanguage(struct ast_channel *chan, void *data)