Skip to content

DTMF not detected on incoming calls #156

@orxa-occ

Description

@orxa-occ

Hi,

I have been struggling with this issue for several hours and can’t find the reason.

I have an automation that works perfectly for outgoing calls:

alias: Llamada - Jose pruebas
description: Llamada - Jose pruebas
triggers:
  - entity_id:
      - button.hacer_llamada
    trigger: state
conditions: []
actions:
  - data:
      addon: c7744bff_ha-sip
      input:
        command: dial
        number: sip:+34666777888@sip.zadarma.com
        webhook_to_call_after_call_was_established: call_established
        webhook_to_call:
          ring_timeout: ring_timeout
          call_established: call_established
          entered_menu: entered_menu
          timeout: timeout
          dtmf_digit: dtmf_digit
          call_disconnected: call_disconnected
          playback_done: playback_done
        ring_timeout: 60
        sip_account: 1
        menu:
          message: Por favor, introduce tu código de acceso.
          choices_are_pin: true
          choices:
            "123":
              id: owner
              message: owner option.
              post_action: return
            "456":
              id: maintenance
              message: maintenance option.
              post_action: hangup
            default:
              id: wrong_code
              message: wrong_code option.
              post_action: return
    action: hassio.addon_stdin
mode: single

When I call this automation, everything works well — the add-on detects DTMF tones, the dtmf_digit webhook runs, etc.

However, when receiving incoming calls, DTMF digits are not detected at all, so menus never trigger.

My /config/sip-incoming.yaml looks like this:

allowed_numbers: # list of numbers which will be answered. If removed all numbers will be accepted
    - "+34666777888"
answer_after: 1
webhook_to_call: 
  ring_timeout: ring_timeout
  call_established: call_established
  entered_menu: entered_menu
  call_disconnected: call_disconnected
  timeout: timeout
  dtmf_digit: dtmf_digit
  playback_done: playback_done
menu:
  message: Hi
  choices_are_pin: true
  choices:
    '123':
      id: owner
      message: Hi owner.
      post_action: return
    '456':
      id: maintenance
      message: Hi maintainer.
      post_action: return
    default:
      id: wrong_code
      message: Wrong code.
      post_action: return
    timeout:
      id: timeout
      message: See you.
      post_action: hangup

Everything else (ring, call established, playback, etc.) works fine, but DTMF tones are ignored.

I have tried both choices_are_pin: true and false, with no difference.


Environment

  • Add-on version: 5.1
  • Home Assistant OS version: 16.2
  • Supervisor version: 2025.11.1
  • SIP provider: Zadarma

Expected behavior
DTMF digits during incoming calls should trigger the dtmf_digit webhook and follow the menu logic, just like outgoing calls do.

Actual behavior
No DTMF events are received (no logs, no webhook trigger) during incoming calls.

Possible cause
It seems DTMF detection might not be active for incoming sessions or not listening to SIP INFO / RTP events in that path.

Thanks for your work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions