関連研究
DOCOMOの雑談対話APIを使ってHubotと雑談する。 - 文字っぽいの。
基本的にはアトム君がやってるのと全く同じで,違うのはrubot.brainを使ってるところと,contextの破棄を30分毎にしてる.あとrequestじゃなくてrobot.http使ってるところとか微妙に違うんだけど結局裏では同じもの叩いてると思うから大きな違いは本当に無い.
module.exports = (robot) -> getContext = (username) -> context_obj = robot.brain.get(username) or {context: ""} if context_obj["updatedAt"] && (Date.now() - context_obj["updatedAt"])/1000 > 60 * 60 # 30分で記憶を失います context_obj = {context: ""} return context_obj storeContext = (username, context) -> context_obj = {"context": context, "updatedAt": Date.now()} robot.brain.set username, context_obj robot.hear /.*/, (msg) -> user_id = msg["envelope"]["user"]["id"] context_obj = getContext(user_id) if msg["envelope"]["room"] == "comschans-room" robot.http("https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=#{process.env.HUBOT_DOCOMO_API_KEY}").post(JSON.stringify({"utt": msg["envelope"]["message"]["text"],"context": context_obj["context"],"nickname": msg["envelope"]["user"]["name"], "sex": "男","place": "滋賀","mode": "dialog"})) (err, res, body) -> body = JSON.parse(body) msg.send body["utt"] console.log(body["yomi"]) storeContext(msg["envelope"]["user"]["id"], body["context"])
様子
意外とちゃんと会話できてて面白い