I would first start with the unmodified sample app from the distribution, and make sure basic recognition works for you for some utterance which is included in the language model, i.e. ruling out that the issue isn’t with recognition in general rather than nbest specifically. Then turn on nbest and set a valid nbest number, and turn on null hypotheses so it is also called even if there isn’t a match with the language model, and see if that helps. Print the actual array in the callback so you can see if null hyps are being returned.
The most powerful tool you can apply to your own troubleshooting is turning on all the applicable forms of logging documented in the docs and headers – these will show you what the engine is perceiving and whether there is a difference between that and what is ending up on the callback, as well as telling you if your nbest settings are passing validation.