# טריגר Webhook

> הריצו תהליך מאפליקציה אחרת, מטופס או מהקוד שלכם בבקשת HTTP POST, והעבירו להרצה ערכים כגון פרומפט או כתובת של תמונה.

Source: https://nodaro.ai/he/docs/nodes/automate/webhook-trigger

רכיב **טריגר Webhook** מריץ תהליך כשמערכת אחרת שולחת בקשת HTTP POST לכתובת ה-Webhook של התהליך עצמו. השתמשו בו כדי להריץ תהליך ממערכת ניהול תוכן, מטופס, מכלי אוטומציה או מהקוד שלכם. הבקשה יכולה להעביר להרצה ערכים, כגון פרומפט או כתובת של תמונה. הטריגר עצמו לא עולה כלום.

- Found in: Automate › Triggers
- Output: data
- API type: `webhook-trigger`

## מתי להשתמש
- ליצור סרטון כשמערכת ניהול התוכן שלכם מפרסמת כתבה חדשה.
- לעבד תמונה שאפליקציה אחרת שולחת, כגון צילום מוצר.
- להריץ תהליך מכל כלי אוטומציה או סקריפט שיכולים לשלוח בקשת HTTP POST.
- לבנות תהליך תוכן שהקוד שלכם שולט בו.

## התחלה מהירה
### הוספת הרכיב
הקישו Tab על הקנבס ובחרו **אוטומציה › טריגרים › טריגר Webhook**.

### הגדרת הערכים שאתם מצפים להם
בחלונית ההגדרות, תחת **פרמטרי פלט**, לחצו על **הוספה** לכל ערך. תנו לכל פרמטר שם שתואם מפתח בגוף ה-JSON, ובחרו לו סוג: **טקסט**, **כתובת התמונה**, **כתובת הסרטון** או **כתובת האודיו**. כל פרמטר הופך לפלט של הרכיב.

### בניית הענף
חברו את הפלטים לרכיבים שמשתמשים בערכים, ובנו אחריהם את שאר התהליך.

### שמירת התהליך
השמירה יוצרת את כתובת ה-Webhook. סמנו את הרכיב: חלונית ההגדרות שלו מציגה את הכתובת המלאה תחת **כתובת Webhook**. לחצו על כפתור ההעתקה שלידה.

### שליחת בקשה
שלחו לכתובת גוף JSON בבקשת POST. התהליך רץ עם הערכים מהגוף.

Workflow: מערכת תוכן שולחת פרומפט וכתובת של תמונה, רכיב יצירת וידאו הופך אותם לקליפ ורכיב פלט Webhook שולח בחזרה את הסרטון המוכן.

- טריגר Webhook → יצירת וידאו
- יצירת וידאו → פלט Webhook

## פרמטרי פלט
| שדה | מה הוא עושה |
| --- | --- |
| **שם** | המפתח שנלקח מגוף ה-JSON. השם `prompt` לוקח את הערך של `"prompt"`. |
| **סוג** | מה הערך: **טקסט**, **כתובת התמונה**, **כתובת הסרטון** או **כתובת האודיו**. הסוג אומר ל-Nodaro איך להעביר את הערך לרכיבים שאחרי הטריגר. |

כל פרמטר הופך לפלט של הרכיב באותו שם, והפלט מעביר את הערך של המפתח שלו כטקסט. כשמפתח חסר בגוף הבקשה, הפלט שלו נשאר ריק.

כשאין פרמטרים, לרכיב יש פלט אחד, **מטען**. כשיש בגוף מפתח כלשהו מבין `prompt`, `imageUrl`, `videoUrl` או `audioUrl`, הפלט מעביר את הערכים של המפתחות האלה. אחרת, הפלט מעביר את הגוף כולו כטקסט JSON.

