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

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で遊んでみよう【使い方編】

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

のびすけ
のびすけ バックエンドエンジニア / 菅原 のびすけ

dotstudio株式会社 ( https://dotstud.io ) 岩手から上京してきました。 ギークハウスを経て、現在は0円シェアハウスに住んでいます。 好きなスポーツはフットサル/雪合戦/わんこそばです。 2015年は東京Node学園で登壇してみたいです。 ・milkcocoa公認エバンジェリストになりました。(https://mlkcca.com/) ・gihyo.jpで記事書いてます (http://gihyo.jp/dev/feature/01/milkcocoa-baas) ・html5experts.jpで記事書いてます。(https://html5experts.jp/n0bisuke/)

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL