דילוג לתוכן

צד שרת

14 נושאים 216 פוסטים

קטגוריות משנה


  • 14 נושאים
    216 פוסטים
    ע
    @ע-ה-דכו-ע אז 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 לא מכיל נתיב לקובץ תקין או שההקלטה נכשלה. די כמו שאמרת תודה רבה לכולם
  • Firebase ,SQL ,MySQL ועוד

    0 0
    0 נושאים
    0 פוסטים
    אין פוסטים חדשים.