Slackで招待リンクを生成する機能があるのですが、突然期限切れになってしまうことがあります(本来は期限がないのですが)。招待メールを送信するWebアプリケーションもあるのですが、設置するのが面倒なのでmBaaSのスクリプト機能を使って実現してみました。
必要な情報
Slackの招待メールで必要なのはメールアドレス、後はSlackのトークンです。
サーバ側のコード
サーバ側で実行するnode.jsのコードは以下になります。
const request = require('superagent'); module.exports = async (req, res) => { const response = await request .post('https://slack.com/api/users.admin.invite') .send({ token: 'xox...81c', email: req.body.email, resend: true }) .set('Content-Type', 'application/x-www-form-urlencoded'); res.send(response.body); }
クライアントのコード
クライアント側ではメールアドレスを入力してもらって、スクリプトを呼び出します。
const ele = document.querySelector('#slack-invite'); ele.onclick = async function(e) { const email = document.querySelector('#email').value; e.preventDefault(); const res = await ncmb.Script .data({ 'email': email }) .exec("POST", "invite.js") const json = JSON.parse(res.body) if (json.ok) { alert('招待状を送信しました。メールボックスを確認してください。ご参加を楽しみにお待ちします!'); document.querySelector('#email').value = ''; } else { alert(`エラーが発生しました: ${res.body} こちらをTwitterでご連絡ください`); } };
まとめ
元々この機能はHerokuで実現していたのですが、無料枠を使い果たしてしまいました。ついでFaaSを試したのですが、やりたいことの割に複雑な仕組みになるのが嫌で、結果的にmBaaSのスクリプトを選択しています。現在、月5万回までは無料で呼び出せるので、Slackの招待だけであれば十分な無料枠と言えそうです。
特定用途のNode.js/RubyのコードであればmBaaSを使うことで手軽な実行環境が手に入ることでしょう。