はじめに
初めましてちーずです。これから少しずつ投稿しようと思います。
今回はchatbotについてです。
会社で今後chatbotの案件が出てきそうなので予習がてら作ってみることにしました。
参考にさせていただいた記事です。というよりここに書いてあることができるように真似てみただけです。
https://qiita.com/ponjopi/items/913ae7f5b1117cee4860
使ったもの
- Google Apps Script(GAS)
- LINE Messaging API
- DOCOMO 雑談対話 API
手順 サマリ
- Google Apps Script を準備する
- LINE Messaging API の申請をする
- DOCOMO 雑談対話 API の申請をする
- Google Apps Script でLINEとDOCOMOのAPIを叩く
手順 詳細
Google Apps Script を準備する
驚くほど手間がかからなかった。
- Googleアカウントを取得する
- chromeにGoogle Apps Scriptを入れる
- Google ドライブから「新規」->「その他」->「アプリを追加」でGASを選択
LINE Messaging API の申請をする
申請はここからします。この時、LINEのアカウントが必要になります。私は普段自分が使っている個人アカウントを使用しました。開発用のアカウントを用意したかったのですが電話番号を複数持っていないので致し方なしです。(facebook連携とかすれば電話番号なくてもLINEアカウントを作れるらしいです)
https://developers.line.me/ja/index.html
DOCOMO 雑談対話 API の申請をする
ここから申請します。
https://dev.smt.docomo.ne.jp/?p=index
(スクショを撮り忘れてて、取ろうと思ったらメンテナンス中で撮れませんでした。気が向いたら追記します。)
Google Apps Script でLINEとDOCOMOのAPIを叩く
doPost
でpostを受け取ります。
そしてdoPost
関数の中でUrlFetchApp.fetch
でLINE Messaging APIを呼び出します。
fetchで指定しているURLがLINE Messaging APIのURLです。https://api.line.me/v2/bot/message/reply
返信の文言はgetDialogueMessage
で雑談APIを叩いて、返ってきた内容をresponse_message
に詰めています。
これでLINEのトークで会話できるようになります。
var CHANNEL_ACCESS_TOKEN = 'LINE DEVELOPERで作成されたアクセストークン';
var DOCOMO_DIALOGUE_APIKEY = 'DOCOMO雑談APIのAPIKEY';
function doPost(e){
var reply_token = JSON.parse(e.postData.contents).events[0].replyToken;
if(typeof reply_token === 'undefined'){
return;
}
var user_message = JSON.parse(e.postData.contents).events[0].message.text;
var response_message = getDialogueMessage(user_message);
var url = 'https://api.line.me/v2/bot/message/reply';
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': [{
'type': 'text',
'text': response_message,
}],
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
function getDialogueMessage(mes) {
var dialogueUrl = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=' + DOCOMO_DIALOGUE_APIKEY;
var dialogue_options = {
't': 20,
'utt': mes
};
var options = {
'method': 'POST',
'contentType': 'text/json',
'payload': JSON.stringify(dialogue_options)
};
var response = UrlFetchApp.fetch(dialogueUrl, options);
var content = JSON.parse(response.getContentText());
return content.utt;
}