If you haven't done much with IBM Watson I highly recommend taking a look at it. I first really experienced it at the TechCrunch hackathon in London (2015). We got free use of IBM Bluemix and some credits for Watson. The SDK is so well written it was so easy to implement.
Watson is made up of various services such as Watson concept expansion, Watson dialog (remembering and understanding the context of what was said, resolving ambiguity etc. Also it can have a fun or serious tone.)
The app we built was a mashup of Sky data api data, Twillio, and Watson. We used Watson's natural language processing to analyse Sky's TV show descriptions and meta data to get a general tone. The tones go from -1 to +1. We then matched emotions to these, such as -1 deepest apathy (Eastenders?) and 1 for utter elation. Then using the Twillio API we got a telephone number that users could text their emotion to words or emoticons:
'wonderful': { "sentiment.emotionType" : "positive" },
'awesome': { "sentiment.emotionType" : "positive" },
'positive': { "sentiment.emotionType" : "positive" },
'excited': { "sentiment.emotionType" : "positive" },
'happy': { "sentiment.emotionType" : "positive" },
'super': { "sentiment.emotionType" : "positive" },
'energetic': { "sentiment.emotionType" : "positive" },
'excited': { "sentiment.emotionType" : "positive" },
':-D': { "sentiment.score" : { $gt : 0.6, $lt : 0.9 } },
':D': { "sentiment.score" : { $gt : 0.6, $lt : 0.9 } },
':‑)': { "sentiment.score" : { $gt : 0.4, $lt : 0.8 } },
':-))': { "sentiment.score" : { $gt : 0.5, $lt : 0.4 } },
':)': { "sentiment.score" : { $gt : 0.5, $lt : 0.4 } },
':o)': { "sentiment.score" : { $gt : 0.4, $lt : 0.3 } },
':]': { "sentiment.score" : { $gt : 0.3, $lt : 0.2 } },
':3': { "sentiment.score" : { $gt : 0.2, $lt : 0 } },
':c)': { "sentiment.score" : { $gt : 0.2, $lt : 0 } },
':>': { "sentiment.score" : { $gt : 0.2, $lt : 0 } },
'=]': { "sentiment.score" : { $gt : 0.2, $lt : 0 } },
Not bad for less than 12 hours work ;-)