はじめに
長らく慣れ親しんだdocomo雑談対話APIが2018年10月末でサービス終了となりました。
サービス開始当時は、LINEの後ろに仕込んでLINE BOT作って遊んでいました。
その後継サービスとして、docomo自然対話APIがあるようです。
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=natural_dialogue&p_name=api_4_usage_scenario#tag01
せっかくなので、AWS Lambda (python3.6)からAPIコールしてみたいと思います。
手順
初回は(1)及び(2)が必要で、ちょっと面倒です。
(1) docomo developer supportに登録
(2) API登録
API経由でユーザー登録をして、アプリケーションIDを取得する必要があります。
この手順は、少しコーディングが必要です。
lambdaに以下のコードを入れて、ハンドラ情報をlambda_function.registrationに設定して、動かすと、アプリケーションIDを取得することができます。
そしたら、アプリケーションIDとアプリケーションキーをLambdaの環境変数に設定しましょう。
(3) 利用
会話時はハンドラをlambda_function.mainにして使ってみてください。
環境変数のメッセージに話しかけたい内容(「こんにちは」など)を書いてテストボタンを押すと・・・
メッセージが返ってきます。
いろいろ、話しかけてみましょう!
コード
import requests
import json
import os
docom_app_id = os.environ['APP_ID']
docomo_api_key = os.environ['API_KEY']
docomo_endpoint_registration = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/registration?APIKEY='+docomo_api_key
docomo_endpoint_dialog = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/dialogue?APIKEY='+docomo_api_key
headers = {
'Content-type': 'application/json;charset=UTF-8'
}
def registration(event, context):
payload = {
"botId": "Chatting",
"appKind": "Smart Phone"
}
response = requests.post(
docomo_endpoint_registration,
data=json.dumps(payload),
headers=headers
)
data = response.json()
print(json.dumps(data))
return {'statusCode': 200}
def main(event, context):
payload = {
"language": "ja-JP",
"botId": "Chatting",
"appId": docom_app_id,
"voiceText": os.environ['MESSAGE'],
"appRecvTime": "2017-10-28 00:25:00",
"appSendTime": "2017-10-28 00:25:00"
}
response = requests.post(
docomo_endpoint_dialog,
data=json.dumps(payload),
headers=headers
)
data = response.json()
return data['systemText']['expression']
参考