להפוך 5 קריאות HTTP למודול אחד נקי - מתי לבנות מודול משלכם ב-Make
כשעובדים עם Make ומגיעים למערכת בלי אינטגרציה רשמית, נתקעים עם חמישה צמתי HTTP שקשה לתחזק. אבי ברונר לימד את המוצא: לבנות Custom App - מודול משלכם. שלוש סיבות מתי זה משתלם: מערכת בלי אפליקציה רשמית, פעולה שדורשת שרשור קריאות (טוקן ואז פעולה), והסתרת לוגיקה רגישה מהלקוח. הוא בנה חי מודול שמאחד שלוש קריאות של קארדקום (חיוב, זיכוי, הוראת קבע) למודול אחד. העיקרון הנצחי: כשכלי לא נותן לך משהו - אתה עוטף בעצמך. 7 הפרומפטים למטה בונים לכם מודול מאפס.

הערת הכתבת: הסשן הזה (8.10.2024) הוא צלילה טכנית עמוקה לבניית Custom Apps ב-Make, והפיצ'ר הזה חי וקיים לגמרי - הטכניקה שאבי לימד (Base, Connection, RPC, איחוד קריאות, מודול-בלי-API) עדיין עובדת. שתי נקודות להיום: קודם, לוגיקה מורכבת שאבי היה שולח ל-n8n אפשר היום פשוט לבנות בקוד ישירות, וכלים אגנטיים כמו Claude Code מקצרים דרמטית את בניית הצינורות האלה. שנית, ותמיד - העיקרון שמאחורי כל הסשן נצחי: כשכלי לא נותן לך משהו, אתה עוטף אותו בעצמך ליחידה נקייה ומתוחזקת. זה נכון ב-Make, בקוד, ובכל טכנולוגיה. הפרומפט הפתוח למטה עוזר לאבחן איפה אצלכם שווה לבנות מודול - נכון להיום.
רוב אנשי האוטומציה מכירים את התסכול: מערכת שאין לה אפליקציה רשמית ב-Make, ואתה נאלץ לגרור חמישה, שישה, שבעה צמתי HTTP - וכל שינוי קטן הופך לסיוט תחזוקה. אבי ברונר הגיע למפגש ה-15 של אוטוטיוזדיי כדי ללמד את הרמה הבאה: לבנות Custom App, מודול משלך. זה סשן טכני-עמוק, לבנאים - איך לוקחים לוגיקה מסובכת ועוטפים אותה ליחידה אחת נקייה, יעילה, ומוגנת. זה הסשן שמפריד בין "משתמש של Make" ל"בונה ב-Make".

