func_periodic_hook: New function for periodic hooks.
authorRussell Bryant <russell@russellbryant.com>
Sat, 5 Apr 2014 13:06:34 +0000 (13:06 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sat, 5 Apr 2014 13:06:34 +0000 (13:06 +0000)
commitea290b2c3ea5df6a3f7add568536909e7c68551f
treedc2016c847df3f458250b4cebf06985337b32160
parent03beadb6e9d88d4c99d097a45e87267a6b2f36b4
func_periodic_hook: New function for periodic hooks.

This commit introduces a new dialplan function, PERIODIC_HOOK().
It allows you run to a dialplan hook on a channel periodically.  The
original use case that inspired this was the ability to play a beep
periodically into a call being recorded.  The implementation is much
more generic though and could be used for many other things.

The implementation makes heavy use of existing Asterisk components.
It uses a combination of Local channels and ChanSpy() to run some
custom dialplan and inject any audio it generates into an active call.

The other important bit of the implementation is how it figures out
when to trigger the beep playback.  This implementation uses the
audiohook API, even though it's not actually touching the audio in any
way.  It's a convenient way to get a callback and check if it's time
to kick off another beep.  It would be nice if this was timer event
based instead of polling based, but unfortunately I don't see a way to
do it that won't interfere with other things.

Review: https://reviewboard.asterisk.org/r/3362/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411768 65c4cc65-6c06-0410-ace0-fbb531ad65f3
CHANGES
funcs/func_periodic_hook.c [new file with mode: 0644]