വെബ്ഹുക്കുകൾ
ഒരു എൻവയോൺമെന്റിൽ സംഭവിക്കുന്നത് സംഭവിക്കുമ്പോൾത്തന്നെ Usher-ന് നിങ്ങളുടെ സെർവറുകളെ അറിയിക്കാം: ആരെങ്കിലും ചേരുന്നു, സൈൻ ഇൻ ചെയ്യുന്നു, വിവരങ്ങൾ മാറ്റുന്നു അല്ലെങ്കിൽ വിട്ടുപോകുന്നു. ഓരോ ഇവന്റും നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന ഒരു വിലാസത്തിലേക്കുള്ള സൈൻ ചെയ്ത ഒരു POST ആണ്; നിങ്ങളുടെ സെർവർ മറുപടി നൽകിയില്ലെങ്കിൽ വീണ്ടും ശ്രമിക്കും.
ഒരു എൻഡ്പോയിന്റ് ചേർക്കുക
Usher Console-ൽ എൻവയോൺമെന്റ് തുറക്കുക, തുടർന്ന് വെബ്ഹുക്കുകൾ → പുതിയ എൻഡ്പോയിന്റ്. നിങ്ങളുടെ ഒരു https:// വിലാസം നൽകി, അത് അറിയേണ്ട ഇവന്റുകൾ തിരഞ്ഞെടുക്കുക. എൻഡ്പോയിന്റിന്റെ സൈനിംഗ് സീക്രട്ട് (whsec_…) Console ഒരിക്കൽ മാത്രം കാണിക്കും: നിങ്ങളുടെ സെർവറിന്റെ മറ്റ് സീക്രട്ടുകൾക്കൊപ്പം അത് സൂക്ഷിക്കുക.
| ഇവന്റ് | എപ്പോൾ |
|---|---|
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-ന്റെ സ്വന്തം ഡൊമെയ്നുകളിലെ വിലാസമോ അല്ല.