המסע: 7 תחנות
כל תחנה = מה קרה בסשן + הפרומפט שאורז את זה בשבילכם
מה זה Custom App ומתי לבנות אחד
אבי פתח מהיסוד: מודול ב-Make הוא לא קוד JavaScript חופשי, אלא עטיפה מסודרת (מבנה דמוי-JSON עם הפונקציות המובנות של Make) שמבצעת קריאת API, משרשרת כמה, או עושה מניפולציה על דאטה. והוא נתן את ארבע הסיבות לבנות מודול: מערכת בלי אפליקציה רשמית (במקום עשרות צמתי HTTP), פעולה שדורשת שרשור קריאות (מערכת שצריך קודם לקבל ממנה טוקן זמני ל-10 דקות ואז להשתמש בו - במקום 5 צמתים, מודול אחד), הסתרת לוגיקה רגישה (מודול יכול לרוץ בלי לוג בכלל, כך שגם לקוח שנכנס ל-DevTools רואה רק true/false, לא לאן הקריאה נשלחת), וחיסכון באופרישנס ותחזוקה. הוא הסביר גם את מגבלת ה-timeout (כ-5 דקות, בפועל שניות). ההבנה מתי לבנות מודול - היא חצי מהערך.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
אבחון: אילו סנריוז שלי שווה להמיר למודול
ואז אבי לימד לאבחן: איפה בעסק שלכם שווה לבנות מודול. הוא עבר על שלושת הקריטריונים - מערכות שאתם עובדים איתן בקריאות HTTP ידניות שקשה לשכפל, פעולות שדורשות שרשור קריאות תלויות (למשל בדיקת כרטיס אשראי: חיוב סכום קטן, זיכויו, ואז יצירת הוראת קבע - שלוש קריאות שאפשר לאחד), וקריאות בתדירות גבוהה שבהן צמצום אופרישנס משמעותי. ולכל תהליך - להעריך: כמה אופרישנס ייחסכו, כמה זמן תחזוקה, והאם זה מצדיק את הבנייה. כי מערכת עם API נקי = חמש דקות בנייה, ומערכת מסובכת יכולה לקחת ימים. אבי הבהיר שלא כל דבר שווה מודול - האבחון מונע השקעת ימים במשהו שאפשר לפתור בקריאה אחת.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
לבנות מודול בסיסי ב-Make שלב-אחר-שלב
פה אבי ירד לבנייה, שלב-אחר-שלב, לפי הסרגל בעורך האפליקציות. Base - הקריאה הבסיסית המשותפת לכל המודולים: ה-Base URL, ה-Authorization (header עם ה-API key), וה-log עם sanitization - המאפיין שמחליף את ה-API key בכוכביות בלוג כדי שלא ייחשף. Connection - יצירת החיבור: לבחור סוג 'other', להוסיף פרמטר עם name, label, type ו-required. ו-Module עצמו - לבחור pre-fill with example code, סוג Action, ולהגדיר CRUD, connection, URL וגוף. אבי הדגיש שני דברים שמצילים שעות: בכל שלב חובה ללחוץ Save (אחרת כלום לא נשמר), ולעבוד בשיטת ניסוי-ותהייה - לבנות כל קריאה בנפרד, להריץ, ולראות מה מקבלים. וטיפ זהב: לעבוד במקביל עם Postman כדי לראות בדיוק מה השרת מחזיר לפני שכותבים את המודול.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
שדה בחירה דינמי במודול דרך RPC
אבי עבר לטכניקה שמייפה כל מודול: שדה בחירה דינמי (dropdown) שנטען אוטומטית מה-API - למשל רשימת ערוצים או חברות - דרך RPC. הוא הסביר ש-RPC (Remote Procedure Call) היא קריאה שרצה לפני מיפוי המודול, עוד לפני שהמשתמש מריץ את הקריאה האמיתית, ומשמשת בעיקר למילוי שדות בחירה. יוצרים RPC מסוג Connection (בדרך כלל GET), מגדירים URL, ובתשובה מחזירים מערך אובייקטים עם value ו-label. אם מגיעים ערכים ריקים - מסננים ב-Iterator עם isNotEmpty. וההרחבה המתקדמת: nested - שרשור פרמטרים כך שהבחירה בשדה אחד משפיעה על השני (הקלדת 'ירושלים' מסננת את רשימת הערים). זה מה שהופך מודול מ'עובד' ל'מרגיש כמו אפליקציה רשמית'.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
איחוד כמה קריאות API למודול אחד
וכאן אבי הגיע ללב הכוח: מודול שמשרשר כמה קריאות API בתוך פעולה אחת, עם תלות וטיפול בשגיאות - לפי דוגמת קארדקום החיה (חיוב שקל, זיכוי שקל, יצירת הוראת קבע - שלוש קריאות במודול אחד). העקרונות: שרשור קריאות שכל אחת משתמשת במידע מהקודמת (הראשונה מקבלת טוקן, הבאות משתמשות בו), שמירת ערכים ב-temp בין קריאות, ותנאים אחרי כל קריאה - אם הסטטוס בתשובה מעיד על שגיאה, מחזירים error ועוצרים, אחרת ממשיכים. אבי הראה שקריאות יכולות להיות בפורמטים שונים (Body, Query, GET) ולחזור כ-JSON או טקסט גולמי שצריך לפרק. ושתי תובנות תחזוקה: תמיד להעביר גם את הדאטה הגולמי ב-output (כדי לראות מה נשבר), ולבנות את ה-output בדיוק כמו שנוח לעבוד איתו אחר כך.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
מודול ללא קריאת API — מניפולציה טהורה על דאטה
אבי חשף שימוש שרוב האנשים לא מדמיינים: מודול שלא קורא לשום API - רק מבצע מניפולציה על דאטה. כי מודול הוא בסופו של דבר קוד עטוף, אז הוא יכול לעבד מידע בלי לגעת בשרת. הדוגמה שלו: מודול שמקבל שני תאריכים (התחלה וסיום פגישה) ומחזיר טווח מעוצב בעברית - מפעיל סדרת switch-ים שממירים מספר יום לשם היום בעברית, חודש לעברית, ומעצבים שעות. במקום 4-5 צמתי switch נפרדים בסנריו - הכל מאוחד למודול אחד. אותו תחביר בדיוק כמו בסנריו (הפונקציות המובנות של Make). ואבי הוסיף כנות: אם צריך לוגיקה שלא ניתנת לביצוע במודול (אין JavaScript חופשי מלא) - שולחים את החלק הזה לשרת n8n שמריץ JS, ומקבלים תוצאה מעובדת. לדעת גם את הגבול של הכלי.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
חיבור דו-לשוני ומחזור החיים של אפליקציה
ואת הסשן אבי סגר בשתי טכניקות מתקדמות ובאזהרה שחוסכת כאב. אפליקציה דו-לשונית: מגדירים ב-Connection שדה בחירת שפה, ואז ב-RPC כל ה-labels וה-outputs משתנים לפיה. ולמה דווקא RPC ולא מיפוי במודול? כי המודול לא יכול לקרוא ל-Connection עד שהוא מופעל, אבל ה-RPC רץ לפני המיפוי - ולכן יכול לבדוק את השפה ולהחיל condition על כל פרמטר. והאזהרה הכי חשובה - מחזור החיים: אפליקציה Private אפשר לשנות ולמחוק חופשי, אבל אפליקציה Published - אי אפשר למחוק ממנה שום דבר. אבי הזהיר במפורש: לא לפרסם לפני שהאפליקציה בשלה, ולזכור שכדי לשתף אותה עם אחרים צריך review ואישור רשמי מ-Make. הכלים החזקים דורשים גם משמעת - יודעים מה הפיך ומה לא.
ההמשך המלא של הפרומפט שמור לחברי אוטוטיוזדיי פלוס יחד עם ההקלטה והתמלול המלאים של הסשן
שורות ההמשך כוללות את כל ההנחיות המדויקות והדוגמאות שהוצגו בשידור החי מול הקהילה
🎯 מה עושים עם זה עכשיו?
קראת איך זה נעשה. עכשיו קחו את הכלים ותעשו את זה בעצמכם - כל הפרומפטים של הסשן, מוכנים להריץ על העסק שלכם. פלוס ההקלטה המלאה והתמלול.
הצטרפו לאוטוטיוזדיי+· 49 ש״ח בחודשעוד לא בשלים? בואו ללייב הבא בחינם ←רוצים לעבוד על התמלול הנקי?
העתיקו אותו ותעבדו איתו איך שנוח לכם.
🔒 התמלול המלא שמור לחברי אוטוטיוזדיי+. עם המנוי אתם מעתיקים אותו בקליק ועובדים איתו איך שנוח לכם.
לפתוח את התמלול · 49 ש״ח בחודששאלות ששאלתם (וה-AI ישאל גם)
מה זה Custom App / מודול ב-Make?
עטיפה מסודרת (לא JavaScript חופשי) שמבצעת קריאת API, משרשרת כמה קריאות, או עושה מניפולציה על דאטה - כל זה כיחידה אחת נקייה במקום עשרות צמתי HTTP.
מתי שווה לבנות מודול?
בשלושה מקרים: מערכת בלי אפליקציה רשמית, פעולה שדורשת שרשור קריאות תלויות (טוקן ואז פעולה), או הסתרת לוגיקה רגישה מהלקוח. ובכל מקרה - כשהחיסכון באופרישנס ותחזוקה מצדיק את הבנייה.
מה זה RPC במודול?
Remote Procedure Call - קריאה שרצה לפני מיפוי המודול, בעיקר כדי למלא שדות בחירה דינמיים (dropdown) מה-API, כולל שרשור nested שבו בחירה בשדה אחד מסננת את השני.
מה ההבדל בין אפליקציה Private ל-Published?
ב-Private אפשר לשנות ולמחוק חופשי. ב-Published אי אפשר למחוק שום דבר - לכן לא מפרסמים לפני שהאפליקציה בשלה, ולשיתוף עם אחרים צריך review ואישור מ-Make.
💬 הדיון על הסשן
שאלות, תובנות, מה יישמנו - השרשור של הקהילה.
עוד אין תגובות - תהיו הראשונים לפתוח את הדיון 👇
