FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

サーバーレスで簡単にSlackの招待リンクを生成する方法(NCMB スクリプト)

f:id:mbaasdevrel:20191112111420p:plain

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の招待だけであれば十分な無料枠と言えそうです。

ニフクラ mobile backend | 機能一覧ページ

f:id:mbaasblog:20200205172117p:plain

特定用途のNode.js/RubyのコードであればmBaaSを使うことで手軽な実行環境が手に入ることでしょう。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。