The slot filled part is handled natively by Rasa since all slot values are available on the conversation tracker.
Re. whether input is a picture or not: This should be handled by your channel connector; the judgment that it is not text should be happening in the frontend of the channel itself.