docomoの雑談対話を試す
既に試している記事がいくつかあったのですが、
それらは古いバージョンで動作しなかったため、新たに作成しました。
リファレンスは末尾に記載してあります。
経緯
- 2018年6月下旬にdocomoの雑談対話APIが終了し、自然対話APIとなった。
- 自然対話APIの中の機能の一つに雑談対話があり、こちらがこれまでの雑談対話APIの後継と位置付けられそう。
前提
- docomo Developer supportでAPIKEYを取得してください。
- 取得後は、APIの申請・管理からAPIKEYを参照できます。
サンプルプログラム
python3.6.5
で動作を確認しました。
# -*- coding: utf-8 -*-
import requests
import json
from datetime import datetime
class DocomoZatsudan:
REGISTER_KEY = '【取得したAPIKEY】'
def __init__(self, sex="", t=""):
# オプション指定(口調)
self.set_option(sex, t)
# ユーザ登録
self.register_user()
def register_user(self):
# エンドポイントの設定
r_url = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/registration?APIKEY=REGISTER_KEY'
d_url = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/dialogue?APIKEY=REGISTER_KEY'
self.r_url = r_url.replace('REGISTER_KEY', DocomoZatsudan.REGISTER_KEY)
self.d_url = d_url.replace('REGISTER_KEY', DocomoZatsudan.REGISTER_KEY)
# ユーザ登録のパラメータを代入
payload = {'botId':'Chatting', 'appKind':'Chat'} #appKindは任意の文字列
headers = {'Content-type' : 'application/json;charset=UTF-8'}
# 送信
r = requests.post(self.r_url, data=json.dumps(payload), headers=headers)
data = r.json()
self.appId = data['appId'] # appIdを取得
def chat(self, user_input):
# 日付を取得
# ※サンプルなので現在の時刻を指定している。
now_datetime = datetime.now().strftime("%Y-$m-$d %H:%M:%S")
# 自然対話のパラメータを代入
payload = {'language':'ja-JP', 'botId':'Chatting', 'appId':self.appId,
'voiceText':user_input, 'appRecvTime':now_datetime, 'appSendTime':now_datetime,
'clientData':self.option}
headers = {'Content-type': 'application/json'}
# 送信
r = requests.post(self.d_url, data=json.dumps(payload), headers=headers)
data = r.json()
# jsonの解析
response = data['systemText']['expression']
return response
def set_option(self, sex="", t=""):
self.option = {'option': {'sex':sex, 't':t}}
if __name__ == '__main__':
docomo_zatsudan = DocomoZatsudan()
# docomo_zatsudan = DocomoZatsudan(sex="女", t="kansai")
print("【Enterでプログラム終了】")
while True:
# 会話の入力
user_input = input('>> ')
if user_input is not '':
print("response: %s" %(docomo_zatsudan.chat(user_input)))
else:
exit()
サンプルプログラムの補足説明
DocomoZatsudanクラスのコンストラクタ引数について
以下を指定できる。
他にもいくつかのパラメータを設定できる。
詳しくは 公式のリファレンス を参照してください。
- sex:
- 男
- 女
- t:
- kansai:関西弁キャラ
- akachan:赤ちゃんキャラ
- 指定なし:デフォルトキャラ
改変箇所
REGISTER_KEY = '【取得したAPIKEY】'
という箇所がありますので、
そちらに取得したAPIKEYを入力してください。
ユーザ登録
- ユーザ登録することで、
appId
を取得します。-
appId
はユーザ毎の会話のステータスを管理するのに用いられています。
-
リファレンス
公式の情報
参考にした記事
Author And Source
この問題について(docomoの雑談対話を試す), 我々は、より多くの情報をここで見つけました https://qiita.com/sonoshou/items/1fae2ea153dc9307f659著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .