• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    איך אוכל לקבל ב-API קובץ שמע בלי להוריד אותו?

    פורום מפתחים API
    5
    11
    325
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ה
      הלוי הלוי נערך לאחרונה על ידי הלוי הלוי

      יש לי צורך לבצע פעולות על קבצי שמע במערכת שלי (תמלול וכדו'),
      אני רוצה לגשת לקובץ כשהוא עדיין בענן,
      האם יש הגדרה "GetAudioFile" (או יותר נכון "GetAudioBlob") בדומה להגדרה "GetTextFile" של קבצי טקסט?
      אין לי מה להאריך בהסבר, מי שלא הבין מה שאלתי, כנראה שאין לו תשובה...
      תודה מראש!!

      שמואל תגובה 1 תגובה אחרונה תגובה ציטוט 2
      • שמואל
        שמואל @הלוי הלוי נערך לאחרונה על ידי

        @הלוי-הלוי שאתה עושה DownloadFile אתה למעשה מקבל Blob של הקובץ, כי התגובה עצמה זה הקובץ.

        לפניות בנוגע לפורום: shmuel@yemot.co.il

        ה ח 3 תגובות תגובה אחרונה תגובה ציטוט 2
        • ה
          הלוי הלוי @שמואל נערך לאחרונה על ידי

          @שמואל תודה!

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • ה
            הלוי הלוי @שמואל נערך לאחרונה על ידי הלוי הלוי

            @שמואל זה לא עובד לי,
            עשיתי פנייה לקובץ מסויים ואחריו .getBlob()
            חזרה לי תגובה שסוג הקובץ לא נתמך (כששלחתי קישור לקובץ עם סיומת MP3 ממקום אחר באותה צורה, פעל באופן תקין),
            ניסיתי גם לשלוח בלי .getBlob(), גם לא עבד.
            זה הקוד שלי בגוגל סקריפט:
            (UFA מבצע אצלי UrlFetchApp)

            function test() {
              var speakingInHebrewToText = WHISPWR(`https://www.call2all.co.il/ym/api/DownloadFile?token=${token}&path=ivr2:/1/2/007.wav`)
              SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Config').getRange('A1').setValue(speakingInHebrewToText)
            }
            
            function WHISPWR(audioURL) {
              
              const apiKey = SpreadsheetApp
                .getActiveSpreadsheet()
                .getSheetByName("Config")
                .getRange("A2")
                .getValue()
            
              function getFile(fileURL) {
                const response = UFA.fetch(fileURL);
                const res = response.getBlob();
                return res;
              };
            
              const audioBold = getFile(audioURL);
            
              const fromDate = {
                'model': 'whisper-1',
                'file': audioBold,
                language: `he`,
              };
            
              const url = 'https://api.openai.com/v1/audio/transcriptions';
            
              const options = {
                'method': 'post',
                'payload': fromDate,
                'headers': {
                  'Authorization': "Bearer " + apiKey
                }
              };
            
              const res = UFA.fetch(url, options);
              const date = JSON.parse(res.getContentText());
              return date.text;
            }
            
            ש תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • ש
              שמחה - זו הסיסמא @הלוי הלוי נערך לאחרונה על ידי

              @הלוי-הלוי
              קודם תנסה לבדוק את זה עם שרת נורמלי
              גוגל סקריפט הוא לא שרת...

              ה תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • ה
                הלוי הלוי @שמחה - זו הסיסמא נערך לאחרונה על ידי

                @שמחה-זו-הסיסמא
                למעשה הצלחתי עד כה להשתמש עם גוגל סקריפט כמעט כשרת רגיל,
                על רוב התקלות הצלחתי להתגבר..
                למשל את הבעיה של החסימה של ימות על גוגל סקריפט
                פתרתי כך:

                var token = PropertiesService.getScriptProperties().getProperty('token');
                
                function getSession() {
                  if (!token || JSON.parse(UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/GetSession?token=${token}`).getContentText()).responseStatus !== `OK`) {
                    PropertiesService.getScriptProperties().setProperty(`token`,'');
                	  while (!PropertiesService.getScriptProperties().getProperty('token')) {
                      var login = JSON.parse(UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/Login?username=XXXX&password=XXXXX`).getContentText()).token;
                      if (login) {
                        PropertiesService.getScriptProperties().setProperty(`token`, login);
                      }
                    }
                  }
                }
                

                מה שקורה כאן בעצם זה משתנה קבוע שמכיל את הטוקן,
                פעם בחצי שעה מופעל טריגר לפונקציה getSession,
                מכיוון שטוקן תקף למשך שעה מאז שנוצר או מאז שהשתמשו בו,
                אני פשוט משתמש בו פעם בחצי שעה (סתם - קבלת פרטי המערכת, לא עושה עם זה כלום...)
                אם התשובה היא לא OK או שלא קיים טוקן מאיזו סיבה, הוא מנסה שוב ושוב להתחבר מחדש וליצור טוקן...
                וממילא בכל הסקריפט הנוכחי יש לי כל הזמן משתנה בשם token שאני משתמש בו לכל מטרה...

                עוד בעיה של "אין מענה משרת API" שנכתב כאן
                אני פשוט מחליף את ההודעה הנ"ל בקובץ שקט,
                עושה הפנייה לשלוחה אחרת בכל מקום שאני משתמש ב-API מהמערכת,
                ה-API משנה בשלוחה ההיא כל פעם את ה-M0000 כך:

                UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/UploadTextFile?token=${token}&what=ivr2:/222/M0000.tts&contents=${contents}`);
                

                בקיצור.... יש פתרונות להכל..

                M תגובה 1 תגובה אחרונה תגובה ציטוט 4
                • M
                  MGM IVR מומחה @הלוי הלוי נערך לאחרונה על ידי

                  @הלוי-הלוי כתב באיך אוכל לקבל ב-API קובץ שמע בלי להוריד אותו?:

                  @שמחה-זו-הסיסמא
                  למעשה הצלחתי עד כה להשתמש עם גוגל סקריפט כמעט כשרת רגיל,
                  על רוב התקלות הצלחתי להתגבר..
                  למשל את הבעיה של החסימה של ימות על גוגל סקריפט
                  פתרתי כך:

                  var token = PropertiesService.getScriptProperties().getProperty('token');
                  
                  function getSession() {
                    if (!token || JSON.parse(UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/GetSession?token=${token}`).getContentText()).responseStatus !== `OK`) {
                      PropertiesService.getScriptProperties().setProperty(`token`,'');
                  	  while (!PropertiesService.getScriptProperties().getProperty('token')) {
                        var login = JSON.parse(UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/Login?username=XXXX&password=XXXXX`).getContentText()).token;
                        if (login) {
                          PropertiesService.getScriptProperties().setProperty(`token`, login);
                        }
                      }
                    }
                  }
                  

                  מה שקורה כאן בעצם זה משתנה קבוע שמכיל את הטוקן,
                  פעם בחצי שעה מופעל טריגר לפונקציה getSession,
                  מכיוון שטוקן תקף למשך שעה מאז שנוצר או מאז שהשתמשו בו,
                  אני פשוט משתמש בו פעם בחצי שעה (סתם - קבלת פרטי המערכת, לא עושה עם זה כלום...)
                  אם התשובה היא לא OK או שלא קיים טוקן מאיזו סיבה, הוא מנסה שוב ושוב להתחבר מחדש וליצור טוקן...
                  וממילא בכל הסקריפט הנוכחי יש לי כל הזמן משתנה בשם token שאני משתמש בו לכל מטרה...

                  עוד בעיה של "אין מענה משרת API" שנכתב כאן
                  אני פשוט מחליף את ההודעה הנ"ל בקובץ שקט,
                  עושה הפנייה לשלוחה אחרת בכל מקום שאני משתמש ב-API מהמערכת,
                  ה-API משנה בשלוחה ההיא כל פעם את ה-M0000 כך:

                  UrlFetchApp.fetch(`https://www.call2all.co.il/ym/api/UploadTextFile?token=${token}&what=ivr2:/222/M0000.tts&contents=${contents}`);
                  

                  בקיצור.... יש פתרונות להכל..

                  אתה רק מחזק את הטענה שלו שזה לא שרת נורמלי, תנסה במחשב שלך או בשרת נורמלי, ואז תבדוק אם זה לא תקין, או שעובד לך וזה עוד באג בגלל השימוש בגוגל שיטס

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • ח
                    חוקר @שמואל נערך לאחרונה על ידי

                    @שמואל כתב באיך אוכל לקבל ב-API קובץ שמע בלי להוריד אותו?:

                    שאתה עושה DownloadFile אתה למעשה מקבל Blob של הקובץ, כי התגובה עצמה זה הקובץ.

                    יש מושג של הזרמת אודיו (תגובה 206 אם אני זוכר) כמו שזה קיים בהשמעת קבצים באתר הישן.
                    באתר החדש זה לא עובד כך, לא ניתן לדפדף באמת באורך הרצועה רק לאחר הורדת כולה.

                    ה תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • ה
                      הלוי הלוי @חוקר נערך לאחרונה על ידי

                      @חוקר לא הבנתי,
                      מה זה תגובה 206?
                      למה תגובה?
                      תוכל להביא קישור?
                      תודה!

                      M תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • M
                        MGM IVR מומחה @הלוי הלוי נערך לאחרונה על ידי

                        @הלוי-הלוי כתב באיך אוכל לקבל ב-API קובץ שמע בלי להוריד אותו?:

                        @חוקר לא הבנתי,
                        מה זה תגובה 206?
                        למה תגובה?
                        תוכל להביא קישור?
                        תודה!

                        הוא מתכוון קוד תגובה 206, כמו שהסטנדרט זה קוד 200, ו not found זה 404

                        ה תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • ה
                          הלוי הלוי @MGM IVR נערך לאחרונה על ידי הלוי הלוי

                          @MGM-IVR אז איך משתמשים עם זה לקבלת הקובץ ב-Blob?
                          תודה

                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • פוסט ראשון
                            פוסט אחרון