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

    העלאת קובץ מגוגל דרייב למערכת דרך api

    עזרה הדדית למשתמשים מתקדמים
    3
    13
    353
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ה
      האדם החושב נערך לאחרונה על ידי

      כתבתי קוד כזה בגוגל סקריפט:

      function UploadFile_to_yemot(){
      let file_link = SpreadsheetApp.getActiveSheet().getRange('VoiceMail!B6').getValue();
      let fileid = file_link.split(/\/file\/d\/([^\/]+)/)[1];
      console.log (fileid)
      let file = DriveApp.getFileById(fileid);
      let blob = file.getBlob();
      let headers = {'Content-type': 'multipart/form-data'};
      let data_3 = {  'token': token,'path': "ivr2:/0/M1012.wav", 'convertAudio': 1, autoNumbering: false, tts:0,'upload': blob };
      let options_3 = { 'method': 'post','headers': headers, 'payload': data_3};
      let request_3 = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}UploadFile`, options_3))
      console.log(request_3)
      }
      

      הטוקן עובד לי בפונקציות אחרות מצויין, אבל משום מה כאן אני מקבל את המענה הבא:
      { yemotAPIVersion: 6,
      responseStatus: 'EXCEPTION',
      message: 'IllegalStateException(session token is required)' }
      בתודה מראש

      A א 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • A
        amp Software 0 @האדם החושב נערך לאחרונה על ידי amp Software 0

        איפה אתה מצהיר על המשתנה token ?

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

          @amp-Software-0 בפונקצייה נפרדת, כפי שאמרתי, הטוקן תקין לגמרי

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

            @האדם-החושב
            באותו תחום?
            השגיאה מראה שחסר לך את הטוקן, אז תלך על הכיוון הזה
            מה מודפס לך ב logger.log(token) ?

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

              @amp-Software-0 הטוקן עובד לי בהעלאת קבצי טקסט, שליחת צינתוקים, עריכת קמפיינים ועוד
              ב logger.log(token) מודפס לי הטוקן

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

                @האדם-החושב יכול להיות שאתה שולח את הטוקן בget בעוד הבקשה היא בפוסט?

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

                  @אביי-ורבא אני לא כ"כ מבין בזה, אבל הטוקן נמצא בdata_3

                  let data_3 = {  'token': token,'path': "ivr2:/0/M1012.wav", 'convertAudio': 1, autoNumbering: false, tts:0,'upload': blob }
                  

                  שנשלח בפוסט למיטב הבנתי

                  let options_3 = { 'method': 'post','headers': headers, 'payload': data_3};
                  
                  A תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • A
                    amp Software 0 @האדם החושב נערך לאחרונה על ידי

                    @האדם-החושב
                    תנסה לצרף את הטוקן url עצמו כ GET כדי לבודד את הבעיה:

                    let request_3 = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}UploadFile?token=` + token, options_3))
                    
                    ה תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • ה
                      האדם החושב @amp Software 0 נערך לאחרונה על ידי

                      @amp-Software-0 כתב בהעלאת קובץ מגוגל דרייב למערכת דרך api:

                      • token

                      עזר לטוקן, אבל עכשיו אני נתקל בשגיאה של הנתיב:
                      { responseStatus: 'ERROR',
                      message: 'path is required',
                      messageCode: 109,
                      yemotAPIVersion: 6,
                      success: false }

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

                        @האדם-החושב
                        אוקי, אז הצלחנו לבודד את הבעיה
                        הדרך שבה אתה שולח את הנתונים אינה תקינה ולכן הפרמטרים לא נשלחו,
                        אתה יכול כמובן לשלוח את הכל דרך ה GET אבל הקובץ עצמו חייב להישלח ב body

                        תנסה את זה:

                        function UploadFile_to_yemot(){
                        let file_link = SpreadsheetApp.getActiveSheet().getRange('VoiceMail!B6').getValue();
                        let fileid = file_link.split(/\/file\/d\/([^\/]+)/)[1];
                        console.log (fileid)
                        let file = DriveApp.getFileById(fileid);
                        let blob = file.getBlob();
                        let headers = {'Content-type': 'multipart/form-data'};
                        
                          var formData = new FormData();
                          formData.append('token', token);
                          formData.append('path', "ivr2:/0/M1012.wav");
                          formData.append('convertAudio', 1);
                          formData.append('autoNumbering', false);
                          formData.append('tts', 0);
                          formData.append('upload', blob);
                        
                        let options_3 = { 'method': 'post','headers': headers, 'payload': formData};
                        let request_3 = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}UploadFile`, options_3))
                        console.log(request_3)
                        }
                        
                        ה תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • ה
                          האדם החושב @amp Software 0 נערך לאחרונה על ידי

                          @amp-Software-0
                          ReferenceError: FormData is not defined

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

                            @האדם-החושב
                            נכון, זה לא קיים בגוגל סקריפט..
                            תנסה אולי לשלוח את כל הפרמטרים ב GET ותשלח את הקובץ ישירות ב payload

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

                              @האדם-החושב נסה להשתמש עם זה:

                              (ההדפסות ללוג מכוונות)

                              function sendToYemot(file, path) {
                                let convert = '1';
                                let autoNumbering = 'false';
                              
                                Logger.log(`yemot: path=ivr2:/${path}, convertAudio=${convert}, autoNumbering=${autoNumbering}`)
                              
                                let data = { 'token': token_yemot, 'path': `ivr2:/${path}`, 'convertAudio': convert, 'autoNumbering': autoNumbering, 'contents': file };
                                let options = { 'method': 'post', 'payload': data };
                                let request = UrlFetchApp.fetch(`${url_yemot_api}UploadFile`, options);
                                let yemotJson = JSON.parse(request.getContentText());
                              
                                Logger.log("סטטוס התגובה: " + request.getResponseCode() + "\nוטקסט התגובה הוא: " + request.getContentText())
                                
                                if (request.getResponseCode() == 200 && yemotJson.responseStatus == 'OK') {
                                  return true;
                                } else {
                                  errorMessages.push(`שגיאה: העלאת הקובץ ${file.getName()} לנתיב ivr2:/${path} עם הפרמטרים convertAudio=${convert}, autoNumbering=${autoNumbering} נכשלה. להלן טקסט התגובה: ${request.getResponseCode()}, ${request.getContentText()}`);
                                  return false;
                                }
                              }
                              
                              תגובה 1 תגובה אחרונה תגובה ציטוט 2
                              • פוסט ראשון
                                פוסט אחרון