さっき書いた記事ではAPI経由でChatworkのチャットグループを取得しました。
今回はチャットグループに投稿してみたいと思います。
ChatworkAPIにexpressからrequestモジュールで接続 - Qiita
チャットワークAPIで投稿
サンプルリクエスト
curl -X POST -H "X-ChatWorkToken: YOUR API KEY" -d "body=Hello+ChatWork%21" "https://api.chatwork.com/v1/rooms/{room_id}/messages"
今回はPOSTですが、前回のGETと同じくAPIにはヘッダーにAPI KEY(token)を付けます。
前回の内容でチャット毎のroom_idが分かったと思うので、それをメモしておきましょう。
前回のコードを修正&書き足してチャットワークにPOST(投稿)
requestモジュールを使います。expressは4系です。
routes/post.js
を作りましょう。room_idとAPIキーを適宜変更して下さい。
routes/post.js
var express = require('express');
var router = express.Router();
var request = require('request');
router.get('/', function(req, res){
var tweet = 'こんばんわ〜';
var room_id = 投稿したいチャットルームのid;
var options = {
url: 'https://api.chatwork.com/v1/rooms/'+room_id+'/messages',
headers: {
'X-ChatWorkToken': 'YOUR API KEY'
},
form: { body: tweet },
json: true
};
request.post(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.render('post', body);
}else{
console.log('error: '+ response.statusCode);
}
});
});
module.exports = router;
urlルーティング設定のためにapp.jsも書き換えます
app.js
# 8行目付近
var routes = require('./routes/index');
var users = require('./routes/users');
var post = require('./routes/post'); //←追加
# 25行目付近
app.use('/', routes);
app.use('/users', users);
app.use('/post', post); //←追加
今回はチャットルームに投稿したメッセージidを表示させます。
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Postてすと</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
postメッセージid:
<%= message_id %>
</body>
</html>
これでブラウザからlocalhost:3000/post
にアクセスすると、チャットワークに眠い
と投稿されます。
ブラウザ上にはpostされたメッセージのidが表示され、
チャットワーク上では自分のアカウントが指定したroomで眠いと言っています。
こんな感じでメッセージ投稿まで出来ました! めでたし!