docomoの雑談対話APIのエンドポイントが変わって動かなくなっていた件

日本語でそれっぽい雑談対話を生成してくれてチャットボットとかで使われているであろうdocomoの雑談対話APIにアップデートがあったらしい。

よって今まで動いていたエンドポイントから404が返ってくるようになってしまった。

これからは/naturalChatting/v1/dialogueで終わるエンドポイントへ切り替えなければならないのと、

今まではAPIKEYを指定するだけでリクエストができていたがこれからは事前にユーザー登録を行ってappIdを入手する必要がある。

ということでこちらに新しい仕様があるのでPythonでサンプルを書いてみた

import requests
import os
import json

docomo_key = "{ docomo api key }"


def registration(config_path,key):
    regist = "https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/registration?APIKEY={key}"\
        .format(key=key)
    data = {
        "botId": "Chatting",
        "appKind": "Smart Phone"
    }
    res = requests.post(regist, json=data)
    res_json = res.json()

    with open(config_path, "w") as f:
        json.dump(res_json, f)

def conversation(key,app_id,speech):
    url = "https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/dialogue?APIKEY={key}" \
        .format(key=key)
    data = {
        "botId": "Chatting",
        "appId": app_id,
        "voiceText":speech,
        "language":"ja-JP"
    }
    res = requests.post(url, json=data)
    res_json = res.json()
    return res_json["systemText"]["utterance"]

def main():
    # appIdを取得して.cacheディレクトリに入れる
    cache = os.path.join(os.environ["HOME"],".cache")
    dialog = os.path.join(cache,"dialog.json")
    if not os.path.exists(cache):
        os.mkdir(cache)

    if not os.path.exists(dialog):
        registration(dialog,docomo_key)

    with open(dialog,"r") as f:
        config = json.load(f)

    app_id = config["appId"]

    text = "こんにちは"

    res = conversation(docomo_key,app_id,text)

    print(res)

if __name__ == "__main__":
    main()

 

今までdocomoの雑談対話APIで動いていたチャットボットとか結構いたのではないだろうか。それらが動かなくなっているとおもうので対応を頑張ってもらいたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください