NVMを使用し、Node.js(今回はv6.5.0)をインストールします。
# nvm install v6.5.0
今回作成するプログラムに必要となる、3つのモジュール(express、body-parser、request)をインストールします。
# npm install express body-parser request
そのまま日本語を含むjsファイルを作成すると日本語部分が文字化けしてしまうため、ロケールを変更します。具体的にはi18nファイルのLANGをデフォルトの「C」から「ja_JP.utf8」に変更します。
# vim /etc/sysconfig/i18n LANG="ja_JP.utf8" SYSFONT="latarcyrheb-sun16" # . /etc/sysconfig/i18n
以下の内容でjsファイルを作成します。なお、本件では給湯温度を直接計測せず外気温を取得しているため、送信の際に仮の値としてtempareture の値に60℃を加算しています。
var express = require('express'); var app = express(); var bodyParser = require('body-parser') var request = require('request'); app.use(bodyParser.json()); function send_slack(text) { var payload = { "text": text, }; var options = { url: '《SlackのIncoming Webhooksにて生成されたWebhook URL》', form: 'payload=' + JSON.stringify(payload), json :true }; request.post(options, function(error, response, body){ if (!error && response.statusCode == 200) { } else { console.log('error: '+ response.statusCode + body); } }); } var tempareture = null; var seconds = null; app.post('/pot', function(req, res) { var module = req.body.module; var channels = req.body.payload.channels; channels.forEach(function(channel){ console.log(module, channel); if(channel.channel == 11){ tempareture = channel.value; console.log(tempareture + " degrees"); } if(channel.channel == 12){ seconds = channel.value; console.log(seconds + "sec"); var c = parseInt(seconds/0.5, 10); var message = "ジャ" + Array(c+1).join("〜"); if(c<2){ message = "チョロ"; } send_slack(message + " (" + (tempareture+60.0) + "℃)"); } }); res.send("OK"); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); });
nodeコマンドでpot.jsを起動し「Example app listening on port 3000!」のメッセージが表示されれば、変換サーバの準備は完了です。サービスを停止したい場合は「Ctrl+C」を押下します。
# node pot.js
Copyright © ITmedia, Inc. All Rights Reserved.