きょこみのーと

技術に関係ないほうのブログ

docomo APIのGoライブラリ(go-docomo)を作った

docomoAPIを利用する目的で作ったGo製のライブラリです。 各API叩いてるだけなので、特別なにかやってるとかはないです。

kyokomi/go-docomo · GitHub

今のところ以下のAPIに対応しています。

  • 雑談対話
  • 知識Q&A
  • トレンド記事抽出

ライブラリの構成とかはgo-githubを参考に作りました。

docomo API

docomoAPIを利用するには、以下でDeveloper登録が必要です。 Google+とかFacebookとかのSNSアカウントでログイン対応してるので、すぐAPIを触れます。

docomo Developer support | NTTドコモ

docomoAPI

f:id:kyokomi:20150114142403p:plain

※詳しくは公式APIドキュメントを見ていただければと

利用例

大体こんな感じに使われてます。

以下の記事を見て自分もGoでやってみたいなーと思いました。

DocomoruでBOTと雑に会話する - Qiita

go-docomoでつくったGo製のSlackbot

雑談APIと知識Q&AのAPIを使ってます。

f:id:kyokomi:20150114142934p:plain

いーすんさん可愛い!!!

雑なソースコードはこちら ↓

kyokomi/nepu-bot · GitHub

go-docomoの使い方

普通にgo getします。

go get github.com/kyokomi/go-docomo/docomo

docomoで登録したAPIはNewClientの引数で渡すようにしているので、 環境変数なり起動引数なりで読み込んでセットしてください。

package main

import (
    "log"
    "os"

    "github.com/kyokomi/go-docomo/docomo"
)

func main() {
    apiKey := os.Getenv("DOCOMO_APIKEY")

    c := docomo.NewClient(apiKey)

    message := "こんにちわ"
    req := docomo.DialogueRequest{
        Utt: &message,
    }
    res, err := c.Dialogue.Get(req, true)
    if err != nil {
        log.Fatalln(err)
    }
    log.Printf("%+v", res)
}

実行結果

2015/01/14 14:52:02 &{Context:kqRd3UD-30ov__ecH7exLA Da:0 Mode:dialog Utt:こんにちわー Yomi:こんにちわー RequestError:{PolicyException:{MessageID: Text:}}}

Memo: トレンド記事取得の関連記事取得が中々ヒットしない仕様?みたいで「ぐぬぬ」ってなりますのでご注意ください

おわり

気軽にPR等投げていただければと思います。

ただ、英語全然ダメなので、こっそりTwitterとかで日本語で話しかけていただけると助かります・・・