n8n 連携
n8n を使えば、今後の収集日を自動的に処理できます。プッシュ通知、Slack や Matrix のメッセージ、スマートホームのアクション、独自のワークフローなどに活用できます。連携には binable の Webhook の仕組みを使います。設定した日数後に収集が予定されると、binable が毎日 18:00 に n8n ワークフローへ HTTP POST を送信します。
1. API キーを作成
Webhook を作成するには、まず API キーが必要です。
2. n8n で Webhook Trigger を作成
n8n ワークフローの最初のノードとして Webhook トリガーノードを追加します:
- HTTP Method:
POST - Path: 任意に指定できます。例:
muell-abfuhr - Authentication: 空欄のままで構いません。署名の検証は次の手順で行います
- Respond:
Immediately
ワークフローを有効にします(右上の「Active」を切り替え)。これで n8n が受信用 URL を提供します。Webhook の完全な URL は次のとおりです:
https://<deine-n8n-instanz>/webhook/muell-abfuhr
3. binable に Webhook を登録
binable API で n8n の Webhook URL を登録します:
curl -X POST https://binable.app/api/webhook \
-H "Authorization: ApiKey <dein-api-key>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://<deine-n8n-instanz>/webhook/muell-abfuhr",
"daysBeforeCollection": 1,
"street": "Musterstraße",
"houseNumber": "1a",
"zip": "12345",
"city": "Musterstadt",
"country": "DE"
}'
レスポンスには secret が含まれます。これは任意の署名検証に必要です。
4. ペイロードを処理
収集が予定されている場合、binable は次のボディで n8n の Webhook に POST を送信します:
{
"event": "upcoming_collection",
"sent_at": "2024-01-14T18:00:00+00:00",
"days_until": 1,
"address": {
"street": "Musterstraße",
"houseNumber": "1a",
"zip": "12345",
"city": "Musterstadt",
"country": "DE"
},
"collections": [
{ "type": "Restmüll", "date": "2024-01-15" },
{ "type": "Papier", "date": "2024-01-15" }
]
}
n8n では、各フィールドを Webhook ノードから直接利用できます。その後に Send Email、Slack、Telegram、ntfy、独自システム向けの HTTP Request ノードなど、任意のアクションノードを接続してください。
5. 任意:署名の検証
受信する各リクエストには X-Binable-Signature: sha256=<hmac> ヘッダーが含まれます。リクエストが本当に binable から送られたものかを確認するには、n8n のアクションの前に Code ノードを追加して署名をチェックできます:
const crypto = require('crypto');
const secret = '<dein-webhook-secret>';
const body = JSON.stringify($input.first().json);
const sig = $input.first().headers['x-binable-signature'];
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(body).digest('hex');
if (sig !== expected) throw new Error('Invalid signature');
return $input.all();
Webhook API 全体の詳細は、Webhook 連携のドキュメントをご覧ください。 Webhook-Integrationsdokumentation.