How chatbots use NLP, NLU, and NLG to create engaging conversations