State machines are a great place to start, but are pretty confining for users. If you've asked a user for some info, they may reasonably want to ask you a question rather than provide that info.
You can often get away with a state machine, but it is definitely not the path to natural conversations.