GASでwikiの情報を取得するSlack Botを作りました。
wiki ○○○
にて、Wikipediaの情報を表示します。
Wikipediaの情報は、以下のAPIを利用させていただきました。感謝。
http://wikipedia.simpleapi.net/
組み込み利用にあたっては、なるべく1分あたり30リクエスト以下でお願いします
とのことですので、注意して利用してください。
以下を参考にさせていただきました。
https://tech.camph.net/slack-bot-with-gas/
http://qiita.com/soundTricker/items/43267609a870fc9c7453
ありがとうございました。
とりあえずソースだけあげておきます。
上記をみれば、設定方法がわかると思います。
wiki.js
var OUTGOING_TOKEN = PropertiesService.getScriptProperties().getProperty('OUTGOING_TOKEN');
var BOT_ICON = PropertiesService.getScriptProperties().getProperty('BOT_ICON');
var BOT_NAME = "wiki";
function doPost(e) {
var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
if(OUTGOING_TOKEN != e.parameter.token && e.parameter.trigger_word == 'wiki'){
return;
}
var app = SlackApp.create(token);
var params = e.parameter.text.match(/^wiki (.*)/);
if(params == null) return;
var word = params[1].replace(/(^\s+)|(\s+$)/g, "");
var url = "https://ja.wikipedia.org/wiki/" + word ;
var message = "";
message += url + "\n";
message += getWikiData(word);
return app.postMessage(e.parameter.channel_id, message , {
username: BOT_NAME,
icon_url: BOT_ICON
});
}
function getWikiData(keyword) {
var url = "http://wikipedia.simpleapi.net/api?keyword="+ keyword +"&output=json";
// JSONデータを取得
var json = UrlFetchApp.fetch(url).getContentText();
var jsonData = JSON.parse(json);
if(jsonData == null){
return "存在しませんでした。";
}else if(jsonData[0] == null){
return "存在しませんでした。";
}else if(jsonData[0]["body"] == null){
return "存在しませんでした。";
}else{
return jsonData[0]["body"];
}
}