Its a common issue with asterisk as it sometimes wont pass dtmf properly. To solve the issue first we need to check the network have sufficient bandwidth, if bandwidth is sufficient then we need to add below parameters on all didforsale trunks. Note that if you are using G729 codec then inband wont work. First try with dtmfmode=auto, if it didn’t work then try with dtmfmode=inband.(For only ULAW) codec. If you are using g729, then force rfc2833 instead of inband.

Example

[didforsale1]
type=peer
host=209.216.2.211
nat=yes
canreinvite=no
disallow=all
allow=ulaw&g729
context=from-trunk
dtmfmode=auto or (use inband for ULAW / Use rfc2833 for G729)

 

Hope this will solve the issue