כמה מפתחות ברמה העליונה של הגוף שמורים לרשומות ההרצה של Nodaro עצמו: `appRun`, `appRenderFinal`, `continueFromFailed` ו-`runRoot`. Nodaro מסיר אותם מהגוף לפני שההרצה מתחילה, ולכן אל תשתמשו בהם כשמות של פרמטרים. אותם מפתחות נשמרים כשהם מקוננים בתוך שדות אחרים.

## שליחת בקשה
שלחו לכתובת ה-Webhook גוף JSON בבקשת POST. המפתחות של הגוף הם השמות של הפרמטרים שלכם.

```bash
curl -X POST "https://app.nodaro.ai/v1/webhooks/<token>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A lighthouse at dawn, slow push-in", "imageUrl": "https://example.com/lighthouse.jpg"}'
```

בהתקנה באירוח עצמי, השתמשו בכתובת של ההתקנה שלכם במקום `https://app.nodaro.ai`.

התגובה מראה מה קרה:

| סטטוס | משמעות |
| --- | --- |
| `202` | ההרצה התחילה. גוף התגובה כולל את ה-`executionId` של ההרצה. |
| `404` | אין Webhook שעונה בכתובת הזו, למשל כי הרכיב נמחק. |
| `403` | הטריגר הושהה דרך ה-API. |
| `409` | לתהליך כבר יש הרצה פעילה. גוף התגובה כולל את ה-`executionId` של ההרצה הזו. |
| `429` | יותר מ-10 בקשות הגיעו בדקה אחת לאסימון הזה. |

## הכתובת והאסימון שלה
- **השמירה יוצרת את הכתובת.** כשמוסיפים את הרכיב ושומרים את התהליך, Nodaro יוצר אסימון אקראי באורך 64 תווים ואת הכתובת `POST /v1/webhooks/<token>`. לפני השמירה הראשונה, חלונית ההגדרות מציגה ״שמרו את התהליך כדי ליצור את כתובת הטריגר״.
- **העתיקו אותה מחלונית ההגדרות.** אחרי השמירה, החלונית מציגה את הכתובת המלאה תחת **כתובת Webhook**, עם כפתור העתקה. מתחתיה מוצג האסימון מקוצר, עם כפתור **העתקה** משלו.
- **הרכיב מציג כתובת מקוצרת.** על הקנבס, הרכיב מציג את הכתובת רק עם תחילת האסימון, כגון `…/v1/webhooks/a1b2c3d4••••`. כך צילומי מסך של הקנבס לא חושפים את האסימון.
- **רק בעל התהליך רואה אותה.** הכתובת שייכת לבעל התהליך. אנשים אחרים שיכולים לערוך את התהליך רואים את הודעת השמירה במקום הכתובת.
- **הכתובת לא משתנה.** האסימון נוצר פעם אחת ונשמר בכל השמירות הבאות, ולכן הכתובת שנתתם למערכת אחרת ממשיכה לעבוד.
- **מחיקת הרכיב מבטלת את הכתובת.** כשמוחקים את רכיב טריגר Webhook ושומרים, הכתובת מפסיקה לעבוד.
- **קבלו את הכתובת דרך ה-API.** הנתיב `GET /v1/workflows/<id>/triggers` מחזיר את הכתובת של כל טריגר כנתיב, `/v1/webhooks/<token>`, ואת האסימון שלו. הטריגר של הרכיב הזה הוא הטריגר שה-`config.nodeId` שלו שווה למזהה של הרכיב.

הכתובת ציבורית, והאסימון הוא ההגנה היחידה שלה. כל מי שהכתובת בידיו יכול להריץ את התהליך, וכל הרצה מחויבת על חשבון בעל התהליך. שמרו את הכתובת בסוד.

## מגבלות
- **10 בקשות בדקה** לכל אסימון. בקשות נוספות נדחות עם `429`.
- **הרצה אחת בכל פעם.** כל עוד לתהליך יש הרצה פעילה, בקשה חדשה נדחית עם `409`.

