n8n
Webhookには有料プランが必要です。上限と詳細はWebhook自動化をご覧ください。
n8nはセルフホストまたはクラウドで使える自動化プラットフォームです。TellDoneをWebhookノードでn8nに接続します。n8nインスタンスにはインターネットからアクセス可能なHTTPS URLが必要です。
セットアップ
n8nで
- ワークフローにWebhookノードを追加
- HTTP MethodをPOSTに設定
- パスを設定(例:
telldone) - (任意)Header Authを有効化: Name =
Authorization、Value = シークレットトークン - Production URL(テストURLではない)をコピー
TellDoneで
- 設定 > 連携 > Webhook自動化へ進む
- 新しい自動化をタップしてn8nの本番URLを貼り付け
- n8nでHeader Authを有効にした場合は、TellDoneの認証ヘッダーとして同じトークンを入力
- 送信するデータタイプを選択
- 保存をタップしてからテストをタップし、サンプルのペイロードを送信
n8nの実行ログを確認してください。"test": trueを含むペイロードが見えるはずです。
イベントタイプによるルーティング
Webhookノードの後にSwitchノードを追加してデータをイベントタイプでルーティング:
- ルーティングフィールド: 入力データの
event値 - ルール1:
note.createdに等しい - ノートアクションにルーティング - ルール2:
task.createdに等しい - タスクアクションにルーティング - ルール3:
calendar_event.createdに等しい - カレンダーアクションにルーティング - ルール4:
report.createdに等しい - レポートアクションにルーティング
各Switch出力を適切なアクションノード(Todoist、Google Calendar、Slackなど)に接続してください。
便利な式
アクションノードを設定するときに、これらのn8n式でTellDoneデータにアクセスしてください:
| 式 | 説明 |
|---|---|
{{ $json.data.title }} | ノート、タスク、イベントのタイトル |
{{ $json.data.tags.join(', ') }} | カンマ区切り文字列としてのタグ |
{{ $json.data.priority }} | 優先度レベル |
{{ $json.data.due_date }} | 期限(タスク) |
{{ $json.data.summary }} | AI生成の要約(ノート) |
{{ $json.event }} | イベントタイプ |
各データタイプの全フィールドリストはWebhook自動化 - 送信内容をご覧ください。
テストイベントのフィルタリング
Webhookノードの直後にIFノードを追加:
- 条件:
{{ $json.test }}が真ではない - True パス: ワークフローの残り
- False パス: No Operation(テストイベントを破棄)
ワークフローの例
- Webhook - Switch - Todoist: 優先度と期限付きでタスクを作成
- Webhook - Switch - Google Calendar: 時刻、場所、参加者付きでイベントを作成
- Webhook - Switch - Slack: 日次レポートをチャンネルに投稿
- Webhook - Switch - Google Sheets: すべてのノートをスプレッドシート行として記録
- Webhook - Switch - Notion: タグと要約付きでノートを保存
Webhook署名の検証(任意)
n8nのCodeノードは解析済みのJSONオブジェクトのみを公開し、リクエストのrawボディは公開しません。署名の検証にはTellDoneが署名した正確なrawバイトが必要です。実際には、多くのn8nユーザーはHMAC検証の代わりにデフォルトのAuthorization: <signing_secret>ヘッダーを認証に使っています。
本番利用では、HMAC-SHA256署名を確認することでWebhookデータが本当にTellDoneから来たことを検証できます。Webhookノードの直後にCodeノードを追加してください:
const crypto = require('crypto');
const secret = 'whsec_your_signing_secret_here';
const signature = $input.first().headers['x-lp-signature'];
const timestamp = $input.first().headers['x-lp-timestamp'];
const body = JSON.stringify($input.first().json);
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');
if (signature !== expected) {
throw new Error('Invalid webhook signature');
}
// Reject timestamps older than 5 minutes
const age = Math.floor(Date.now() / 1000) - parseInt(timestamp);
if (age > 300) {
throw new Error('Webhook timestamp too old');
}
return $input.all();
whsec_your_signing_secret_hereを、TellDoneで自動化を作成したときにコピーした署名シークレットに置き換えてください。
切断
n8nへのデータ送信を停止するには:
- n8nでワークフローを無効化する、または
- TellDoneの設定 > 連携 > Webhook自動化で自動化を無効化または削除
関連項目
- Webhook自動化 - ペイロード形式、配信上限、セキュリティ
- Zapier - クラウド自動化代替
- Make - クラウド自動化代替