Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

ea-yasuda
勤め先では、イントラプレナー(社内起業家)としてAIビジネス開発を推進しています。たまにIT解説マンガを描いています。 https://www.itmedia.co.jp/enterprise/articles/1606/25/news012.html
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした