UNPKG

hubot-scripts

Version:

Allows you to opt in to a variety of scripts

48 lines (41 loc) 1.54 kB
# Description: # Allows Hubot to speak many languages # # Dependencies: # None # # Configuration: # HUBOT_MSTRANSLATE_APIKEY # # Commands: # speak me <phrase> - Detects the language 'phrase' is written in, then sends back a spoken version of that phrase # # Author: # atmos module.exports = (robot) -> robot.hear /(speak)( me)? (.*)/i, (msg) -> term = "\"#{msg.match[3]}\"" apiKey = process.env.HUBOT_MSTRANSLATE_APIKEY langs = ["en"] getLanguagesForSpeak = "http://api.microsofttranslator.com/V2/Ajax.svc/GetLanguagesForSpeak" detect = "http://api.microsofttranslator.com/V2/Ajax.svc/Detect" speak = "http://api.microsofttranslator.com/V2/Ajax.svc/Speak" unless apiKey msg.send "MS Translate API key isn't set, get a key at http://www.bing.com/developers/appids.aspx" msg.send "Then, set the HUBOT_MSTRANSLATE_APIKEY environment variable" return msg.http(getLanguagesForSpeak) .query({ appId: apiKey }) .get() (err, res, body) -> langs = eval(body) unless err msg.http(detect) .query({appId: apiKey, text: term}) .get() (err, res, body) -> if err or (langs.indexOf(eval(body)) == -1) msg.send "Sorry, I can't speak #{err or eval(body)}" return lang = eval(body) msg.http(speak) .query({ appId: apiKey, text: term, language: lang, format: "audio/wav" }) .get() (err, res, body) -> msg.send(eval(body)) unless err