Asterisk 13 - ARI - Identifying silence/talking on channel

Hello,
I have to implement a feature but right now i can’t make it work.

Scenario:

  • I need to identify 3 seconds of silence on a channel after a specific moment.
  • Right now I am using TALK_DETECT(3000) and I do receive ChannelTalkingStarted and ChannelTalkingFinished. This is great but I have a problem with that.

Problem:

  • If I never get any sound in the customer channel, I will never receive the ChannelTalkingFinished. (I only get ChannelTalkingFinished when I first receive ChannelTalkingStarted);
  • Even if I already received a ChannelTalkingStarted and a ChannelTalkingFinished, lets say during a talk
    between 2 channels the following situation:
  1. Agent from call center called a customer
  2. Customer speaks (ChannelTalkingStarted)
  3. Customer stays in silence for more than 3 seconds (ChannelTalkingFinished)
  4. Right now the agent wants to play a voicemail to the customer, but only if he stays in silence for more that 3 seconds after this moment.
  5. If the customer doesn’t talk anymore, i won’t receive either the (ChannelTalkingStarted or ChannelTalkingFinished).

Attempts:
(1) - I tried playing a sound on the customer channel (beep and other sounds longer) to reset the ChannelTalkingStarted but it didn’t work
(2) - I tried playing a digit on the customer channel to reset the ChannelTalkingStarted but it didn’t work

Questions:

  • How can I reset the channel talk detect to get silence after a particular moment?
  • Is there any alternative for that? I need to receive a silence event, maybe not using TALK_DETECT. TALK_DETECT will only work for me in cases I receive a ChannelTalkingStarted first. But some cases there is no talk at all and I need to be warned about that after 3 seconds of silence

Thanks in advance,
Fabio

TALK_DETECT works on the stream of media from the remote party, it doesn’t currently operate on gaps of media after a period of time. It expects a constant stream to exist. Additional functionality would need to be added to do such a thing.

1 Like

Thanks for the answer Joshua.
I suspected that but didn’t know the technical explanation.

It would be a nice feature to have that on future Asterisks, but right now I will implement that control on my server side and it will also work.

Hi @fabiopcarvalho, would you mind sharing how you did that and achieved the result? Thanks.