[asterisk-dev] [Code Review] 3362: func_periodic_hook: New function for periodic hooks.
rmudgett
reviewboard at asterisk.org
Wed Apr 2 14:44:19 CDT 2014
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3362/#review11476
-----------------------------------------------------------
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21192>
Need a
<depend>app_chanspy</depend>
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21191>
Document the (On write) hook_id.
Is this the first function that has different parameters for read and write?
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21190>
Update to what the function accepts for parameters.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21189>
Use <variable>HOOK_CHANNEL</variable> and <variable>HOOK_ID</variable>
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21196>
These should not be uppercase. That indicates they are macros.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21193>
Doxygen
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21194>
Doxygen
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21195>
Doxygen
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21182>
You need to check if args.interval is NULL. Also the sscanf should be using "%30u" instead. Also passing a NULL string pointer to printf will crash on Solaris.
Missing \n
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21184>
Need to add a \n to the message.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21180>
Doesn't hook_id need to be checked for NULL when calling ast_channel_datastore_find() to get what you want? Also passing a NULL string pointer to printf will crash on Solaris.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21181>
Idem.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21185>
Maybe use ast_true() and ast_false() instead.
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21186>
Missing \n
/trunk/funcs/func_periodic_hook.c
<https://reviewboard.asterisk.org/r/3362/#comment21187>
Need to count right for the priority. You have two priority 2's.
- rmudgett
On April 1, 2014, 11:43 a.m., Russell Bryant wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3362/
> -----------------------------------------------------------
>
> (Updated April 1, 2014, 11:43 a.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> 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.
>
>
> Diffs
> -----
>
> /trunk/funcs/func_periodic_hook.c PRE-CREATION
> /trunk/CHANGES 411583
>
> Diff: https://reviewboard.asterisk.org/r/3362/diff/
>
>
> Testing
> -------
>
> Called the following extension (100 at test), both letting it run all the way through, as well as hanging up at various points in the middle.
>
> [hooks]
>
> exten => beep,1,Answer()
> same => n,Verbose(1,Channel name: ${HOOK_CHANNEL})
> same => n,Verbose(1,Hook ID: ${HOOK_ID})
> same => n,Playback(beep)
>
> [test]
>
> exten => 100,1,Answer()
> same => n,Set(BEEP_ID=${PERIODIC_HOOK(hooks,beep,5)})
> same => n,Wait(20)
> same => n,Set(PERIODIC_HOOK(${BEEP_ID})=off)
> same => n,Wait(20)
> same => n,Set(PERIODIC_HOOK(${BEEP_ID})=on)
> same => n,Wait(20)
> same => n,Hangup()
>
>
> Thanks,
>
> Russell Bryant
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140402/89c1528e/attachment-0001.html>
More information about the asterisk-dev
mailing list