以前書いたとおり設定だけでは連携できなかったのでコードを書いて連携してみました。
参考にさせていただいたのはこちらのサイトです。ありがとうございます!
環境はサーバなどを用意しなくてもすむ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です。