日頃の行い

個人的な日頃の行いをつらつら書いてます\\\\ ٩( 'ω' )و ////

Darkを支える技術 #1 Slackでユーザを招待する編

この記事は Dark - Developers at Real Kommunity Advent Calendar 2015 - Adventar の5日目として書かれています。

こんばんは。たなあら (@ara_ta3) | Twitter です。
Darkのアドベントカレンダーに絶対に空きは作りません。
酔っ払った勢いで書ける唯一のアドベントカレンダーとして書き続けます←

Darkというコミュニティのアドベントカレンダーとして書いています。
もし興味を持たれた方はTwitter等で絡んで頂ければと思います。
Dark - Developers at Real Kommunity | Doorkeeper

DarkではSlackを利用して、日頃の闇を・・・ごほんごほん。日頃のコミュニケーションを行っております。
そのインテグレーションの紹介でもできたらなーって思いで今日はポエムを書きます。

DarkのSlackではインテグレーションがいくつかあります。
こんな感じです。

f:id:arata3da4:20151130235229p:plain

今日はこのSlack APIの利用について話そうかと思います。

このグループではSlackの招待はイベントに来てくださった方に招待を送っているのですが、どうしても招待を送るタイミングがイベント後になってしまって当日のタイミングでSlackに入れないということが起こってしまいます。
なので、2015/12/12のイベントから招待制にすることにしました。
そうして利用したのがSlackInというライブラリ。

github.com

これを利用して、自分のサーバに立てました。
こんな感じです。

f:id:arata3da4:20151130235708p:plain

README.mdにもある通りにコマンドを実行すれば問題なく招待ページが起動出来ます。

$npm install -g slackin
$slackin "your-team-id" "your-slack-token"

そして、nginxで一部のパスだけslackinのほうに下記のようにroutingしています。
昔インストールされているapacheのversionが2.4でsocket.ioの設定がうまく出来なかったのでnginxにしました。

server {
  listen 80;
  server_name my.domain.com;

  root /path/to/document/root;
  access_log /path/to/access/log;

  proxy_redirect                          off;
  proxy_set_header Host                   $host;
  proxy_set_header X-Real-IP              $remote_addr;
  proxy_set_header X-Forwarded-Host       $host;
  proxy_set_header X-Forwarded-Server     $host;
  proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;

  location /slack {
    auth_basic "Restricted";
    auth_basic_user_file /path/to/.htpasswd;
    proxy_pass http://localhost:3000/;
  }

  location /assets {
    proxy_pass http://localhost:3000/assets;
  }

  location /invite {
    auth_basic "Restricted";
    auth_basic_user_file /path/to/.htpasswd;
    proxy_pass http://localhost:3000/invite;
  }

  location /socket.io {
    proxy_pass http://localhost:3000/socket.io/?$args;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

いやー最高。これでポチポチ招待送ってた地味な作業もごほんごほん。

ただ、私のサーバにはBasic認証を入れているので、イベントに来ないと招待できない仕様になっています。
イベントに来なくても招待できてもいいかなぁと思いつつとりあえずはイベントに来てくださった方だけにしようかなと思いました。

興味持たれた方は是非ご参加よろしくお願いしまっすヽ(´ω`)ノ
http://yamiga.waka.ru.com/

Dark - Developers at Real Kommunity | Doorkeeper