株式会社いいオフィスFC募集その2
株式会社いいオフィスFC募集その2
2015.04.09

Node.jsで社内日報メールを取得してFacebookページに自動投稿する仕組みを実装したので解説します。

のびすけ

C. 仕上げにAとBの内容をつなげる

最後は二つをつなげれば完成です。
先ほどのfb.jsをモジュール化してmail.jsから呼ぶようにします。

var FB = require('fb');
var FB_ACCESS_TOKEN = 'YOUR ACCESS TOKEN';

FB.setAccessToken(FB_ACCESS_TOKEN);

module.exports = function fbPost(body){
  console.log(111);
  FB.api('me/feed', 'post', { message: body}, function (res) {
    if(!res || res.error) {
      console.log(!res ? 'error occurred' : res.error);
      return;
    }
    console.log('Post Id: ' + res.id);
  });
}

通常の日報と判別するために【今日の短編小説】というキーワードで判別することにして、ウラカワさんには【今日の短編小説】というキーワードを日報小説の前に入れてもらうことにしました。

var inbox = require('inbox');
var iconv = require('iconv');
var fbPost = require('./fb'); //追記 mail.jsとfb.jsは同じ階層に設置

var conv = new iconv.Iconv("ISO-2022-JP", "UTF-8");

var client = inbox.createConnection(false, "imap.gmail.com", {
  secureConnection: true,
  auth: {
    user: "Your Gmail Account",
    pass: "Password"
  }
});

client.on("connect", function() {
  console.log('connect');
  client.openMailbox("INBOX", function(error, info) {
    if(error) throw error;
    console.log("Successfully connected to server");
  });
});

client.on("new", function(message) {
  var tmp = [];
  var phrase = '【今日の短編小説】';
  var endPhrase = '【今日の仕事内容】';

  console.log('日時:' + message.date);
  console.log('送信者:' + message.from.name + '-' + message.from.address);
  console.log('タイトル:' + message.title);

  client.createMessageStream(message.UID).on("data", function(data){
    var body = conv.convert(data).toString();
    if(body.indexOf(phrase) != -1) {
      tmp = body.split(phrase);
      tmp = tmp[1].split(endPhrase);
      console.log('今日の短編小説:', tmp[0]);
      fbPost(tmp[0]); //追記 facebookにポスト
    }
  });

});

client.connect();

これで完成です。

実行してみます。

$ node mail.js

実行したらあとは待機しておきましょう。

ウラカワさんがメールを流したら・・・

 


Facebookページに自動投稿されます!

めでたしめでたし。

利用者の声

うちのチームリーダーのウラカワさんに感想を聞いてみました。

 

「の、のびちゃん・・・そんなことより、その髪型・・・どうしたの?」

うん、よかったよかった。

まとめと感想など

今回は、浦川さんの日報小説をメールで受け取り、Facebookページに自動投稿する過程を紹介しました。

今回はウラカワさんが小説を書き始めたという勢いにのって、日報小説をメールで受け取り、Facebookページに自動投稿する過程システムを作り、記事公開までをやりました。おそらくウラカワさんもそのうち日報小説に飽きると思うので、思い立った時に勢いで作るというのはとても大事なことだなぁ感じてます。
刺身と同じで 制作物の鮮度ってあるよなと思ったりしながらこの締めの文章を書いています(笑)

今回は、LIGでこんな取り組みをしている・・・ということだったり、エンジニアにとって記事が参考になったら幸いです。
このタイトルを見てどんな人がここまで読んでくれるのか、制作過程の話やコンセプトを織り交ぜつつの技術系記事ってリーチするのか・・・など思うところはあります、ので。

コメントなどお待ちしております。

それでは!

 

【がんばる、のびすけ】

Seriously.jsで動画・画像にリアルタイムエフェクトをかける方法【ほりぼーいドッキリ編】

ChatWorkがメッセージ取得APIを解禁したのでHubotと連携させてみよう!(業界初かも)

SHIFTBRAIN×LIGのサンタたちが、働くオトナにワクワクをお届けしました!

milkcocoaとgmaps.jsで、スマホ(と、まろ氏)の位置情報をリアルタイムに取得してみた

iPhoneがラジコンになる知育ロボットRomoで遊んでみよう【使い方編】