The real key is starting dialogue. Shaming people by calling them out and putting them on the spot doesn't solve anything. In fact it often has unintended consequences and as your correctly say emboldens the bigot - and can cause more harm if the person has a mental health issue.
Also a lot of people who call out, tend to have the same black and white moralistic thinking as the bigot.