カスタムアクションの概要
カスタムアクションの概要
サンプルアプリ
独自のカスタムアクションアプリを構築したい場合は、サンプルアプリを使用して開始できます。
カスタムアクションは、統合をプログラミング可能な UI コンポーネントとして Frame.io に直接構築する方法です。これにより、Webhook と同じ、基盤となるイベントルーティングを活用して、ユーザーがアプリ内でトリガーできる多彩なワークフロークラスが実現します。現在、カスタムアクションはアセットに対して使用でき、次の画像に示すように、任意のアセットで使用可能なコンテキスト/右クリックドロップダウンメニューに表示されます。

アセットは、S3 内のファイルとその Frame.io でのコンテキストの包括的な表現です。これには、トランスコード、ユーザー/チーム/プロジェクトのコンテキスト、メタデータが含まれます。ユーザーがアセットでカスタムアクションをクリックすると、指定された URL に Frame.io がペイロードを送信します。受信アプリケーションは、受信確認として HTTP ステータスコードで応答したり、Frame.io で追加の UI をレンダリングできるカスタムコールバックで応答したりできます。
カスタムアクションのセットアップ
権限を確認してください
チーム用のカスタムアクションを作成するには、チームマネージャーの権限が必要です。アクセス権がない場合は、管理者に権限の変更を依頼してください。
カスタムアクションは、developer.frame.io の「カスタムアクション」エリアで設定できます。アクションには以下が必要です。
クリック - Frame.io から返されるペイロードの内容
ユーザーがカスタムアクションをクリックすると、「URL」フィールドに指定した URL にペイロードが送信されます。
このペイロードを使用して、以下を識別できます。
- クリックされたカスタムアクション
- クリックされたリソース
- アクションを実行したユーザー
やり取りについて
interaction_id は、時間とともに変化するやり取りの追跡に役立つ一意の識別子として提供されます。ユーザーへのレスポンスが不要の場合は、ステータスコード 200 を返すだけで完了です。オプションですが、簡単な成功メッセージやエラーアラートなど、アクションの結果に関する情報を含めることをお勧めします。カスタムアクションは、メッセージコールバックをサポートしています。
再試行とタイムアウト
アプリケーションは 5 秒未満での応答を予期しており、成功レスポンスを待機している間に再試行を最大 5 回試みます。カスタムアクションを介してトリガーされた後、すぐにレスポンスを返し、すべてのアクションを非同期的に実行するのが理想的です。
メッセージコールバックの作成
Webhook イベントへの HTTP レスポンスでは、Frame.io UI で開始ユーザーに返されるメッセージを記述する JSON オブジェクトを返すことができます。メッセージを作成し、それがどのように表示されるかを確認したい場合は、カスタムアクションビルダーをお試しください。これを使用すると、メッセージのコールバックやフォームを設定し、それが Frame.io web アプリでどのように表示されるかを確認できます。
オブジェクトの例を次に示します。
これにより、次のようなアラートがユーザーに表示されます。

メッセージは、アクションライフサイクルのループを閉じる簡単な方法であり、アクションを起こしたユーザーに対し、コンテキストの切り替えを求めることなく、可変コンテキストを提供します。
多くのユースケースはこれで十分ですが、初期ペイロードとそれに続く Frame.io API 呼び出しでは、受信アプリケーションに十分なコンテキストが提供されない場合があります。このようなシナリオ向けに、フォームコールバックもサポートされています。
フォームコールバックの作成
プロセスを開始する前に、さらに情報が必要だとします。例えば、追加の詳細や設定が必要なコンテンツをシステムにアップロードしている場合について考えてみましょう。レスポンスでフォームについて「説明」し、それをユーザーに実際に表示できます。それに対し、ユーザーが入力します。そして、すぐに送り返されます。
アクションを開始したユーザーが入力して送信できるフォームを Frame.io UI でレンダリングするサンプルフォームを次に示します。

ユーザーがこのフォームを送信すると、最初の POST と同じ URL でイベントが返されます。
フォームに追加したすべてのカスタムフィールドは、Frame.io によって送信された JSON ペイロードの data セクションに示されます
interaction_id を使用して、最初のリクエストとこの新しいフォームデータをマッピングします。ここでも、必要に応じて、メッセージ(または別のフォーム)を返すこともできます。
アクション、フォーム、メッセージをつなぐことで、外部システムのビジネスロジックを使用して、Frame.io でアセットワークフロー全体を効果的にプログラムできます。
イマジネーションを発揮しましょう。可能性は無限大です。
フォームの詳細情報
フォームでもメッセージと同様、フォーム上部に表示される title および description 属性をサポートしています。このほか、各フォームフィールドは次の基本属性を受け付けます。
type— Frame.io UI に、予期するデータ型、コンポーネント、レンダリングを指示します。label— UI にフィールドの上のヘッダーとして表示されます。name— 後続のペイロードでフィールドの識別に使用されるキーです。value— フィールドに事前入力する値です。
サポートされているフィールドの種類
テキストフィールド は、追加パラメーターのないシンプルなテキストフィールドです。
テキストエリア は、追加パラメーターのないシンプルなテキストエリアです。
選択リスト
では、ユーザーが選択できる候補リストを定義します。options リストを含める必要があります。各メンバーには、人間が読んでわかる name とマシンが解析可能な value が含まれている必要があります。
カスタムアクションと Frame.io 権限モデル
Webhook とカスタムアクションには特別な権限モデルがあり、これらはチームやアカウントに存在する特定のユーザーにではなく、__チーム__に属します。 これは以下を意味します。
- 管理者またはチームマネージャーであれば、チームにカスタムアクションを作成できる。
- 管理者またはチームマネージャーであれば、チームに存在するカスタムアクションを変更または削除できる。 変更すると、変更の結果がすべてのユーザーにただちに示されます。
セキュリティ
デフォルトで、すべてのカスタムアクションには、作成時に生成された署名鍵があります。これは設定できません。このキーを使用して、リクエストが Frame.io から発生していることを確認できます。
検証
POST リクエストには以下が含まれます。
タイムスタンプは、リクエストが Frame.io のネットワークを出る際に署名された時刻です。これは、リプレイ攻撃を防ぐために使用できます。この時刻が現地時間から 5 分以内であることを確認することをお勧めします。
署名は、カスタムアクションの初回作成時に提供された署名鍵を使用する HMAC SHA-256 ハッシュです。
署名の検証
- HTTP ヘッダーから署名を抽出します。
- バージョン、配信時刻、リクエスト本文を組み合わせて、署名するメッセージを作成します。
v0:timestamp:body
- 署名シークレットを使用して、HMAC SHA256 署名を計算します。
- 注意:指定された署名には、接頭辞
v0=が付きます。現在、Frame.io で署名リクエスト用に用意されているのはこれだけです。計算された署名には、この接頭辞を追加する必要があります。
- 比較します。