Asterisk SIP media path
In a normal SIP proxy, the server is not involved in the media between the phones. With Asterisk, sometimes Asterisk stays in the path. It depends on many variables and configurations.
Asterisk mostly sets up the SIP phone call with itself in the media path. When the phone call is connected, Asterisk normally sends SIP reinvites to both clients to redirect the media path so that Asterisk does not have to handle the media stream any more.
If the phones do not support reinvite
Some clients do not support re-invites. If this is the case, you have to configure asterisk NOT to re-invite.
See Asterisk sip canreinvite for more information.
If the phones support reinvites
Asterisk will bridge a call in some cases and not in others. If codec conversion is required between phones, its stays in the middle. If the two phones can agree upon a common codec, etc, * is not in the middle from a pure communications perpective. In that particular case, what the phone does when the # key is press is totally a function of how the phone was programmed (and not asterisk). If the phone, as an example only, has an implementation bug that says I'm not going to forward the # key to asterisk during a conversation, obviously * can't interpret it.
If the Dial() statement forces the path thru Asterisk
Certain options to the Dial() statement require that Asterisk is in the media path, and consequently Asterisk will not let go of it: t, ''T", "h", "H", "w", "W" or "L" (with multiple arguments). Probably there are more.