ವೆಬ್ಹುಕ್ಗಳು
ಒಂದು ಎನ್ವಿರಾನ್ಮೆಂಟ್ನಲ್ಲಿ ಏನು ನಡೆಯುತ್ತದೆಯೋ ಅದನ್ನು ನಡೆದಂತೆಯೇ Usher ನಿಮ್ಮ ಸರ್ವರ್ಗಳಿಗೆ ತಿಳಿಸಬಹುದು: ಯಾರಾದರೂ ಸೇರಿದಾಗ, ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ, ತಮ್ಮ ವಿವರಗಳನ್ನು ಬದಲಿಸಿದಾಗ ಅಥವಾ ಹೊರಹೋದಾಗ. ಪ್ರತಿ ಈವೆಂಟ್ ನೀವು ಆಯ್ಕೆ ಮಾಡುವ ವಿಳಾಸಕ್ಕೆ ಸಹಿ ಮಾಡಿದ POST ಆಗಿರುತ್ತದೆ, ನಿಮ್ಮ ಸರ್ವರ್ ಉತ್ತರಿಸದಿದ್ದರೆ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ.
ಎಂಡ್ಪಾಯಿಂಟ್ ಸೇರಿಸಿ
Usher Console ನಲ್ಲಿ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ತೆರೆಯಿರಿ, ನಂತರ ವೆಬ್ಹುಕ್ಗಳು → ಹೊಸ ಎಂಡ್ಪಾಯಿಂಟ್. ನಿಮ್ಮ ಒಂದು https:// ವಿಳಾಸ ನೀಡಿ ಮತ್ತು ಅದು ತಿಳಿದುಕೊಳ್ಳಬೇಕಾದ ಈವೆಂಟ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಿ. Console ಎಂಡ್ಪಾಯಿಂಟ್ನ ಸೈನಿಂಗ್ ಸೀಕ್ರೆಟ್ ಅನ್ನು (whsec_…) ಒಮ್ಮೆ ಮಾತ್ರ ತೋರಿಸುತ್ತದೆ: ಅದನ್ನು ನಿಮ್ಮ ಸರ್ವರ್ನ ಇತರ ಸೀಕ್ರೆಟ್ಗಳೊಂದಿಗೆ ಇಡಿ.
| ಈವೆಂಟ್ | ಯಾವಾಗ |
|---|---|
user.created | ಯಾರೋ ಖಾತೆ ರಚಿಸಿದರು |
user.updated | ಖಾತೆ ಬದಲಾಯಿತು: ಇಮೇಲ್, ಹೆಸರು, ಪರಿಶೀಲನೆ ಅಥವಾ ನಿಷೇಧ (SCIM ಮೂಲಕ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಡೈರೆಕ್ಟರಿ ಮಾಡಿದ ನಿಷೇಧವೂ ಸೇರಿ) |
user.deleted | ಖಾತೆಯನ್ನು ಅಳಿಸಲಾಯಿತು |
session.created | ಯಾರೋ ಸೈನ್ ಇನ್ ಮಾಡಿದರು |
session.ended | ಸೆಷನ್ ಕೊನೆಗೊಂಡಿತು: ಸೈನ್ ಔಟ್, ರದ್ದು ಅಥವಾ ಬೇಗನೆ ಅವಧಿ ಮುಗಿದಿದೆ |
ಪರೀಕ್ಷೆ ಕಳುಹಿಸಿ ಒಂದು webhook.test ಈವೆಂಟ್ ಅನ್ನು ಆ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಮಾತ್ರ ಕಳುಹಿಸುತ್ತದೆ, ಅದು ಯಾವುದಕ್ಕೆ ಚಂದಾದಾರವಾಗಿದ್ದರೂ.
ಏನು ಬರುತ್ತದೆ
POST /usher/webhooks HTTP/1.1
content-type: application/json
user-agent: Usher-Webhooks/1
webhook-id: msg_2fk7x…
webhook-timestamp: 1793643116
webhook-signature: v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE={
"type": "user.created",
"timestamp": "2026-11-02T18:11:56.412Z",
"data": {
"user": {
"id": "Qz3m…",
"email": "lena@acme.com",
"emailVerified": false,
"name": "Lena Live",
"image": null,
"banned": false,
"createdAt": "2026-11-02T18:11:56.380Z",
"updatedAt": "2026-11-02T18:11:56.380Z"
}
}
}ಈವೆಂಟ್ಗಳು ಜನರು ಮತ್ತು ಸೆಷನ್ಗಳನ್ನು ವಿವರಿಸುತ್ತವೆ, ಸೀಕ್ರೆಟ್ಗಳನ್ನು ಎಂದಿಗೂ ಅಲ್ಲ: ಟೋಕನ್ಗಳಿಲ್ಲ, ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ಗಳಿಲ್ಲ, ಪಾತ್ರಗಳಿಲ್ಲ, ಮತ್ತು ಯಾರನ್ನಾದರೂ ಏಕೆ ನಿಷೇಧಿಸಲಾಯಿತು ಎಂಬುದೂ ಇಲ್ಲ.
ಪ್ರತಿ ಡೆಲಿವರಿಯನ್ನೂ ಪರಿಶೀಲಿಸಿ
Usher Standard Webhooks ವಿವರಣೆಯ ಪ್ರಕಾರ ಸಹಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದರ ಯಾವುದೇ ಲೈಬ್ರರಿ ನಿಮಗಾಗಿ ಸಹಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಪರಿಶೀಲನೆಯಲ್ಲಿ ಸಫಲವಾಗದ ಯಾವುದನ್ನೂ ನಿರಾಕರಿಸಿ. ಐದು ನಿಮಿಷಕ್ಕಿಂತ ಹೆಚ್ಚು ದೂರದ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಕೂಡ ಲೈಬ್ರರಿಗಳು ನಿರಾಕರಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ಹಳೆಯ ಡೆಲಿವರಿಯನ್ನು ಮರುಪ್ರಸಾರ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.
// a route that receives Usher's webhooks (Node, the standardwebhooks package)
import { Webhook } from 'standardwebhooks'
const wh = new Webhook(process.env.USHER_WEBHOOK_SECRET!) // whsec_…, from Usher Console
export async function POST(request: Request) {
const body = await request.text() // the raw body: the signature covers it byte for byte
let event: { type: string; timestamp: string; data: Record<string, unknown> }
try {
event = wh.verify(body, Object.fromEntries(request.headers)) as typeof event
} catch {
return new Response('bad signature', { status: 400 })
}
// webhook-id is the same on every attempt: skip one you have handled already
if (await alreadyHandled(request.headers.get('webhook-id')!)) return new Response(null, { status: 204 })
await queue(event) // answer quickly; do the work afterwards
return new Response(null, { status: 204 })
}- 15 ಸೆಕೆಂಡುಗಳೊಳಗೆ ಉತ್ತರಿಸಿ, ಯಾವುದೇ
2xxನೊಂದಿಗೆ. ಉಳಿದ ಯಾವುದೇ ಉತ್ತರ, ರೀಡೈರೆಕ್ಟ್ ಸೇರಿ, ವೈಫಲ್ಯವೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. - ಪುನರಾವರ್ತನೆಗಳನ್ನು ನಿರೀಕ್ಷಿಸಿ. ಒಂದು ಸಂದೇಶ ಪ್ರತಿ ಪ್ರಯತ್ನದಲ್ಲೂ ತನ್ನ
webhook-idಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ; ನೀವು ಈಗಾಗಲೇ ನಿರ್ವಹಿಸಿದ್ದನ್ನು ಬಿಟ್ಟುಬಿಡಿ. - ಕ್ರಮವನ್ನು ಅವಲಂಬಿಸಬೇಡಿ. ಮರುಪ್ರಯತ್ನಗಳು ಹೊಸ ಈವೆಂಟ್ಗಳ ನಂತರ ಬರಬಹುದು.
ನಿಮ್ಮ ಸರ್ವರ್ ಉತ್ತರಿಸದಿದ್ದಾಗ
Usher 5 ಸೆಕೆಂಡು, 5 ನಿಮಿಷ, 30 ನಿಮಿಷ, 2 ಗಂಟೆ, 5 ಗಂಟೆ, 10 ಗಂಟೆ ಮತ್ತು 10 ಗಂಟೆಗಳ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ (ಒಟ್ಟು ಸುಮಾರು ಒಂದೂವರೆ ದಿನ), ನಂತರ ಕೈಬಿಡುತ್ತದೆ. Console ನ ಡೆಲಿವರಿ ಲಾಗ್ ಪ್ರತಿ ಸಂದೇಶದ ಪ್ರಯತ್ನಗಳನ್ನು ಮತ್ತು ನಿಮ್ಮ ಸರ್ವರ್ನ ಕೊನೆಯ ಉತ್ತರವನ್ನು ತೋರಿಸುತ್ತದೆ, ಮತ್ತು ಮತ್ತೆ ಕಳುಹಿಸಿ ಒಂದು ಡೆಲಿವರಿಯನ್ನು ಮೊದಲಿನಿಂದ ಆರಂಭಿಸುತ್ತದೆ.
ಹೊಸ ಸೀಕ್ರೆಟ್
Console ನಲ್ಲಿ ಹೊಸ ಸೀಕ್ರೆಟ್ ಇನ್ನೊಂದನ್ನು ರಚಿಸಿ ಒಮ್ಮೆ ಮಾತ್ರ ತೋರಿಸುತ್ತದೆ. ಮುಂದಿನ 24 ಗಂಟೆಗಳ ಕಾಲ ಪ್ರತಿ ಡೆಲಿವರಿಯಲ್ಲೂ ಎರಡು ಸಹಿಗಳಿರುತ್ತವೆ, ಪ್ರತಿ ಸೀಕ್ರೆಟ್ಗೆ ಒಂದು, ಆದ್ದರಿಂದ ಯಾವುದನ್ನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳದೆ ನೀವು ಹೊಸ ಸೀಕ್ರೆಟ್ ಅನ್ನು ನಿಯೋಜಿಸಬಹುದು. ಅದರ ನಂತರ ಹೊಸದು ಮಾತ್ರ ಸಹಿ ಮಾಡುತ್ತದೆ.
ಡೆಲಿವರಿಗಳು ಎಲ್ಲಿಂದ ಬರುತ್ತವೆ
ವೆಬ್ಹುಕ್ಗಳು Usher ನ ಎಗ್ರೆಸ್ ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ಹೊರಡುತ್ತವೆ, ಅದು ಖಾಸಗಿ ಅಥವಾ ಆಂತರಿಕ ವಿಳಾಸಗಳಿಗೆ ಸಂಪರ್ಕಿಸುವುದಿಲ್ಲ. ಎಂಡ್ಪಾಯಿಂಟ್ ಸಾರ್ವಜನಿಕ ಹೆಸರಿನಲ್ಲಿರುವ https:// ವಿಳಾಸವಾಗಿರಬೇಕು: IP ವಿಳಾಸ, ಖಾಸಗಿ ಹೆಸರು, ಅಥವಾ Usher ನ ಸ್ವಂತ ಡೊಮೇನ್ಗಳಲ್ಲಿನ ವಿಳಾಸ ಆಗಿರಬಾರದು.