雑談Chat TalkAPIを使ってLINE Chat botを作ってみた

リクルートが公開している、A3RTというAI系APIとLINEのMessageAPIを使って、会話をしてくれるChat botを作ってみます。💪

まずはpythonでアクセスして、このTalkAPIってどんなもんなのか確認してみます。

import requests
import pprint
# -*- coding: utf-8 -*-
def main():
   send_Talk_API('おはよう')
   
def send_Talk_API(sendMessage):
   A3RT_Talk_api = 'https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk'
   apikey = '<your apikey>'
   #headers = {'Authorization': f'Bearer {line_notify_token}'}
   data = {'apikey': apikey,'query': sendMessage}
   response = requests.post(A3RT_Talk_api, data = data)
   
   #pprint.pprint(response.json())
   td = response.json()['results'][0]['reply']
   print(td)
   
if __name__ == "__main__":
   main()

『おはよう』って送るとjsonデータで『おはようございます』と返信してきますね。💯

アクセスの方法はこれで良さそうです。😙

当初このプログラムをflaskに組み込んでherokuでデプロイしようと思ったのですが、flaskでrequests.postを実行するとエラーが出てしまうのであまり深追いせずに諦めてGASに組み込んでみました。

GASでの問題点は自分がJavaScriptをよく理解していないとこなんですが、そこはネットで調べながらなんとかやってみましょう!💪

まず、予めLINEのMessageAPIを作成しておく必要があります。

LINEのMessageAPIの作成方法は下記を参考に

GASをWebアプリとして公開する方法は下記を参考に


GASのソースコードです。

// LINE developersのメッセージ送受信設定に記載のアクセストークン
var ACCESS_TOKEN = '<your access token>';
function doPost(e) {
 // WebHookで受信した応答用Token
 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
 // ユーザーのメッセージを取得
 var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
 
 var resMessage = AI_bot(userMessage);
 
 
 // 応答メッセージ用のAPI URL
 var url = 'https://api.line.me/v2/bot/message/reply';
 UrlFetchApp.fetch(url, {
   'headers': {
     'Content-Type': 'application/json; charset=UTF-8',
     'Authorization': 'Bearer ' + ACCESS_TOKEN,
   },
   'method': 'post',
   'payload': JSON.stringify({
     'replyToken': replyToken,
     'messages': [{
       'type': 'text',
       'text': resMessage + '!',
     }],
   }),
   });
 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
//--------------------------------------------------------------------
function AI_bot(lineMessage) {
 
 var url = "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk";
 var apikey = "<your apikey>";
 var payload = 
 {
   "apikey" : apikey,
   "query" : lineMessage
 }
 
var options =
{
   "method" : "POST",
   "payload" : payload
}
 var response = UrlFetchApp.fetch(url,options);
 
 var res = response.getContentText();
 
 var obj =JSON.parse(res)
 return obj["results"][0]["reply"];
}

受け取ったメッセージをA3RTのTalk APIにhttp postで送って、受け取った返信をLINEのMessageAPIにhttp postで送っています。

スクリーンショット 2021-01-22 22.24.40

初めはへんな語尾(ンちゃ)を付けていたので変な言葉になってますが、こんな感じで会話っぽくなりました!💮

説明を読んでみると、学習してどんどん会話が噛み合うようになるとか?

アイコンはdockerを借りちゃいました。😙

画像2

今回作ってみて思ったのはやっぱりGASは便利ですね〜

pythonでプログラムが書けると良いのですが、やっぱりJavascriptを勉強しろってことでしょうか?😅

では🤚

この記事が気に入ったらサポートをしてみませんか?