LoginSignup
3
2

More than 5 years have passed since last update.

自然対話API(docomo)+hubotによりBOTと雑談してみた

Last updated at Posted at 2018-09-08

自然対話API(docomo)+hubotによりBOTと雑談してみた

はじめに

Hubotにdocomoの自然対話APIを導入することでBOTと雑談できるようにしてみました。

※docomoの雑談対話APIは2018年06月に終了し、新たに自然対話APIがリリースされたようです

自然対話APIの設定

  • 1: docomo Developer supportにアクセスし、新規に登録する
  • 2: docomo Developer supportにログイン
  • 3: [新規API利用申請]でアプリケーションを登録 2018-09-09_0.20.46.png

必須項目は任意の内容を記入

  アプリケーション名:hogehoge
  アプリケーション概要:ユーザと雑談可能なBOT
  サービス開始予定日:20xx/xx/xx
  アプリケーションタイプ:ウェブアプリケーション
  コールバックURL:https://dummy
  提供者名:hoge
  サポートメールアドレス:hoge@hoge

2018-09-09_0.26.31.png

API機能は自然対話:雑談対話をチェックする

  • 4: アプリケーション登録後、[マイページ]→[API利用申請・管理]からAPI Keyをメモ
  • 5: API経由でユーザ登録を実施
    1. POSTMANのインストール
    2. 以下の画像を参考にAPI KeyURL:https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/registrationを記入し、Sendを押下 ※hogehogeはマイページから取得したAPIに変更 2018-09-09_0.35.56.png
    3. レスポンスからappIdを取得 2018-09-09_0.39.02.png

Hubot側設定

  • 1: 必要パッケージのインストール
$npm install -g require
  • 2: ./scripts/docomoapi.coffeeの追加
module.exports = (robot) ->
  status = {}

  robot.respond /(\S+)/i, (msg) ->

    message = msg.match[1]
    HUBOT_DOCOMO_DIALOGUE_API_KEY = process.env.HUBOT_DOCOMO_DIALOGUE_API_KEY
    HUBOT_DOCOMO_DIALOGUE_APPID   = process.env.HUBOT_DOCOMO_DIALOGUE_APPID
    url = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/dialogue?APIKEY='+HUBOT_DOCOMO_DIALOGUE_API_KEY
    headers = {'Content-Type':'application/json'}

    d = new Date()
    appSendTime = d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2) + ' '\
                   + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds()

    request = require('request');

    request.post 
      url: url
      headers: headers
      json: 
        language: "ja-JP"
        botId: "Chatting"
        appId: HUBOT_DOCOMO_DIALOGUE_APPID
        voiceText: message
        clientData: {"option": {"mode":"dialog","t":"kansai"}}
        appRecvTime: status['appRecvTime']
        appSendTime: appSendTime
      , (err, response, body) ->

        msg.send body.systemText.expression
        status =
          "appRecvTime": body.serverSendTime

自然対話APIに変更され仕様も変わった影響か(?)、自分の環境で上手く動作するパッケージやソースがありませんでした。
そのため、今回は以下のURLのソースコードを参考に作成しました。
※リクエストキーの値は適宜変更してください。

  1. https://gist.github.com/FromAtom/066215d061eb9837e77e
  2. https://github.com/bouzuya/hubot-docomo-dialogue/blob/master/src/scripts/docomo-dialogue.coffee
  3. https://github.com/toshimaru/hubot-docomochatter/blob/master/src/scripts/docomochatter.coffee
  4. https://github.com/mako09/hubot-wapuu-scripts/blob/master/docomo-dialogue.coffee
  • 3: 環境変数の追加

HUBOT_DOCOMO_DIALOGUE_API_KEY: APIキー
HUBOT_DOCOMO_DIALOGUE_APPID: POSTMANで取得したappID

動作状況

2018-09-09_1.22.16.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2