Thanks Ralph, I used the Voice Quality statistics form on the controller, exported it to a spreadsheet.
I cut out all the relevant lines based on the user's IP address to have a look through them.
I highlighted all the calls that lasted about 5-15 seconds on the assumption they were most likely the one-way voice calls.
I then deleted all the columns where the recorded statistics were the same regardless of whether it was a good or bad call.
I ended up with a list of calls from my user to an IP address which I assume is the DSP card on the controller. The only things that were different from call to call were the signalling TCP ports (the signalling obviously at least mostly OK, as the call is setup) and the voice UDP ports. The kind of thing I looked for here was, assuming for example the firewall was set to allow all ports 50000-50400, calls using UDP ports <504001 succeed, calls using UDP ports >50400 fail.
I didn't see any kind of pattern like that.
The only thing I can't see is any indication of which DSP card resources are assigned to each call - could be something faulty on the DSP card.
But mostly, I'm going to tell them it's their provider. See where that gets me.