steep-balloon-41261
04/15/2026, 12:55 PMtall-airline-16756
04/15/2026, 12:55 PMtall-airline-16756
04/15/2026, 12:55 PMresult = await GetDtmfTask(
num_digits=4,
dtmf_input_timeout=8.0,
chat_ctx=self.chat_ctx.copy(exclude_instructions=True, exclude_function_call=True),
)
1. Ensure you finish playout before listening (you already call await context.wait_for_playout() — confirm it actually completes before the prompt ends).
2. Add logging for DTMF events and ToolError:
except ToolError as e:
logger.error(f"GetDtmfTask failed: {e}")
return self._retry_ssn_message
And on the room side:
@ctx.room.on("dtmf_received")
def on_dtmf(digit, participant):
logger.info(f"DTMF received: {digit}")
1. Verify your SIP trunk/provider supports RFC2833 or SIP INFO and that DTMF is enabled/forwarded.
2. Temporarily disable noise-suppression (Krisp) to rule out interference.
If you run the logging steps and paste the dtmf_received logs or the ToolError output here, I can help interpret them and suggest a next step.
Sources: GetDtmfTask | LiveKit Documentation | examples/dtmf | livekit/livekit_composite | DeepWiki | sip | livekit/livekit_composite | DeepWiki | Agents telephony integration | LiveKit Documentation, with interactive elementsbetter-sandwich-65834
04/15/2026, 12:56 PMtall-airline-16756
04/15/2026, 12:56 PMexcept ToolError as e:
logger.error(f"GetDtmfTask failed: {e}")
return self._retry_ssn_message
and
@ctx.room.on("dtmf_received")
def on_dtmf(digit, participant):
logger.info(f"DTMF received: {digit} from {participant.sid}")
1. Increase per-digit timeout for SSN (users often hesitate):
result = await GetDtmfTask(num_digits=4, dtmf_input_timeout=8.0, ...)
1. Confirm playout completed before listening (ensure await context.wait_for_playout() actually finished and the prompt audio stopped).
2. Verify SIP trunk DTMF transport (RFC2833 or SIP INFO) is enabled and the provider forwarded tones for that call — check SIP signaling/SDP if possible.
3. Temporarily disable any noise-suppression (Krisp) or other audio processing during the test.
If you share:
• the dtmf_received logs (if any),
• the ToolError log output, and
• whether you changed dtmf_input_timeout and the result,
I’ll help interpret them and suggest the next step.
, with interactive elements