Python3
REST-API
docomoAPI
AWSLambda

AWS Lambda(python)からRESTコールする ~ 試しにdocomo自然対話APIに!


はじめに

長らく慣れ親しんだ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に登録

https://dev.smt.docomo.ne.jp/


(2) API登録

API経由でユーザー登録をして、アプリケーションIDを取得する必要があります。

この手順は、少しコーディングが必要です。

lambdaに以下のコードを入れて、ハンドラ情報をlambda_function.registrationに設定して、動かすと、アプリケーションIDを取得することができます。

キャプチャ.PNG

そしたら、アプリケーションIDとアプリケーションキーをLambdaの環境変数に設定しましょう。

キャプチャ.PNG


(3) 利用

会話時はハンドラをlambda_function.mainにして使ってみてください。

環境変数のメッセージに話しかけたい内容(「こんにちは」など)を書いてテストボタンを押すと・・・

キャプチャ4.PNG

メッセージが返ってきます。

いろいろ、話しかけてみましょう!


コード


lambda_function.py

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']



参考

https://www.yamamanx.com/docomo-developer-support-api/