前回に続きで、LINEでchatGPTを使えるようにした話です。
気軽に使えるといえば、日本ではやっぱりLINE。基本的に、仕事とプライベートは分けた方がいいという考えのもと、Mattermostというチャットツールを利用しているわけですが、社員間ではやっぱり手軽にLINEで、というメンバーも多いのも実情です。
前回参考にさせていただいたサイトと、こちらのサイトを組み合わせて実現しています。以下に、chatGPT用にカスタマイズしたdoPost 部分を載せておきます。(冗長な部分がありますが、今後のカスタマイズ用にそのままにしてます)
//LINEユーザーから受け取ったメッセージとchatGPTとの会話履歴を足してchatGPTを呼び出す
function doPost(e) {
//LINE Messaging APIのチャネルアクセストークンを設定
let token = "Access token";
// WebHookで取得したJSONデータをオブジェクト化し、取得
let eventData = JSON.parse(e.postData.contents).events[0];
//取得したデータから、応答用のトークンを取得
let replyToken = eventData.replyToken;
//取得したデータから、メッセージ種別を取得
let messageType = eventData.message.type;
if(messageType != "text"){
console.log("テキスト以外");
return
}
//取得したデータから、ユーザーが投稿したメッセージを取得
let userMessage = eventData.message.text;
//取得したデータから、ユーザーIDを取得
let userId = eventData.source.userId;
// 会話処理実行
const chatMessage = jpChat(userMessage, userId);
// 応答メッセージ用のAPI URLを定義
let url = 'https://api.line.me/v2/bot/message/reply';
//ユーザーからの投稿メッセージから応答メッセージを用意
let replyMessage = chatMessage;
//APIリクエスト時にセットするペイロード値を設定する
let payload = {
'replyToken': replyToken,
'messages': [{
'type': 'text',
'text': replyMessage
}]
};
//HTTPSのPOST時のオプションパラメータを設定する
let options = {
'payload' : JSON.stringify(payload),
'myamethod' : 'POST',
'headers' : {"Authorization" : "Bearer " + token},
'contentType' : 'application/json'
};
//LINE Messaging APIにリクエストし、ユーザーからの投稿に返答する
UrlFetchApp.fetch(url, options);
}
jpChatにuserIDを渡して、ユーザ毎に会話履歴を取るようにしています。
あとは、社員それぞれに友達登録してもらうだけです。念のために1日10回までと制限を入れたりしています。
ちなみに、ボットの絵ですが、これもopenAIのDALL·E API を使用して作成しました。意外とお金かかるのでお気を付けを。