@יהודי-זה-הכי מה זה "שילם"? זה תשלום חודשי, אם רק שילם בעבר אז אין לו מה לבוא בטענות, ואם עדיין משלם אז הם צריכים לדעת שמשלמים להם...
עידו300
-
בירור | ניתוק ווצאפ פון שלא בשימוש -
בירור | ניתוק ווצאפ פון שלא בשימוש@יהודי-זה-הכי זה ברור, הרי פרסומות זה חלק מההכנסות שלהם.
צריך לשלם להם על הרבה דברים, הם שמים את הסעיפים האלו כגיבוי, לרוב הם אפילו לא מודעים שזה קיים...אם סגרו לך למרות ששילמת, תפנה אליהם, זה לא אמור לקרות, ואם זה היה טעות והחזירו לך, אז תוסיף גם את זה...
-
בירור | ניתוק ווצאפ פון שלא בשימוש@צבי-דורש-ציון כיום אין את העניין ב1000 דקות, צריך מערכת פעילה (או לפחות שלא תהיה מושבתת), כמה זה פעילה, לא יודע...
-
בקשת מידע | פלאפון כשר עם כתב גדול@cfopuser כתב בבקשת מידע | פלאפון כשר עם כתב גדול:
@עידו300 5X5 4X4 Q8 Q7
בכולם יש הגדרה לטקסט מוגדל
אמינים, שיחות טובות?
-
בקשת מידע | פלאפון כשר עם כתב גדולהאם יש פלאפון כשר שיש בו כתב גדול לכאלו שצריכים משקפים לראיה מקרוב?
אבל פלאפון טוב עם שמע טוב וכו' -
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@צדיק-תמים תשמע, אני מתפעל מהספריה הזו כל פעם מחדש.
-
בירור | קריסה במערכות ימות המשיח כבר כשעה.@שלום-שלמה אמרו עד מוצא"ש...
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטרטוב, חברים קודם כל, תודה על העזרה!
דבר שני, אחרי שטובי המוחות כאן בפורום הוגיעו את ראשם לפתור את התעולמה ולא הצליחו, לא היתה לי ברירה אלא לפתור אותה בעצמי... מתברר שהבינות המלאכותיות צדקו, וצריך קודם לשים את זה במשתנה אחר ורק אח"כ אפשר להעביר את זה לפונקציה, למה? ככה, כנראה... לא ברור אבל ככה זה עובד... -
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטרגם ג'מני וגם gpt ענו תשובה לא הגיונית.
הספריה לא יודעת לעבד את ה... אז קודם לשים את התוצאה במשתנה, ואז את המשתנה לשים עם ... בread...
לא יודע, לי לא נשמע הגיוני. -
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטריש לי את הקוד הזה:
function numberBelowThousandToWords(num) { let words = []; if (num >= 100) { words.push({ type: 'file', data: `/ivr_records/${hundreds[h]}` }); num %= 100; if (num > 0) words.push({ type: 'file', data: `/ivr_records/${num}` }); } else { words.push({ type: 'file', data: `/ivr_records/${num}` }); } return words; } export function numberToHebrewWords(num) { if (num === 0) return [{ type: 'file', data: `/ivr_records/0` }]; let words = []; // מיליון if (num >= 1_000_000) { const millions = Math.floor(num / 1_000_000); if (millions === 1) { words.push({ type: 'file', data: `/ivr_records/מיליון` }); } else if (millions === 2) { words.push({ type: 'file', data: `/ivr_records/שני מיליון` }); } else { words.push(...numberBelowThousandToWords(millions)); words.push({ type: 'file', data: `/ivr_records/מיליון` }); } num %= 1_000_000; } // אלפים if (num >= 1000) { const thousands = Math.floor(num / 1000); if (thousands === 1) { words.push({ type: 'file', data: `/ivr_records/אלף` }); } else if (thousands === 2) { words.push({ type: 'file', data: `/ivr_records/אלפיים` }); } else if (thousands < 100) { // מספר <100 נשאר כמו שהוא words.push({ type: 'file', data: `/ivr_records/${thousands}` }); words.push({ type: 'file', data: `/ivr_records/אלף` }); } else { // מעל 100 → מאות + שאר <100 words.push(...numberBelowThousandToWords(thousands)); words.push({ type: 'file', data: `/ivr_records/אלף` }); } num %= 1000; } // מאות + שאר <1000 if (num > 0) { words.push(...numberBelowThousandToWords(num)); } return words; } let ad1 = `המודעה היא דירה ל${buyorrent} ב${city}`; let ad2 = ` טלפון ליצירת קשר ${phone} `; /*************************************************************************************** */ // שאלת עריכה while(await call.read([{type: 'text', data: `${ad1} `},...numberToHebrewWords(price),{ type: 'text', data: `${ad2} , לעריכת המודעה הקש 1 לפרסום ושמירה 2` }], 'tap', { max_digits: 1, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1,2]מישהו יכול להסביר לי למה התוצאה היא
read=t-[object Object],[object Object],[object Object],[object Object],[object Object].t-לאישור הקישו 1 להקשה מחודשת
2=val_17,no,,1,2,No,no,no,,1.2.*0,,,None,במקום מה שאמור להיות?
-
מדריך | חיוג לכל מספר עם זיהוי מערכת שלכם, ללא עלות יחידות!!!@אברהם-mch לדעתי רוצים להכריח להשתמש ביחידות
-
מדריך | חיוג לכל מספר עם זיהוי מערכת שלכם, ללא עלות יחידות!!!רק לי זה כבר לא עובד? במקום לחייג למערכת הוא מתנתק.
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@עידו300 כתב בבקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר:
יש לי קוד שמשמיע מודעה ושואל איזו פעולה לעשות אחרי שמגיעה תשובה ולפני שהפעולה המבוקשת מתבצעת הוא שולח בקשה לסמן את המודעה כנקראה, הענין הוא שאם המאזין מנתק, אז הבקשה לא תשלח והמודעה לא תסומן כנקראה.
הפתרון הוא try/finally או משהו אחר?אין למישהו פתרון אחר?
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@ע-ה-דכו-ע הבעיה שא"א כי אם אשלח את המודעה לבד השיחה תתנתק חייבים להשמיע את המודעה ולשאול על הפעולה בבת אחת.
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטריש לי קוד שמשמיע מודעה ושואל איזו פעולה לעשות אחרי שמגיעה תשובה ולפני שהפעולה המבוקשת מתבצעת הוא שולח בקשה לסמן את המודעה כנקראה, הענין הוא שאם המאזין מנתק, אז הבקשה לא תשלח והמודעה לא תסומן כנקראה.
הפתרון הוא try/finally או משהו אחר? -
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@ע-ה-דכו-ע אז GPT הביא לי תיקון:
הבעיה בקוד שלך היא שקריאת
execFileהיא אסינכרונית, ולכן הפקודהconsole.log(` התוצאה היא ${textFromSpeech}`); call.id_list_message([...]);מתבצעת לפני שהפונקציה הפנימית של
execFileסיימה לרוץ — כלומר, לפני ש־textFromSpeechעודכן בפועל.כדי לתקן זאת, יש לעטוף את
execFileב־Promiseולחכות לה באמצעותawait.כך זה צריך להיראות:
import { execFile } from 'child_process'; import { promisify } from 'util'; const execFileAsync = promisify(execFile); let textFromSpeech = ""; let ans = await call.read([{ type: 'text', data: "אנא הקלט משהו" }], "record"); console.log("ans:", ans); try { // מריץ את הסקריפט פייתון וממתין לתוצאה const { stdout } = await execFileAsync("python3", [ "/home/node.stamandsefer.co.il/public_html/recognize.py", ans ]); textFromSpeech = stdout.trim(); // הסר רווחים ושורות מיותרות console.log(`התוצאה היא: ${textFromSpeech}`); await call.id_list_message([ { type: 'text', data: `התוצאה היא ${textFromSpeech}` } ]); } catch (error) { console.error("Error:", error); await call.id_list_message([ { type: 'text', data: "אירעה שגיאה בעיבוד האודיו" } ]); }הסבר קצר:
-
promisify(execFile)הופך את הפונקציה לגרסה תואמת ל־await. -
השורה
await execFileAsync(...)גורמת לקוד להמתין עד שפייתון יסיים לעבד את הקלט ויחזיר פלט. -
לאחר מכן אתה יכול להשתמש בתוצאה בביטחון, בלי שהקוד ירוץ מוקדם מדי.
אם תרצה — אפשר להוסיף גם טיפול במקרה שהקלט
ansלא מכיל נתיב לקובץ תקין או שההקלטה נכשלה.די כמו שאמרת
תודה רבה לכולם -
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@צדיק-תמים כתב בבקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר:
await רק מעכב את השורות הבאות, לא תוקע את התוכנה, וכיוון שזה בפונקציה אנונימית זה לא יעכב את המעבר לשורה הבאה
ככה הבנתי
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@ע-ה-דכו-ע כשכותבים ככה הוא זורק שגיאה
-
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטר@ע-ה-דכו-ע לא מגדיר
רק מה שכתוב בקוד הנ"ל ובimport {execFile} from 'child_process'; -
בקשת מידע | פעולה אחרי id_listוכו' בימות ראוטרב"ה מצאתי את הבעיה והוא כבר לא זורק שגיאה.
אבל עכשיו יש בעיה מוזרה...
מסיבה לא ברורה הוא לא מחכה שתגיע תשובה מהסקריפט הנ"ל אלא ממשיך הלאה ורק אח"כ מגיעה התשובה, מה שגורם לזה שהפלט למשתמש וללוג מגיע בלי התשובה...
השתמשתי בawait כמובן.let textFromSpeech=""; let ans = await call.read([{type: 'text', data: "אנא הקלט משהו"}], "record"); **console.log(ans);** await execFile("python3", ["/home/node.stamandsefer.co.il/public_html/recognize.py",ans], (error, stdout, stderr) => { // console.log(stdout); textFromSpeech = stdout; **console.log(textFromSpeech);** if (error) { console.error(error); call.id_list_message([{type:'text', data: "Error processing audio" }]); return; } }); **console.log(` התוצאה היא ${textFromSpeech}`);** call.id_list_message([{type:'text', data: ` התוצאה היא ${textFromSpeech}`}]);ניסיתי לסמן את הקונסולים בשביל ההבנה. בעצם מה שמגיע זה
"1/021.wav"
"התוצאה היא"
והתוצאה שהגיעה...
לא לפי הסדר (כמו שאמר כאן @צדיק-תמים שהawait לא חוסם את זה לגמרי).