diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-12-29 12:49:35 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-12-29 12:49:35 +0000 |
commit | 54d64330bd8655f1f02fe6fa21a776e69a37d88a (patch) | |
tree | 42643c8cd46af420e2487ff77a7fa9077ebad28a /pbx.c | |
parent | 272d61d926736299c80bc665f85e1a9a975f84c9 (diff) |
Allow Answer(delay) to create delay after answering (bug #3160)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4586 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx.c')
-rwxr-xr-x | pbx.c | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -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) |