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

    קוד להודעה אישית במהלך האזנה - מישהו מוכן להעלות לשרת שלו?

    פורום מפתחים API
    6
    45
    811
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • C
      CUBASE @amp Software 0 נערך לאחרונה על ידי CUBASE

      @amp-Software-0 שוב לא עובד,

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

      בכל זאת, הנה מעודכן:

      <?php
      
      // הודעות מערכת
      const MsgRecordInstructions = "m-1012";
      const MsgMenuRecordInstructions = "m-1009";
      const MsgBranchConfigError = "m-1120";
      const MsgRecordSaved = "m-1452";
      const MsgRecordCanceled = "m-1306";
      const MsgContinueRecording = "m-2196";
      const MsgNoPhone = "m-1494";
      const MsgERROR = "m-1080";
      
      // פונקציה ליצירת פקודת read
      function CreateReadCommand(string $Message, array $Values): string {
          $FormattedValues = implode(",", $Values);
          return "read={$Message}={$FormattedValues}";
      }
      
      // פונקציות נוספות
      
      function record_play(string $RecordPath): string {
          return "id_list_message=f-{$RecordPath}&" . MenuRecord();
      }
      
      function record_ok(string $token, string $RecordPath, string $GetPhone, string $GoToFolderAndPlay, string $ymApi): string {
          $folderMove = isset($_GET["folder_move"]) ? $_GET["folder_move"] : "/personalMessages";
          $encodedWhat = urlencode("ivr2:{$RecordPath}.wav");
          $encodedTarget = urlencode("ivr2:{$folderMove}/Phone/{$GetPhone}");
          CheckIfFolderExists($token, $encodedTarget, $ymApi, $GoToFolderAndPlay);
          $url = "{$ymApi}FileAction?token={$token}&action=move&what={$encodedWhat}&target={$encodedTarget}";
          file_get_contents($url);
          unset($_SESSION["IfRecorded"]);
          return "id_list_message=" . MsgRecordSaved . "&go_to_folder_and_play={$GoToFolderAndPlay}";
      }
      
      function record_ok_and_run_tzintuk(string $token, string $RecordPath, string $GetPhone, string $GoToFolderAndPlay, string $ymApi): string {
          $folderMove = isset($_GET["folder_move"]) ? $_GET["folder_move"] : "/personalMessages";
          $encodedWhat = urlencode("ivr2:{$RecordPath}.wav");
          $encodedTarget = urlencode("ivr2:{$folderMove}/Phone/{$GetPhone}");
          CheckIfFolderExists($token, $encodedTarget, $ymApi, $GoToFolderAndPlay);
          $url = "{$ymApi}FileAction?token={$token}&action=move&what={$encodedWhat}&target={$encodedTarget}";
          file_get_contents($url);
          RunTzintuk($token, $GetPhone, $ymApi);
          unset($_SESSION["IfRecorded"]);
          return "id_list_message=" . MsgRecordSaved . "&go_to_folder_and_play={$GoToFolderAndPlay}";
      }
      
      function record_again(string $hangupInsertFile, $RecordName): string {
          $_SESSION["IfRecorded"] = "yes";
          $recordValues = [
              "Record", "", "record", "/ApiTempFiles", $RecordName, "no", $hangupInsertFile
          ];
          return CreateReadCommand(MsgRecordInstructions, $recordValues);
      }
      
      function record_cancel(string $token, string $RecordPath, string $GoToFolderAndPlay, string $ymApi): string {
          $encodedWhat = urlencode("ivr2:{$RecordPath}.wav");
          $url = "{$ymApi}FileAction?token={$token}&action=delete&what={$encodedWhat}";
          file_get_contents($url);
          unset($_SESSION["IfRecorded"]);
          return "id_list_message=" . MsgRecordCanceled . "&go_to_folder_and_play={$GoToFolderAndPlay}";
      }
      
      function continue_recording(string $hangupInsertFile, $RecordName): string {
          $_SESSION["IfRecorded"] = "yes";
          $recordValuesContinue = [
              "Record", "", "record", "/ApiTempFiles", $RecordName, "no", $hangupInsertFile, "yes"
          ];
          return CreateReadCommand(MsgContinueRecording, $recordValuesContinue);
      }
      
      // מערך פונקציות
      $recordFunctions = [
          "1" => "record_play",
          "2" => "record_ok_and_run_tzintuk",
          "3" => "record_again",
          "4" => "record_cancel",
          "5" => "continue_recording",
      ];
      
      function RecordFunc(string $hangupInsertFile): string {
          $_SESSION["IfRecorded"] = "yes";
          $recordValues = [
              "Record", "", "record", "/ApiTempFiles", "", "no", $hangupInsertFile
          ];
          return CreateReadCommand(MsgRecordInstructions, $recordValues);
      }
      
      function MenuRecord (): string {
          if (isset($_SESSION["IfRecorded"]) && $_SESSION["IfRecorded"] == "yes") {
              $_SESSION["IfRecorded"] = "no";
          }
      
          $menuRecordValues = [
              "MenuRecord", "", "1", "", "", "NO", "", "", "", "", "", "", "", "", "no"
          ];
          return CreateReadCommand(MsgMenuRecordInstructions, $menuRecordValues);
      }
      
      function RunTzintuk(string $token, string $GetPhone, string $ymApi) {
          $callerId = isset($_GET["tzintuk_your_id"]) ? $_GET["tzintuk_your_id"] : null;
          $TzintukTimeOut = isset($_GET["tzintuk_timeout"]) ? $_GET["tzintuk_timeout"] : null;
          $url = "{$ymApi}RunTzintuk?token={$token}&phones=tzl:{$GetPhone}&callerId={$callerId}&TzintukTimeOut={$TzintukTimeOut}";
          file_get_contents($url);
      }
      
      function CheckIfFolderExists(string $token, string $encodedTarget, string $ymApi, string $GoToFolderAndPlay) {
          $url = "{$ymApi}CheckIfFileExists?token={$token}&path={$encodedTarget}/ext.ini";
      
          $ch = curl_init($url);
          curl_setopt_array($ch, [
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_TIMEOUT => 10,
          ]);
      
          $response = curl_exec($ch);
      
          if (curl_errno($ch)) {
              $error_message = 'cURL Error';
              echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
              exit;
          } else {
              $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
              if ($http_code == 200) {
                  // פענוח JSON
                  $result = json_decode($response, true);
      
                  // בדיקה האם הפענוח הצליח והשדה fileExists קיים
                  if ($result !== null && isset($result['fileExists'])) {
                      
                      // בדיקה אם השדה fileExists מכיל false
                      if ($result['fileExists'] == false) {
                          $OpenFolder = "{$ymApi}UpdateExtension?token={$token}&path={$encodedTarget}";
                          file_get_contents($OpenFolder);
                          $DeleteExtFile = "{$ymApi}FileAction?token={$token}&action=delete&what={$encodedTarget}/ext.ini";
                          file_get_contents($DeleteExtFile);
                      }
                  } else {
                      $error_message = "Invalid JSON response or 'file' field not found/incorrect format Response";
                      echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
                      exit;
                  }
              } else {
                  $error_message = "HTTP Error: {$http_code} Response: {$response}";
                  echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
                  exit;
              }
          }
      
          curl_close($ch);
      }
      
      // יצירת משתנים גלובליים - מוקדם יותר ועם בדיקות קיום
      $ymApi = "https://www.call2all.co.il/ym/api/";
      
      $ApiDID = isset($_GET["ApiDID"]) ? $_GET["ApiDID"] : null;
      $pass = isset($_GET["pass"]) ? $_GET["pass"] : null;
      $ApiCallID = isset($_GET["ApiCallId"]) ? $_GET["ApiCallId"] : null;
      $ApiExtension = isset($_GET["ApiExtension"]) ? $_GET["ApiExtension"] : null;
      $ApiWhat = isset($_GET["what"]) ? $_GET["what"] : null;
      $PlayStop = isset($_GET["PlayStop"]) ? $_GET["PlayStop"] : null;
      
      if (!$ApiDID || !$pass || !$ApiCallID || !$ApiExtension || !$ApiWhat) {
          echo "id_list_message=" . MsgBranchConfigError;
          exit;
      }
      
      // יצירת טוקן עם קידוד URL
      $token = urldecode("{$ApiDID}:{$pass}");
      
      $ApiWhatFile = $ApiWhat && $ApiExtension ? str_replace("ivr2:/{$ApiExtension}/", "", $ApiWhat) : null;
      $ApiWhatFile = $ApiWhatFile ? substr($ApiWhatFile, 0, strrpos($ApiWhatFile, ".")) : null;
      $GoToPlayStop = $PlayStop ? $PlayStop - 5000 : null;
      $GoToFolderAndPlay = "/{$ApiExtension},{$ApiWhatFile},{$GoToPlayStop}";
      
      
      if (isset($_GET["hangup_insert_file"]) && $_GET["hangup_insert_file"] == "yes") {
          $hangupInsertFile = "yes";
      }else{
          $hangupInsertFile = "";
      }
      
      
      if (isset($_GET["hangup_send_tzintuk"]) && $_GET["hangup_send_tzintuk"] == "yes") {
          $hangupSendTzintuk = "yes";
      }else{
          $hangupSendTzintuk = "";
      }
      
      // בניית כתובת ה-API המלאה עם הטוקן והפרמטרים
      $GetFileInfo = "{$ymApi}GetFile?token={$token}&what=" . urlencode($ApiWhat);
      
      // ביצוע בקשת GET עם cURL
      $ch = curl_init($GetFileInfo);
      curl_setopt_array($ch, [
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_TIMEOUT => 10,
      ]);
      
      $response = curl_exec($ch);
      
      if (curl_errno($ch)) {
          $error_message = 'cURL Error';
          echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
          exit;
      } else {
          $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
          if ($http_code == 200) {
              // פענוח JSON
              $result = json_decode($response, true);
      
              // בדיקה אם הפענוח הצליח והשדה file קיים והוא מערך
              if ($result !== null && isset($result['file']) && is_array($result['file'])) {
                  
                  // בדיקה אם השדה phone מכיל null או משהו אחר
                  if ($result['file']['phone'] !== null) {
                      $GetPhone = $result['file']['phone'];
                  } else {
                      echo "id_list_message=" . MsgNoPhone . "&go_to_folder_and_play={$GoToFolderAndPlay}";
                      exit;
                  }
      
              } else {
                  $error_message = "Invalid JSON response or 'file' field not found/incorrect format Response";
                  echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
                  exit;
              }
          } else {
              $error_message = "HTTP Error: {$http_code} Response: {$response}";
              echo "id_list_message=" . MsgERROR .  ".noop-{$error_message}&go_to_folder_and_play={$GoToFolderAndPlay}";
              exit;
          }
      }
      
      curl_close($ch);
      
      
      session_id($ApiCallID);
      session_start();
      
      // טיפול בהקלטה אישית
      if (!isset($_GET["Record"])) {
      
          echo RecordFunc($hangupInsertFile);
          exit;
      
      }else{
          
          $RecordPath = str_replace(".wav", "", $_GET["Record"]);
          $RecordName = str_replace("/ApiTempFiles" . "/", "", $RecordPath);
      }
      
      
      if (isset($_GET["hangup"]) && $hangupInsertFile == "yes") {
          if ($hangupSendTzintuk == "yes") {
              record_ok_and_run_tzintuk($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
          }else{
              record_ok($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
          }
          exit;
      
      }elseif (isset($_GET["hangup"])){
          record_cancel($token, $RecordPath, $GoToFolderAndPlay, $ymApi);
          exit;
      }
      
      
      // טיפול בתפריט
      if (isset($_SESSION["IfRecorded"]) && $_SESSION["IfRecorded"] == "yes") {
      
          echo MenuRecord();
      
          exit;
      }
      
      // טיפול בהקשות
      if (isset($_GET["MenuRecord"])) {
          
          $menuRecordOption = $_GET["MenuRecord"];
      
          $optionsParam = "menu_record_options_" . $menuRecordOption;
      
          if (isset($_GET[$optionsParam])) {
              $optionValue = $_GET[$optionsParam];
      
              if (function_exists($optionValue) || $optionValue == "noop") {
                      if ($optionValue == "record_play") {
                          echo record_play($RecordPath);
                      } elseif ($optionValue == "record_ok") {
                          echo record_ok($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
                      } elseif ($optionValue == "record_ok_and_run_tzintuk") {
                          echo record_ok_and_run_tzintuk($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
                      } elseif ($optionValue == "record_again") {
                          echo record_again($hangupInsertFile, $RecordName);
                      } elseif ($optionValue == "record_cancel") {
                          echo record_cancel($token, $RecordPath, $GoToFolderAndPlay, $ymApi);
                      } elseif ($optionValue == "continue_recording") {
                          echo continue_recording($hangupInsertFile, $RecordName);
                      } elseif ($optionValue == "noop") {
                          echo MenuRecord();
                  }
              }
          } else {
              if (array_key_exists($menuRecordOption, $recordFunctions)) {
                  $functionToCall = $recordFunctions[$menuRecordOption];
                  if ($functionToCall == "record_play") {
                      echo record_play($RecordPath);
                  } elseif ($functionToCall == "record_ok") {
                      echo record_ok($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
                  } elseif ($functionToCall == "record_ok_and_run_tzintuk") {
                      echo record_ok_and_run_tzintuk($token, $RecordPath, $GetPhone, $GoToFolderAndPlay, $ymApi);
                  } elseif ($functionToCall == "record_again") {
                      echo record_again($hangupInsertFile, $RecordName);
                  } elseif ($functionToCall == "record_cancel") {
                      echo record_cancel($token, $RecordPath, $GoToFolderAndPlay, $ymApi);
                  } elseif ($functionToCall == "continue_recording") {
                      echo continue_recording($hangupInsertFile, $RecordName);
                  }
              }else{
                  echo MenuRecord();
              }
          }
      }
      
      ?>
      
      A תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • A
        amp Software 0 @CUBASE נערך לאחרונה על ידי

        @CUBASE
        זה קצת לא הגיוני ההתנהלות, אם אין לך שרת לבצע בדיקות, לא יהיה לדבר סוף,
        אתה חייב לבדוק את הקוד שלך היטב ואח"כ להעלות אותו. אני יכול להיות שרת פרודקשן אבל לא שרת טסט..

        @CUBASE כתב בקוד להודעה אישית במהלך האזנה - מישהו מוכן להעלות לשרת שלו?:

        רוצה להקצות לי תיקייה בשרת שלך ואעדכן בעצמי כל פעם?

        אני מניח שלא התכוונת ברצינות..

        בכל אופן כרגע העלתי את הקוד המעודכן

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

          @amp-Software-0 תותח אתה !!

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

            @amp-Software-0 כתב בקוד להודעה אישית במהלך האזנה - מישהו מוכן להעלות לשרת שלו?:

            @CUBASE
            זה קצת לא הגיוני ההתנהלות, אם אין לך שרת לבצע בדיקות, לא יהיה לדבר סוף,
            אתה חייב לבדוק את הקוד שלך היטב ואח"כ להעלות אותו

            יש לי שרת לבדיקות, הבעיה שא"א לגשת אליו ב-API ואני מנסה כמה שאני יכול לדמות שיחה, לפעמים אני יכול לתפוס את הבאג רק אחרי שאני מקשיב בטלפון, לדוג' היה באג שבהשמעת קובץ כתבתי id_list_message=/ApiTempFiles/000 .wav, כשראיתי את זה במחשב לא יכולתי לדעת שזה באג, אחרי ששמעתי בטלפון הבנתי שהייתה לי טעות...

            ע תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • C
              CUBASE נערך לאחרונה על ידי CUBASE

              פוסט זה נמחק!
              צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • צ
                צדיק תמים מומחה @CUBASE נערך לאחרונה על ידי צדיק תמים

                @CUBASE אדם שפוי לא יפתח דרך להעלות לשרת שלו קוד שרירותי
                לגבי חיבור לימות - תריץ מקומית למחשב ותנגיש את זה לימות על ידי ngrok

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

                  @CUBASE יש היום שרתים בכלום כסף, אני שוכר שרת בבערך 15 לחודש, אתה יכול לשכור לכמה ימים ולבטל, דברו גם על firebase של גוגל שזה עוד יותר זול

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

                    @עידו @צדיק-תמים כל עוד אני עושה את זה בתור תחביב ולא בתור מקצוע - אני לא הולך לשלם...

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

                      @CUBASE גם לא 5 שקל בשביל הבדיקה?
                      חבל תמורת 5 (ואולי פחות) שקל אתה יכול למנוע את כל הטרטורים, להעלות לבדוק לתקן ושוב להעלות וחוזר חלילה.

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

                        @עידו בשביל מה, אני עכשיו משתמש בפתרון של @צדיק-תמים ...

                        באמצע התקנה של ngrok...

                        תגובה 1 תגובה אחרונה תגובה ציטוט 2
                        • C
                          CUBASE נערך לאחרונה על ידי

                          @צדיק-תמים בהדרכת צ'אט ג'י פי טי התקנתי על המחשב php ו-ngrok - עובד טוב, אבל כשאני רוצה לבצע פנייה באמצעות curl - המחשב נכשל...

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

                            @CUBASE כתב בקוד להודעה אישית במהלך האזנה - מישהו מוכן להעלות לשרת שלו?:

                            המחשב נכשל

                            מה הכוונה?

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

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

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

                                @CUBASE אני לא מצליח להבין אותך
                                אם אתה מעוניין בעזרה - תפרט יותר

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

                                  @צדיק-תמים מה לא מובן?,

                                  בקוד כתבתי שאם יש שגיאה בפנייה ב-cURL אז ידפיס שגיאה, כשהפעלתי את הקוד דרך ngrok אז קיבלתי את השגיאה הזאת שזה אומר שהיתה שגיאה בפנייה ואין לי פירוט מדויק ממה נבעה השגיאה אז אני שואל מה עלי לעשות כדי לבדוק ממה נובעת השגיאה...

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

                                    @CUBASE להדפיס את השגיאה המדויקת, כדי שיהיה אפשר להבין איפה הבעיה

                                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                    • ד
                                      ד.סופר 0 @CUBASE נערך לאחרונה על ידי

                                      @CUBASE אם אפשר לשאול איך אני משתמש אם המודול שבנית!
                                      בתודה מראש!
                                      ובהצלחה חה חה חה !

                                      א תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                      • א
                                        אA @ד.סופר 0 נערך לאחרונה על ידי

                                        @ד-סופר-0
                                        https://f2.freeivr.co.il/post/140848

                                        ד 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                        • ד
                                          ד.סופר 0 @אA נערך לאחרונה על ידי

                                          @אA תודה רבה!
                                          (החזרת לי)

                                          תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                          • ד
                                            ד.סופר 0 @אA נערך לאחרונה על ידי

                                            @אA אולי תוכל לעזור לי שם?

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