Node.js에서 Chatwork의 작업 추가 메모 2
작업을 추가할 때 멤버 목록을 가져온 다음 추가합니다.
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를 두 번 던질 때는 비동기 처리 연습이 되네요 ~
Reference
이 문제에 관하여(Node.js에서 Chatwork의 작업 추가 메모 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/a15551ed3cc7b2ffd44f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)