Node.jsからChatworkのタスクを追加するメモその2
11011 ワード
前回記事の続きです。
タスク追加にあたり、メンバーのリストを取得してきてから追加します。
APIドキュメントはこちらです。
[JavaScript] 非同期処理のコールバック地獄から抜け出す方法を参考にasync/awaitのaaを使って同期的に処理を書いてみます。
$ npm i aa request
chtask.js
'use strict';
if (!process.env.chtoken) {
console.log('Error: Specify token in environment');
process.exit(1);
}
let aa = require('aa');
let request = require('request');
const ROOM_ID = '43484166';
//タスク追加
function addTask(text, userList){
let task = {
body: text,
limit: 0,
to_ids: userList,
};
let options = {
url: `https://api.chatwork.com/v1/rooms/${ROOM_ID}/tasks`,
headers: {
'X-ChatWorkToken': process.env.chtoken
},
form: task,
json: true
};
return new Promise((resolve,reject) => {
request.post(options, (error, response, body) => {
if(error) reject('error: '+ response.statusCode);
resolve(body);
});
});
}
//メンバー取得
function getMember(){
let options = {
url: `https://api.chatwork.com/v1/rooms/${ROOM_ID}/members`,
headers: {
'X-ChatWorkToken': process.env.chtoken
},
json: true
};
return new Promise((resolve,reject) => {
request.get(options, (error, response, users) => {
if(error) reject('error: '+ response.statusCode);
let userList = '';
for (let i = 0, len = users.length; i < len; i++) {
userList += users[i].account_id;
if(len !== i+1) userList += ',';
}
resolve(userList);
});
});
}
//同期実行
aa(function*() {
let userList = yield getMember();
let res = yield addTask('message', userList);
return res;
}).then(
function (val) { console.info('ok: ',val); },
function (err) { console.error('ng: ',err); }
);
実行してみます。
$ chtoken=xxxxxxxxx node chtask.js
こんな感じでタスク追加できました。
APIを二回投げるあたりは非同期処理の練習になりますね〜
Author And Source
この問題について(Node.jsからChatworkのタスクを追加するメモその2), 我々は、より多くの情報をここで見つけました https://qiita.com/n0bisuke/items/a15551ed3cc7b2ffd44f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .