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


