ユーザーローカルの人工知能APIとLINEBOTを連携させてみた

以前書いたとおり設定だけでは連携できなかったのでコードを書いて連携してみました。

ユーザーローカルの人工知能APIとLINEBOTを連携したけど設定だけじゃ上手くいかない

参考にさせていただいたのはこちらのサイトです。ありがとうございます!

環境はサーバなどを用意しなくてもすむ‎Google Apps Script(以下GAS)です。

たけしくんから返事がくるREPLY(BOTに話しかけると返事をしてくれる)

たけしはたけしでも世界の北野ではないほうです。

var userlocal_endpoint = 'https://chatbot-api.userlocal.jp/api/chat';
var line_reply_endpoint = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  var reply_token = JSON.parse(e.postData.contents).events[0].replyToken; 
  var user_message = JSON.parse(e.postData.contents).events[0].message.text;
  
  var res = UrlFetchApp.fetch(
    userlocal_endpoint + '?key=' + encodeURIComponent(USERLOCAL_KEY) + '&message=' + encodeURIComponent(user_message)
  );
  var replay_text = JSON.parse(res).result;
  
  UrlFetchApp.fetch(line_reply_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': reply_token,
      'messages': [
        {'type': 'text', 'text': replay_text},
      ],
    }),
  });
}

たけしくんから話しかけてくるPUSH(BOTから話しかける)

takeshisheetにたけしくんの猛言をデータ入力してみました。
これをランダムで一覧にしたユーザidに送信します。

var line_push_endpoint = 'https://api.line.me/v2/bot/message/push';

function doPush() {
  var takeshiValues = takeshisheet.getDataRange().getValues();
  var datarow = Math.floor(Math.random()*takeshiValues.length);
  var send_message = takeshiValues[datarow][0];

  var sheet = SpreadsheetApp.openById('ランダム送信するユーザリスト').getSheetByName('userid');
  var userids = sheet.getDataRange().getValues();
  var userrow = Math.floor(Math.random()*userids.length); 
  var userid = userids[userrow][0];
  
  UrlFetchApp.fetch(line_push_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'to': userid,
      'messages': [
        {'type': 'text', 'text': send_message},
      ],
    }),
  });
}

あとはdoPushを任意の間隔でトリガーに設定しておけばOKです。

たけしくんと友達になりたいかたはこちらへ
友だち追加