I'm a web application developer looking for a book or something similar that can help with effectively communicating with clients who have a very vague or unrealistic idea of what they'd like out of the work I'm doing.
Some fictional, though not by much, examples of situations:
Clients who are not familiar with using the Internet, and insist on features that are not even remotely feasible (ex. time travel)
Clients who are unable to express accurately what they're looking for (ex. "I know that's what I said and signed off on, but it's not what I meant")
Clients who refuse to attend meetings or review sessions to answer questions or define requirements (which makes any agile development impossible)
For the most part, I'm trying to find best practices for how to handle these kinds of things on a team-building level. The best ways to effectively address serious project roadblocks without sounding like a total jerk.
Any recommendations for reading material on this topic?