I think this would be better as an `else` on the `if` below - to avoid `unicode(input)` when `input` is an arbitrary application object.

Also, I think it would be good to expand the allowed types for `fsm_rich_input` to include `None` and use `None` here, not an empty string.