## מה רץ בהרצה שמתחילה מ-Webhook
טריגר שמחובר לרכיבים מריץ רק את הענף שלו: הרכיבים שאחרי הטריגר, וכל רכיב שהם צריכים כקלט. טריגר שלא מחובר לשום דבר מריץ את התהליך כולו. לכן בתהליך אחד יכולים להיות כמה טריגרים, כגון רכיב טריגר Webhook ורכיב [טריגר מתוזמן](https://nodaro.ai/docs/nodes/automate/schedule-trigger), וכל אחד מהם מתחיל ענף משלו.

רכיב נחשב מחובר כשיש אליו חיבור שמצויר על הקנבס, כשהוא נמצא בתוך רכיב [קבוצה](https://nodaro.ai/docs/nodes/automate/group) שהטריגר מזין, או כשהוא מחובר דרך מיפוי שדות. הרצה ידנית מהעורך, הרצה דרך ה-API והרצה של אפליקציה שפורסמה אף פעם לא מוגבלות לענף של טריגר.

## קרדיטים
רכיב טריגר Webhook לא עולה כלום. בכל הרצה משלמים על הרכיבים שרצים בה, והחיוב הוא על חשבון בעל התהליך.

## טיפים
- **התאימו את השמות.** השתמשו בשמות המפתחות המדויקים שהמערכת האחרת שולחת, כולל אותיות גדולות וקטנות.
- **בדקו עם בקשה אחת.** שלחו בקשה אחת עם `curl` לפני שאתם מחברים מערכת בפרודקשן.
- **שלחו את התוצאה בחזרה.** סיימו את התהליך ברכיב [פלט Webhook](https://nodaro.ai/docs/nodes/publish/webhook-output) כדי לשלוח את התוצאה לשרת שלכם.
- **הריצו גם לפי תזמון.** הוסיפו רכיב [טריגר מתוזמן](https://nodaro.ai/docs/nodes/automate/schedule-trigger) כדי להריץ את אותו תהליך בזמנים קבועים.

ראו את דף ה-API [Webhooks](https://nodaro.ai/docs/developers/api/webhooks) לתיאור ה-API המלא.

## שאלות נפוצות

### איך מריצים תהליך Nodaro מאפליקציה אחרת?

הוסיפו לתהליך רכיב טריגר Webhook ושמרו את התהליך. השמירה יוצרת כתובת Webhook. כשהאפליקציה האחרת שולחת לכתובת הזו בקשת HTTP POST עם גוף JSON, התהליך רץ.

### איפה נמצאת כתובת ה-Webhook?

שמרו את התהליך וסמנו את רכיב טריגר Webhook. חלונית ההגדרות שלו מציגה את הכתובת המלאה תחת השדה כתובת Webhook, עם כפתור העתקה. הכתובת מסתיימת בנתיב ‎/v1/webhooks/‎ ואחריו האסימון, והיא לא משתנה בשמירות הבאות. קוד יכול לקבל אותה עם GET ‎/v1/workflows/<id>/triggers.

### איך מעבירים לתהליך פרומפט או תמונה?

בחלונית ההגדרות של רכיב טריגר Webhook, הוסיפו פרמטר פלט לכל ערך, עם שם שתואם מפתח בגוף ה-JSON ועם סוג, כגון טקסט או כתובת התמונה. כל פרמטר הופך לפלט של הרכיב, שמעביר את הערך של המפתח הזה.

### האם כתובת ה-Webhook מאובטחת?

האסימון שבכתובת של רכיב טריגר Webhook הוא ההגנה היחידה שלה. כל מי שהכתובת בידיו יכול להריץ את התהליך, וכל הרצה מחויבת על חשבון בעל התהליך. שמרו את הכתובת בסוד. כדי לבטל אותה, מחקו את הרכיב ושמרו את התהליך.

### כמה בקשות רכיב טריגר Webhook יכול לקבל?

רכיב טריגר Webhook מקבל עד 10 בקשות בדקה לכל אסימון. בקשה שמגיעה כשלתהליך כבר יש הרצה פעילה נדחית עם סטטוס 409.
