WebhookトリガーでTranseptを自動化する
ワークフローは通常、「実行」を押すと始まります。Webhookトリガーは、この操作をURLに置き換えます。HTTPリクエストを送信できるシステムにそのURLを設定するだけで、ワークフローが自動的に実行されます。
目次
ワークフローをWebhookトリガーに切り替えるには?
ビルダーで保存済みのワークフローを開き、上部にあるトリガーカード(「手動で実行」と表示されているカード)を確認します。これは切り替えスイッチになっています。デフォルトは手動で、ご自分で「実行」を押して開始します。トリガーURLを選択すると、ワークフローに専用URLが発行され、外部システムがそのURLにPOSTすると自動的に実行が開始されます。トリガーは保存済みのワークフローに設定するものなので、まずワークフローを保存してください。保存前の下書きでは「トリガーURL」オプションは無効のままです。WebhookトリガーはStarterプランとProプランで利用できます。Freeプランでは「トリガーURL」オプションは利用できず、ダイアログには代わりにプランを見るが表示されます。Freeプランに移行する前に作成されたトリガーは、削除できるように表示されたまま残りますが、StarterプランまたはProプランに戻るまで作動しません。
Webhook URLを取得・再生成するには?
カードをトリガーURLに切り替え、実行対象(下記参照)を設定して保存します。Transeptはこのワークフロー専用のシークレットURLを発行し、1回だけ表示します。保存されるのはハッシュだけで、完全なURLを再表示することはできないため、その場でコピーしてください。ごく簡易な送信元ではヘッダーを設定できないため、シークレットはヘッダーではなくURLそのものに含まれています。そのためURLはパスワードと同じように扱ってください。URLを知っている人なら誰でも実行を開始できます。
あとでカードを開き直すと、完全なURLの代わりにマスクされたプレフィックス(whk_live_…)とURLをローテーションボタンが表示されます。ローテーションすると新しいURLが発行され、確認した瞬間に古いURLは使えなくなります。漏洩したリンクはこの方法で無効にします。トリガーを削除せずにオフにすることも、完全に削除することもできます。カードには前回の実行日時も表示されます。
実行のたびに何が処理されますか?
URLへのアクセス時にワークフローが何を処理するかは、2つの設定によって決まります。
Notionデータベースのオートメーションから実行するには?
Notionデータベースのオートメーションは、Webhookを送信アクションでトリガーを呼び出せます。アクションの送信先にトリガーURLを指定すると、オートメーションが実行されるたびに、トリガー元のページに対してTranseptがワークフローを実行します。この機能を利用する前に、知っておくべき点が2つあります。
1つ目は、Notionのオートメーションは本文の編集だけでは作動せず、プロパティの変更(または新規ページの作成)で作動するという点です。そのため、ページのテキストを編集しただけでは何も実行されない場合があります。確実なのは、オートメーションが監視するステータスプロパティを使う方法です。ステータスを(たとえば「翻訳準備完了」に)切り替えると、その変更が合図になります。
2つ目は、NotionのWebhookはページを指定するだけで、ページのコンテンツは送らないという点です。そのため、Transeptはご自分のNotion連携を通してページを読み込みます。この連携には、Notion側でデータベースへのアクセス権を付与しておく必要があります。2つの手順(Notionを連携する、インテグレーションにデータベースを共有する)は、APIでTranseptを自動化するの「Notionトリガー:Transeptにページへのアクセス権を付与するには?」で説明しています。どちらかを省くと、作動のたびにアクセスエラーで拒否されます。
Zapier、n8n、スクリプトから実行するには?
HTTP POSTを送信できるものであれば、Zapierやn8nのステップ、CIジョブ、ビルド終了時のcurlなど、何からでもトリガーを実行できます。対象が特定のドキュメントの場合、リクエストボディは無視されるため空のPOSTで十分です。どのページが変更されたかを知るためにボディを読み取るのは、Notionページが対象の場合だけです。Authorizationヘッダーは不要です。URL全体がシークレットだからです。
実行されるとどうなりますか?
デフォルトでは、作動するたびにすべての言語バージョンでワークフローが実行されます。「変更箇所のみ」がオンの場合は、前回の実行以降に原文が変更されたブロックだけが再翻訳されるため、小さな修正ならドキュメント全体ではなく数ブロック分の費用で済みます。この方法で開始された実行でも、アプリのエディターとまったく同じようにクレジットが請求されます。残高が足りない場合は実行が開始されず、請求もされません。
レビューを待つように設定されたステップでは、通常どおり処理が止まります。実行はそのゲートまで翻訳を進めたところで保留になり、その言語がエディターの「レビュー準備完了」パネルに表示されるので、そこで承認します。自動化でレビューゲートがスキップされることはありません。また、対象のNotionページを読み取れない場合(多くはデータベースがインテグレーションに共有されていないことが原因です)、トリガーカードに直近の失敗が「Notionページを読み取れませんでした」というメモとしてタイムスタンプ付きで表示されるため、作動しても何も起きなかった理由を確認できます。
Webhook自体にコンテンツを含めることはできますか?
はい。トリガーの対象を「リクエストボディ」に設定すると、URLにPOSTした内容がそのままドキュメントになります。未加工のMarkdown、HTML、プレーンテキスト(対応するContent-Typeを指定して送信)、または{"content": "…", "content_type": "markdown"}のようなJSONに対応しています。配信ごとに新規ドキュメントを作成するか、1つのドキュメントを更新するかは、トリガーごとに選べます(更新では内容の位置合わせが行われ、変更されたブロックだけが再翻訳されます)。これにより、メール配信プラットフォームやZapier/n8nのステップ、任意のスクリプトから、手作業でアップロードせずにテンプレートや記事を翻訳ワークフローへ直接送り込めます。再送されたリクエストは、24時間は重複分が除外されます。厳密に制御するには、JSONにexternal_id(メッセージID)を含めてください。リクエストボディの上限は10MBです。
解決しない場合は、アプリ内のLiteressに質問するか、[email protected]までご連絡ください。