Serverless Event

プログラムを自分で動かさなくても、トリガーを元にobnizクラウドが自動的にプログラムを実行します。

About

obnizを使うには外部にobnizを使うためのプログラムが必要ですが、obnizクラウドのイベント機能を使えばサーバーレスでプログラムを動作させられます。

obniz Eventはあらかじめ設定したトリガーが発生したときに登録しておいたプログラムを自動的にクラウド上で実行するサービスです。
これによりあなたは自分でプログラムを動かして無くてもトリガーとプログラムだけ設定しておくことで、何かが起きた時にクラウド内で自動的に処理を行うことができます。

Triggers

トリガーは以下から選ぶことができます。

  1. Webhook
  2. 決められたある時間(11:11など)
  3. 決められた時間の間隔(1時間毎など)
  4. obnizがオンラインになったら
  5. obnizのボタンが押されたら

Specifications

1つのobnizのライセンスに対して3つまでのイベントを登録可能です。
また、各イベントの実行は1日に120回までです。

登録できるプログラムはユーザーのマイページにあるプログラムに限定されます。プライベートファイルであっても実行可能です。

obniz Eventではトリガーが発生すると自動的に登録されたhtmlをサーバー内のブラウザで開き、javascriptを実行します。
プログラムでは実行完了を示すdone()関数を呼ぶことで終了します。
呼ばれない場合は30秒で自動的にhtmlは閉じられます。

WebhookにおいてはGET/POSTが利用可能で、query stringとpostの場合はbodyを取得することが可能です。

各実行ログはそれぞれのイベントの詳細ページで確認することができます。また、実行ログの保存上限は全てのイベントを通して1MBまでです。

Getting Start

まずはアカウントを作成します。Sign Inから行えます。
次に所有しているobnizをアカウントに追加することでライセンスを有効化します。マイページから行えます。

次にリポジトリ内にhtmlファイルを作成します。
プログラム画面から実行できる通常のプログラムと同じで大丈夫です。

イベントから実行されるときは以下の点だけ違います。

done()

実行終了を示すdone()関数を呼べるようになります。処理が完了したら呼ぶようにして下さい。
プログラム画面から実行しても正常に動作するように以下のように呼ぶと便利です。

if(typeof done === "function") {
  done();
}

req

webhookで呼ばれた時のqueryとbodyをreqオブジェクトより取得することができます。

let request = {};
if (typeof req === "object") {
  request = req;
}
console.log(request.query);
console.log(request.body);

queryとbodyはパースされた文字列です.
たとえば,https://obniz.io/events/X/XXXXXX/run?a=1&b=stringdataにアクセスされた場合,
request.param{a:1, b:"stirngdata " } になります.

bodyの文字列が{"c":true, "d":100}の場合は{c:true, d:100}がbodyに入ります.
もしJson以外の文字列がきた場合,bodyはundefinedになります.

プログラムの作成ができて動くことが確認できたらイベントに登録します。
マイページのEventsにある「Create New」から設定します。

名前や実行したいhtml。更にトリガータイプを選びます。

作成を押すことで作成されます。webhookであれば、作成後のページにwebhook用のurlが表示されます。

Test

トリガーを生成せず今すぐプログラムを実行させたい場合はイベントページのテスト実行ボタンを押すことで実行させることができます。

Logs

実行時にconsole.logなどに出力されるログはイベントページのログ一覧より確認できます。
実行日時のファイルをクリックすることで詳細を確認できます。