雑談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で送っています。
初めはへんな語尾(ンちゃ)を付けていたので変な言葉になってますが、こんな感じで会話っぽくなりました!💮
説明を読んでみると、学習してどんどん会話が噛み合うようになるとか?
アイコンはdockerを借りちゃいました。😙
今回作ってみて思ったのはやっぱりGASは便利ですね〜
pythonでプログラムが書けると良いのですが、やっぱりJavascriptを勉強しろってことでしょうか?😅
では🤚
この記事が気に入ったらサポートをしてみませんか?