[asterisk-dev] [Code Review] 3563: TALK_DETECT: A channel function that raises AMI/ARI events when talking is detected

Matt Jordan reviewboard at asterisk.org
Thu May 29 09:46:37 CDT 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3563/
-----------------------------------------------------------

(Updated May 29, 2014, 9:46 a.m.)


Review request for Asterisk Developers.


Changes
-------

Addressed Josh's findings.

Switched to using SCOPED_CHANNELLOCK in the remove/set functions, as we hold the channel lock throughout the entire function calls and both functions have multiple off nominal return paths.


Bugs: ASTERISK-23786
    https://issues.asterisk.org/jira/browse/ASTERISK-23786


Repository: Asterisk


Description
-------

This patch adds a new channel function TALK_DETECT that, when set on a channel, causes events indicating the start/stop of talking on a channel to be emitted to both AMI and ARI clients. Why a channel function? Because both ARI and AMI can set it on the channel, making it (slightly) more useful than existing speech/silence detection dialplan applications.

The function allows setting both the silence threshold (the length of silence after which we decide no one is talking) as well as the talking threshold (the amount of energy that counts as talking):

same => n,Set(TALK_DETECT(set)=2500,256)

Parameters can be updated on a channel:

same => n,Set(TALK_DETECT(set)=)       ; Enable talk detection
same => n,Set(TALK_DETECT(set)=,128)   ; Set the talking threshold on the existing talk detection to 128

And talk detection can be removed:

same => n,Set(TALK_DETECT(remove)=)

The events raised by the function use a nomenclature similar to existing AMI/ARI events.
For AMI: ChannelTalkingStart/ChannelTalkingStop
For ARI: ChannelTalkingStarted/ChannelTalkingFinished

Both 'end' events include the duration of talking that was detected (in milliseconds).


Diffs (updated)
-----

  /branches/12/rest-api/api-docs/events.json 414470 
  /branches/12/res/ari/ari_model_validators.c 414470 
  /branches/12/res/ari/ari_model_validators.h 414470 
  /branches/12/main/stasis_channels.c 414470 
  /branches/12/main/audiohook.c 414470 
  /branches/12/include/asterisk/stasis_channels.h 414470 
  /branches/12/funcs/func_talkdetect.c PRE-CREATION 

Diff: https://reviewboard.asterisk.org/r/3563/diff/


Testing
-------

See review https://reviewboard.asterisk.org/r/3564


Thanks,

Matt Jordan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140529/ad78cbe9/attachment-0001.html>


More information about the asterisk-dev mailing list