@צדיק-תמים אם אני מבין נכון, לא עושים בכאלו מקרים לא await ואין צורך בreturn, או שלא הבנתי נכון.
eido
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid @צדיק-תמים
לכל מאן דבעי:
אני משתמש בide ואני מבין דבר או שניים במה שאני עושה.
קודם כל היה חשוב לי לעדכן בעקבות ההשמצות
דבר שני. יתכן ויש איזה סוגר מיותר כי מחקתי כאן דברים באמצע כדי לא להכביד על הרבנים המשיבים.
לא הבנתי מה יצא מכל הסיפור זה טוב try/catch? זה לא טוב? למה זה קרס?
הtry/catch הארוך הוא כי עשיתי שינוי על שינוי לטובת הלקוח. אז נשאר כזה ארוך, סתם להבין מה רע בזה? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?הפקודה הזו call.id_list_message( אמורה לעצור את הקוד, אין סיבה לעצור אותו בנפרד... ככה אני מבין את זה.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?יש כאן כמה לוגים של שגיאה, רק אחד מהם גרם לקריסה ממש, אשמח לדעת מה גרם לקריסה, ומה הוא שונה מהשאר. לכאורה הם בערך אותם שגיאות.
[31m[541eba6e6682e37cee0ae3e53f2d794defc28d29]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[541eba6e6682e37cee0ae3e53f2d794defc28d29]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code[31m[a7d099fc6c8dea530efaabba6c1b4ceb5476adb8]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[a7d099fc6c8dea530efaabba6c1b4ceb5476adb8]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code[31m[b142a8637dd7dced030099e0f6655a63da484e0b]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[b142a8637dd7dced030099e0f6655a63da484e0b]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code after returning response)[39m
Node starting...
app.js running on port 3000export async function choosestreet(call, city) { let menuStreet = "", digitsStreet=[], street; let okStreet = "0"; while(okStreet!="1") { let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record"); console.log(ans); try{ const keywords = JSON.stringify(streets[city]); street = await reco(call, ans,keywords, city); if (street==null) {continue;} } catch (error) { console.error("Error:", error); call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]); } { // מבקש אישור okStreet = await call.read([{ type: 'file' , data: `/ivr_records/${street}` },{ type: 'file' , data: "/ivr_records/אישור2" }], 'tap', { sec_wait: 2, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1,2, "*0"] }); if (okStreet=="1") {return street;} else if (okStreet == "*0") {call.go_to_folder(mainextPath);} } }async function reco(call, ans, keywords,city) { try{ const { stdout, stderr } = await execFileAsync("python3", [ "/recognizeNew.py", ans,keywords]); const matches = JSON.parse(stdout); console.log(matches); if (stderr) { console.error("Python stderr:", stderr); } if (matches.length==0) { const { stdout, stderr } = await execFileAsync("python3", [ "recognize.py", ans,keywords]); if (stderr) { console.error("Python stderr:", stderr); } let recognizedText = stdout.trim(); // הסר רווחים ושורות מיותרות if(streets[city].includes(recognizedText)) { return recognizedText; } else {call.id_list_message([/*{type: 'text', data: "לא זיהינו את הרחוב שהקלטת"}*/{ type: 'file', data: "/ivr_records/שגיאה זיהוי" }],{prependToNextAction: true});} } else if (matches[0].score == 100) {return matches[0].name;} else { let msgmatches = [], digitsmatches=[]; for (let i = 0; i < matches.length; i++) { msgmatches.push({ type: 'file', data: `/ivr_records/${matches[i].name}` }); msgmatches.push({ type: 'file', data: `/ivr_records/הקש` }); msgmatches.push(...Object.values(numberToHebrewWords(i+1))); digitsmatches.push((i + 1).toString()); } digitsmatches.push("*0"); let street; for(let i = 0; i<3; i++) { street = await call.read(msgmatches, 'tap', { max_digits: 2, sec_wait: 2, min_digits: 1, digits_allowed: digitsmatches, typing_playback_mode: "No" }); if (street == "*0") {call.go_to_folder(mainextPath);} if (!digitsmatches.includes(street)) { continue; // אם הקיש מספר לא חוקי – חוזר על הלולאה } const index = Number(street) - 1; if (index >= matches.length) { continue; // אם הקיש מספר לא חוקי – חוזר על הלולאה } street = matches[index].name; return street; } call.hangup(); } } catch (error) { console.error("Error:", error); call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]); } } -
עזרה בתכנון מבנה מערכת@צדיק-תמים התכוונתי להעביר ישירות לשלוחת API שנותנת את הקוד, אבל הוא היה צריך לעבור אימות. לא חשבתי על מזהה שיחה, תודה!
-
עזרה בתכנון מבנה מערכת@sholom תיאורטית נכון, העניין הוא שעד כמה שהצלחתי להבין, ברגע שמבצעים סליקה בשלוחת API השלוחה נסגרת... כך שא"א להביא שם את הקוד.
-
עזרה בתכנון מבנה מערכת@צדיק-תמים הוא רוצה לכסות מצב שבו החליפו מספר טלפון ולא עדכנו בחברה, דבר שמצוי בסה"כ, ואז א"א לשלוח שיחת אימות.
-
עזרה בתכנון מבנה מערכת@צדיק-תמים כתב בעזרה בתכנון מבנה מערכת:
@eido ולמה עדכון מספר טלפון אי אפשר לעשות עם אימות מספר נוכחי?
כי אם מספר הטלפון זה הפרט היחיד בשביל לשנות מספר טלפון, כל אחד יכול לעשות את זה... גם אם הוא לא בעל הפלאפון...
@eido כתב בעזרה בתכנון מבנה מערכת:
לגופו של ענין, אין הצעות לדברים נצרכים?
תיארת דרישות פונקציונליות מאוד מצומצמות, עם הספריה מול מודול API של ימות זה אמור להיות כמה עשרות שורות קוד בלבד
קשה למצוא בשר בכזה דבר...אני אגיד לך, הבקשה המקורית היתה הרבה יותר מצומצמת:
מערכת טלפונית שבאופן אוטומטי אפשר לשלם בה בכרטיס אשראי, ואז ניתן להכניס קוד של 6 ספרות, ואז אם התשלום עבר בהצלחה המערכת מחזירה קוד שכאשר המשתמש מכניס אותו הוא פותח לו את הנעילה של התוכנה. כל זה צריך כמובן להיות אוטומטי, התשובה בטלפון והכל. הנתונים של המשתמשים כמובן צריכים להרשם באיזה מאגר מידע בצורה כלשהי כך שאם אדם שילם ושכח את הקוד שנוכל לדעת שאומנם שילם, וגם שיהיה לנו מעקב על הלקוחות שנוכל לשמור איתם על קשר, לצורך תמיכה וכדומה.
אחרי דיבורים ובירורים רבים ומציאת באגים אפשריים הגענו למה שהגענו עכשיו. השאלה אם יש עוד משהו לתת עליו את הדעת.
-
עזרה בתכנון מבנה מערכתלגופו של ענין, אין הצעות לדברים נצרכים?
-
עזרה בתכנון מבנה מערכת@צדיק-תמים ה4 ספרות זה רק כדי לעדכן מספר טלפון, את הקוד הוא יקבל אם יחייג/יקיש את המספר שלו ואת הקוד שהוא קיבל מהתוכנה.
-
עזרה בתכנון מבנה מערכת@צדיק-תמים הדרישה של הלקוח היא שיהיה אפשר גם להקליד את המספר טלפון, זה הופך את המספר לזיהוי בלבד ולא אימות, 2 הנתונים הנ"ל ביחד עוד איכשהו יכולים להיחשב כאימות (אני לא רוצה ללכת רחוק עם ת"ז וכאלה).
-
עזרה בתכנון מבנה מערכתלקוח שלי רצה מערכת (ivr) שמשלמים בה על מוצר, מכניסים קוד של המוצר ומקבלים חזרה (ע"פ אלוגריתם שלא בשליטתי) קוד אחר להכנסה במוצר.
לאחר דיון הגענו למבנה הבא:
בתשלום המאזין מתבקש לבחור את שם המוצר להכניס את הקוד ולשלם.
אם התשלום עבר - נשמר במאגר מידע טלפון ו4 ספרות אחרונות (לזיהוי הלקוח), שם המוצר והקוד אותו הכניס (ע"מ שהמערכת תדע מה הוא קנה ולא יוכלו לעבוד על המערכת ולהכניס בשלב הבא קוד של מוצר יקר יותר ולקבל קוד פתיחה שלו).
לאחר ששילם עובר לשלוחה בה הוא מקיש את הקוד שהקיש בתשלום ומקבל את קוד הפתיחה, ממשק זה ישמש אותו גם למקרה בו הוא מחק את התוכנה ורוצה להתקין מחדש/שכח את הקוד וכדומה.
מכיון שזיהוי הלקוח מול המערכת מתבצע ע"י הקשת טלפון ו4 ספרות יש ממשק לעדכון הטלפון ע"י הקשת הטלפון הישן ו4 ספרות.לכאורה מערכת קטנה ופשוטה, השאלה אם יש פרט שפספסנו? צריך להוסיף משהו (רק אם קריטי לתפעול נכון, פחות הוספת פונקציונליות).
-
בירור על מערכת סליקת אשראי מתאימה לאתר עם מודל מנויים@אביי @NH.LOCAL @clickone
קצת סטיה מהנושא אבל אשמח לדעת מה הדרישות שלכם ומה חסר, אני מחפש חברת סליקה להציע ללקוחות, עד עכשיו המלצתי על קשר כי היא הכי זולה ועל נדרים פלוס כי יש להם בד"כ שירות טוב, הם מתממשקים עם מה שצריך ובעיקר מבינים את הציבור החרדי.אבל כנראה שאצטרך להחליף חברות...
אשמח לדעת מה לחפש ומה הצרכים.
-
בירור על מערכת סליקת אשראי מתאימה לאתר עם מודל מנויים@NH.LOCAL נדרים פלוס לא פנו אליך בעקבות פניה שלי אליהם?
צריך לשים לב שהאחוזים לא עולים אחרי שנה.
בכל מקרה שלחתי שוב פניה לקשר ונדרים פלוס רק עכשיו ראיתי את המייל (שלך?), הוא הגיע לספאם משום מה. -
בירור על מערכת סליקת אשראי מתאימה לאתר עם מודל מנוייםאם אתה מעוניין שאעביר להם את הפרטים שלך תוכל לשלוח לי מייל לstamandsefer@gmail.com עם שם וטלפון (יכול להיות שם פקטיבי, אבל טלפון צריך להיות אמיתי...).
-
בירור על מערכת סליקת אשראי מתאימה לאתר עם מודל מנויים@NH.LOCAL קשר -
עלות ההקמה הינה 140 ש"ח (חד-פעמי).
עלות חודשית קבועה עומדת על 50 ש"ח.
מול חברת UPay יש סיכום על עמלת סליקה של 1.1%
ובסליקה דרך BIT – העמלה היא 1.4%אבל טרנזילה לוקחים 0.89 אז שווה לקחתאת קשר ואותם במקום את יופיי.
נדרים פלוס -
מנוי חודשי: 50₪ + מע"מ
דמי הקמה (חד פעמי): 150 ₪ + מע"מ
עמלה 1.2% ביט 1.5%ככה אז אמרו לי, תוכל לברר את זה מולם.
אם קשר עוד לא יצרו איתך קשר כנראה כי הם צריכים עוד פרטים שלך.
-
דפדפן מראה שהשרת לא מאובטח למרות שיש תעודה בתוקף@צדיק-תמים נכון, דיברנו על זה במקום אחר
-
דפדפן מראה שהשרת לא מאובטח למרות שיש תעודה בתוקף@מד כי זה לא צורה ככה לעבוד, במיוחד אם זה הולך ללקוח...
-
דפדפן מראה שהשרת לא מאובטח למרות שיש תעודה בתוקף@5566brs
הוא עושה fetch לקבצי PHP שנמצאים בתיקיה אחרת.האמת שאני לא יודע איך רואים שם היעד של הפורטים, אבל בגדול זה מגיע ל443 אני חושב, כי זה https.
-
דפדפן מראה שהשרת לא מאובטח למרות שיש תעודה בתוקף@avi-rz ניקיתי קאש ועשיתי רענון קשיח ועדיין אותו הדבר.
יש בעיה