Webhooks
Låt Meshy skicka en POST-förfrågan till din server när en API-uppgift gör framsteg eller slutförs, så att du slipper polla.
Varför använda webhooks
Webhooks kräver mindre arbete och kostar mindre än att polla API:et för varje uppgifts status. Meshy skickar varje uppdatering i samma stund den sker, så du får den snabbare, och webhooks skalar bättre än polling. Du skickar också färre förfrågningar, vilket håller dig längre från dina rate limits.
Konfigurera en webhook
För att lägga till en webhook, följ dessa steg:
- Öppna Webhooks-sidan i Developer Platform, och klicka på Create Webhook.
- Under Payload URL, ange den URL som ska ta emot leveranserna. Meshy levererar endast över
https://. - Behåll en kopia av Webhook Secret som dialogrutan fyller i. Varje leverans innehåller den, så att din server kan kontrollera att en förfrågan kom från Meshy. För en webhook du redan har kan du klicka på ögonikonen i kolumnen Secret för att se den.
- Välj Active, och klicka på Confirm.
Varje konto kan ha 5 aktiva webhooks, och 10 totalt. Varje aktiv webhook tar emot statusuppdateringar för alla dina API-uppgifter.
För att testa en webhook med en server på din dator, se Testa på din dator.
Hantera en leverans
För att acceptera en leverans, svara med en status under 400, till exempel 200 eller 202. Meshy väntar i cirka 25 sekunder på svaret, så spara leveransen och svara först. Utför det tidskrävande arbetet efteråt, till exempel att ladda ner modellen.
En status på 400 eller högre, eller inget svar alls, räknas som en misslyckad leverans. Meshy försöker igen med längre väntetider mellan försöken, upp till 4 gånger för en IN_PROGRESS-uppdatering och upp till 9 gånger för en slutgiltig status. Om 20 uppdateringar i rad misslyckas vid varje försök kan Meshy inaktivera webhooken. För att slå på den igen, redigera den på Webhooks-sidan och välj Active.
Skriv din kod för dessa fall:
- Leveranser kan komma i fel ordning. En
IN_PROGRESS-leverans kan komma efter den slutgiltiga, så låt den inte ersätta en slutgiltig status. - Samma uppdatering kan komma mer än en gång. Hantera varje par av
idochstatusendast en gång. - Vem som helst som känner till din URL kan skicka en förfrågan till den. Jämför
X-MESHY-API-WEBHOOK-SECRET-KEYmed din kopia av hemligheten, och avvisa en förfrågan som inte matchar.
Om en uppgifts slutgiltiga leverans inte har anlänt efter ungefär dubbla uppgiftens normala tid, hämta uppgiften från dess GET-endpoint. För normala tider och hur länge du ska vänta, se Task lifecycle.
Testa på din dator
Meshy levererar endast till en publik https://-URL, så den kan inte nå en server på din dator direkt. För att testa kod på din dator, vidarebefordra en publik URL till den med en webhook-proxy. Dessa steg använder smee.io, och alla webhook-proxytjänster fungerar på samma sätt.
-
Öppna smee.io och klicka på Start a new channel. Kopiera URL:en under Webhook Proxy URL.
-
Om du inte redan har smee-klienten, installera den:
npm install --global smee-client -
Vidarebefordra kanalen till din server. Ersätt
WEBHOOK_PROXY_URLmed din webhook-proxy-URL:smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000Utdatan ser ut så här, där
WEBHOOK_PROXY_URLär din webhook-proxy-URL:Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook Connected WEBHOOK_PROXY_URLLåt den fortsätta köra medan du testar. För att sluta vidarebefordra, tryck på Ctrl+C. Din server tar emot leveranserna på port
3000på sökvägen/webhook, så konfigurera din kod för att lyssna där. -
På Webhooks-sidan, skapa en webhook med webhook-proxy-URL:en som dess Payload URL.
Leverans-payload
Meshy skickar en leverans medan en uppgift är IN_PROGRESS, och ytterligare en när uppgiften når en slutgiltig status. En uppgift kan nå sin slutgiltiga status utan en IN_PROGRESS-leverans.
Varje leverans är en POST-förfrågan till din payload-URL med dessa headers:
| Header | Värde |
|---|---|
X-MESHY-API-WEBHOOK-SECRET-KEY | Webhookens hemlighet |
X-MESHY-API-WEBHOOK-USER-ID | ID:t för den Meshy-användare som äger webhooken |
Meshy-Webhook-Version | v1, formatet för innehållet |
Content-Type | application/json |
User-Agent | MeshyAPIWebhook/1.0.0 |
JSON-innehållet är uppgiftsobjektet. Det är samma objekt som uppgiftens GET-endpoint returnerar, förutom progress. En leverans skickar progress som ett av dessa värden:
50medan uppgiften ärIN_PROGRESS100när uppgiften lyckas0när uppgiften misslyckas eller avbryts
För fälten i varje uppgiftsobjekt, med ett exempel, se följande avsnitt: