There is a very easy way to test this for routing issues (which is about 85% of one-way audio problems):
Find the IP address of the phone you're using, and go to the webpage of that IP address. Place a call, and keep it up.
On the phone's webpage, look at the network settings and get the default gateway. Then, go to the 'Stream 1' page. It should list a connected IP address where it is sending RTP to. As well, look at the 'Received packets' and see if the packets are getting to the phone or not. This helps determine whether you are getting blank audio or no RTP packets.
On the voice gateway, issue 'show call active voice brief'. You should see a line with the IP address of the phone you're testing if the call is still up. Try to ping this address, and check your routing tables. If you have multiple interfaces on your gateway, you will want to use a bind command to prevent the gateway from doing asymmetrical routing.
Interface level: h323-gateway voip bind
voice service voip
bind all source
Global config: mgcp bind media interface <>
You could also have bad DSPs, but you can't tell that without figuring out possible routing issues first.
Check to make sure that the routing in your network has not changed, as sometimes routing protocols change and voice traffic will then be sent through a new path which includes a firewall.
Figure out who can hear who, and then troubleshoot the routing from the originator of the traffic that is not being heard.
Two clients could not talk to one another using their Cisco phones. They could call me.
After pouring over routing and cisco unity for a couple of hours, I realized that one of our techs moved a user (and phone) from one switch to another switch. We use port-security and the MAC address was registered on the old switch to a port. The phone was now on another switch but voice traffic from phones on that switch was directed to the old port location. I cleared the MAC address on the old switch and everything worked correctly.