LoginSignup
2
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-01

はじめに

長らく慣れ親しんだ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を取得することができます。

キャプチャ.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']

参考

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5