Playback any digits to the caller from the callee(DTMF issue

how come can i get or read DTMF digits from a callee(agent) & then playback them on the caller’s channel
i am aware of the read() application, but the problem is that where shud i place it or how shuld i use it, because if i place it below the Dial() application then the moment Dial app terminates, it detroys the channels(i.e the call gets hungup) & leaving no callee channel for read() to read DTMF

then i tried another way using features.conf i.e. defining a feature to read DTMF into a variable & then playing it back on either both of the channels or anyone of them, herez my features.conf portion + dialplan

-----features.conf------
.[color=green]…
readFeature => #6,peer/callee,Read,var1
playbackFeature => #9,peer/callee,SayDigits,var1[/color]

----extensions.conf----
[color=green]…
exten => 500 , 1 , Answer()
exten => 500, 2 , SetVar(DYNAMIC_FEATURES=readFeature#playbackFeature)
exten => 500 , 3 , Playback(connecting)
exten => 500 , 4 , Dial(SIP/100)[/color]

but whenever someone dials 500 & gets connected with the agenti[/i] & the agent(callee) presses #6 or #9, simply nothing happens.
and on CLI the command show features results this:
[color=blue]
Builtin Feature…Default Current
===========…=====…=====
Pickup…*8…*8
Blind Transfer…#…#1
Attended Transfer…2
One Touch Monitor
Disconnect Call…
…*0

Dynamic Feature…Default Current
==============…=====…=====
(none)

Call parking

Parking extension : 700
Parking context : parkedcalls
Parked call extensions: 701-750[/color]

it seems that the features that i defined are not even getting registered

somebody plz suggest me if i am wrong somewhere doing that, or plz try giving me any newer solution to get DTMF digits durring a call or a way to acheive the overall objective i.e. playback some digits to the caller from the callee

Check out the D flag for Dial()

it would seem you could do

read(somevariable)
dial(SIP/trunk/exten,20,D(${somevariable})

dear IronHelix
doing that, the prob will still be there, because how could * read the DTMF through Read() prior executing Dial() as there would not be any channel craeted b/w * and the callee (i.e. prior Dial() reading DTMF from callee is not possible as callee is not in call)…or if i am wrong then plz correct me

all i have to accomplish is that an agent(callee) after accepting a call, can playback some digits to the caller (flag D() does’nt work for this)

any help is highly esteemed

do show application dial… you can play digits to the caller instead of the callee. If however you want to collect these digits from the callEE (the one Dial would dial) then why bother at all, why not just bridge the channel and then in theory any digits the callee presses get sent to the caller…

sounds interesting!..plz elaborate

from asterisk docs:
D([called][:calling]) - Send the specified DTMF strings after the called
party has answered, but before the call gets bridged. The 'called’
DTMF string is sent to the called party, and the ‘calling’ DTMF
string is sent to the calling party. Both parameters can be used
alone.

However once the channel is up and bridged (dial() has dialed, and the callee has answered the phone) then any digits pressed by either side should be transported to the other side. So if the callee’s phone rings, he picks it up, and then pushes 1, the caller should hear a 1 tone… see?