chatGPT & LINE

前回に続きで、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 を使用して作成しました。意外とお金かかるのでお気を付けを。

タイトルとURLをコピーしました