Implement Talk Detect function

Hi Everyone,

I am new to asterisk, on my project I want to implement some detect when there is call active and there is voice from the device. Here are my configuration for docker compose

#docker-compose.yml
services:
  asterisk:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: asterisk
    ports:
      - "5060:5060/udp"     # SIP
      - "8088:8088"         # ARI HTTP/WebSocket
      - "10000-10100:10000-10100/udp"  # RTP media (reduced range)
      - "5038:5038"           # ✅ AMI (Asterisk Manager Interface)
    volumes:
      - ./asterisk-conf:/etc/asterisk
      - ./agi-scripts:/var/lib/asterisk/agi-bin
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    sysctls:
      - net.core.somaxconn=65536
      - net.ipv4.tcp_max_syn_backlog=65536
      - net.ipv4.ip_local_port_range=1024 65535
    restart: unless-stopped
    networks:
      - voipnet

networks:
  voipnet:
    driver: bridge

And this is my configuration for enable talk detect function

#extensions.conf

exten => 300,1,Answer()
 same => n,Set(TALK_DETECT(set)=)
 same => n,Dial(SIP/client1,15,b(default^apply_talk_detect^1)) 
 same => n,Hangup()

exten => apply_talk_detect,1,NoOp()
 same => n,Set(TALK_DETECT(set)=)
 same => n,Return()

I tried to only use TALK_DETECT(SET), but on AMI channel there is no event type of ChannelTalkingStart or ChannelTalkingStop. Am I doing it wrong ?

Asterisk > Asterisk Support Asterisk > Asterisk Integration

Is audio actually flowing? SIP embeds IP address information within the signaling and for media, if that’s wrong then you won’t get media flowing, and thus you wouldn’t get the events. So you need to verify the assumption that audio is flowing and that what you’ve done should work in the first place. There is the “rtp set debug on” CLI command to show RTP packets being sent/received.