• הגדרה בקו כשהשרת מחזיר id_list_message

    נפתר
    27
    0 הצבעות
    27 פוסטים
    1k צפיות
    S
    @עידו כשאני משתמש ב-read עם פרמטר record, אז מה שמוחזר בבקשה העוקבת זה הניתוב לקובץ שהוקלט. ועם הניתוב הזה אתה עושה DownloadFile. שם ההקלטה הוא לא קבוע מראש, אלא כחלק מהפרמטרים שאתה מזין ב-read (עבור record), כלומר שם התיקיה ושם הקובץ שבהם אתה שומר את ההקלטה בימות המשיח, וזה שרירותי, כלומר אתה בוחר את הפרמטרים הללו. לדוגמא: (קוד להמחשה שבניתי) if (!$_GET["target_path_of_name"]) { readRecord("t-אנא הקליטו את שמכם בקול ברור, לסיום הקישו סולמית", "target_path_of_name", "", "/6/1", time() . "_caller_name_record"); exit; } $target_path_of_name= $_GET["target_path_of_name"]; $audio_stream = post({ url: 'https://www.call2all.co.il/ym/api/DownloadFile', token: 'username:password', path: "ivr2:$target_path_of_name" }) $destPath = __DIR__ . '/./audio/' . time() . 'bla.wav'; file_put_contents($destPath, $audio_stream); function readRecord( $prompt, $param_name, $get_new_value = '', $api_dir = '', $file_name = '', $play_menu = '', $save_on_hangup = '', $file_exists_record_append = '', $min_record_time = '', $max_record_time = '' ) { echo "read=$prompt=$param_name,$get_new_value,record,$api_dir,$file_name,$play_menu,$save_on_hangup,$file_exists_record_append,$min_record_time,$max_record_time"; }
  • אין מענה משרת API

    2
    0 הצבעות
    2 פוסטים
    127 צפיות
    ע
    @795501400 צריך לשים לב שאסור שיהיה מקף בתגובה מהשרת (מלבד בהגדרת התגובה/פעולה). וכן אם משרשרים תגובה צריך שלא יהיה רווח בין הנקודה לפקודה הבאה.
  • סנכרון נתונים מנדרים פלוס

    4
    0 הצבעות
    4 פוסטים
    171 צפיות
    ע
    @אA אתה רוצה לעדכן בקו? אם אתה מתכוון למודל הזה אז יש שם את הקובץ Donation_Amount.ini שבו מופיע כמה כסף תרמו וכמה תורמים תרמו. מזהירים לא לשנות אותו ידנית, סה"כ הגיוני... אם יש לך שרת תוכל לעשות שלוחת API ובשרת לבדוק בנדרים פלוס כמה תרמו ובקו כמה תרמו, השרת יחשבן את זה ויחזיר תגובה בהתאם.
  • 3 הצבעות
    4 פוסטים
    220 צפיות
    A
    @CUBASE כתב ברוצים להשמיע הודעה גלובלית במודול API ללא הקמת מאגר? כאן נמצא הפתרון!!! : וגם בזמן ההודעה המערכת לא קולטת את ההקשות בעיה די קריטית...
  • הודעות מערכת של תאריכים עבריים

    1
    0 הצבעות
    1 פוסטים
    142 צפיות
    אין תגובות
  • אחסון חינמי? מודול API

    2
    0 הצבעות
    2 פוסטים
    117 צפיות
    צ
    @מים-אחרונים כשהפוסט נכתב הוא היה חינמי
  • בעיה | תוים נסתרים?

    3
    0 הצבעות
    3 פוסטים
    161 צפיות
    י
    @אופיר תודה רבה. כרגע הסתדר. הסתבר שכשיש גרשיים (") במחרוזת שיוצאת אחרי המניפולציות, זה דופק את כולה. גם את התוים האחרים וגם אם אני מוחק את הגרשיים. אולי משנה את הקידוד או משהו. מחקתי אותם במקורם והסתדר.
  • איך להתחבר עם מייק לימות המשיח?

    לא נפתר
    3
    0 הצבעות
    3 פוסטים
    176 צפיות
    א
    @צבי-ד-צ מה ש@b_f_user רוצה זה רק את זה, לא? (מדריך שלך...)
  • תגובת tts להקשה בשלוחת api בread

    לא נפתר
    6
    1
    0 הצבעות
    6 פוסטים
    223 צפיות
    S
    @799360382 כתב בתגובת tts להקשה בשלוחת api בread: @soris1989 לא בדיוק הבנתי מה אתה אומר (וגם אני יודע לקרוא רק JSON) אבל יש אפשרות להשמיע קובץ קולי אחרי ההקשה ולפני השליחה לשרת, הבעיה היא רק ב TTS אם אני לא טועה ברגע שאתה כותב בקוד echo, אתה שולח לשרת של ימות בקשה עם הנחיה כלשהי: read - נותן הנחיה של קלט (הקשה, הקלטה..) id_list_message - הנחיה של אמירת מלל. הקוד כאן מורכב מ-2 בקשות: הבקשה הראשונית שבה טרם הוזן gender, ובקשה עוקבת של לאחר שהוזן gender (והתווסף ל-query string). הבקשה הראשונית תממש את הקוד הבא: // לפני ההקשה if(!$_GET['gender']) { echo "read=t-לזכר הקש 1, לנקבה הקש 2=gender,...."; exit; } והבקשה העוקבת תממש את הקוד הבא: // לאחר ההקשה - הבקשה העוקבת switch ($_GET['gender']) { case 1 : echo "id_list_message=t-תגובה כלשהי"; exit; case 2 : echo "id_list_message=t-תגובה אחרת"; exit; } לגבי אפשרות השמעת קובץ קולי אחרי ההקשה ולפני השליחה לשרת - לא שידוע לי...
  • UploadFile - העלאת קובץ בAPI

    25
    0 הצבעות
    25 פוסטים
    1k צפיות
    S
    @Freund להלן קוד שעובד להעלאת קובץ: <?php $url = "https://www.call2all.co.il/ym/api/UploadFile"; // Prepare multipart form data $data = [ "token" => "$username:$password", "path" => "ivr2:14/test.wav", "file" => new CURLFile("audio/test.wav", "audio/wav", "test.wav") // File upload ]; // Make the request $response = curl_post_request($url, $data); echo "Response: " . $response; # POST request helper function function curl_post_request(string $url, $data, array $headers = []) { // Initialize cURL $ch = curl_init(); // Set cURL options curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Multipart data // Set headers (DO NOT manually set Content-Type for multipart) curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // Execute request $response = curl_exec($ch); // Handle errors if (curl_errno($ch)) { throw new Exception(curl_error($ch)); } else { return $response; } }
  • מדוע נוצרת השגיאה הזו?

    נפתר
    24
    0 הצבעות
    24 פוסטים
    1k צפיות
    ע
    @soris1989 עובד ב"ה תודה רבה!
  • בקשה לעזרה בקוד פייתון לפעולה במערכת

    8
    0 הצבעות
    8 פוסטים
    316 צפיות
    צ
    @האדם-החושב מתנצל, אני לא כל כך מבין בזה, תוכל להסביר לי את כוונתך? שם יש טעות? להדביק את זה במקום אותם שורות בקוד ששהבאתי? אם תוכל לומר לי בדיוק מה לשנות. כרגע, לאחר שניסיתי לשנות את השורות שהבאת, כך נראה הקוד המלא import requests import csv import io import logging import sys import os import traceback from datetime import datetime, timedelta from typing import List, Dict, Tuple # הגדרת לוגינג log_dir = os.path.join(os.path.dirname(__file__), 'logs') os.makedirs(log_dir, exist_ok=True) log_file = os.path.join(log_dir, 'time_utilization.log') logging.basicConfig( level=logging.DEBUG, # שינוי לרמת דיבאג מלאה format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler(log_file, encoding='utf-8', mode='w'), # מחיקת קובץ לוג קודם logging.StreamHandler(sys.stdout) ] ) # קבועים TOKEN = "079607777:123456" BASE_URL = "https://www.call2all.co.il/ym/api" def convert_hours_to_hebrew_format(total_hours: float) -> str: """המרת שעות לפורמט של שעות ודקות בעברית""" hours = int(total_hours) minutes = int((total_hours - hours) * 60) return f"{hours} שעות ו{minutes} דקות" def get_hebrew_day_name(date: datetime) -> str: """החזרת שם יום בעברית""" hebrew_days = { 0: "ראשון", 1: "שני", 2: "שלישי", 3: "רביעי", 4: "חמישי", 5: "שישי", 6: "שבת" } return hebrew_days[date.weekday()] def get_template_entries() -> List[str]: """קבלת רשימת מספרי פלאפון של לומדים""" url = f"{BASE_URL}/GetTemplateEntries" params = {"token": TOKEN, "templateId": 153193} try: logging.debug(f"שולח בקשה לקבלת רשימת לומדים: {url}") logging.debug(f"פרמטרים: {params}") response = requests.get(url, params=params, timeout=10) response.raise_for_status() logging.debug(f"תגובת השרת: {response.text}") data = response.json() if data["responseStatus"] != "OK": logging.error(f"שגיאה בקבלת רשימת לומדים: {data}") return [] phones = [entry["phone"] for entry in data.get("entries", []) if not entry.get("blocked", False)] logging.info(f"נמצאו {len(phones)} מספרי פלאפון") return phones except requests.exceptions.RequestException as e: logging.error(f"שגיאת רשת בקבלת רשימת לומדים: {e}") logging.error(traceback.format_exc()) return [] def download_ymgr_file(phone: str) -> bytes: """הורדת קובץ YMGR עבור מספר פלאפון""" url = f"{BASE_URL}/RenderYMGRFile" params = { "token": TOKEN, "wath": f"ivr2:/4/PrivateReports/TimeKeeperTotal.{phone}.ymgr", "convertType": "csv", "notLoadLang": 0 } try: logging.debug(f"שולח בקשה להורדת קובץ YMGR עבור {phone}: {url}") logging.debug(f"פרמטרים: {params}") response = requests.get(url, params=params, timeout=10) response.raise_for_status() logging.debug(f"גודל קובץ שהתקבל: {len(response.content)} בתים") with open(os.path.join(log_dir, f'{phone}_ymgr.csv'), 'wb') as f: f.write(response.content) logging.info(f"הורדת קובץ YMGR עבור {phone} בוצעה בהצלחה") return response.content except requests.exceptions.RequestException as e: logging.error(f"שגיאה בהורדת קובץ YMGR עבור {phone}: {e}") logging.error(traceback.format_exc()) raise def process_csv_data(csv_content: bytes, today: datetime) -> float: """עיבוד נתוני CSV והחזרת סך השעות עבור היום הנוכחי""" try: logging.debug("מתחיל לעבד קובץ CSV") csv_text = csv_content.decode('utf-8-sig') with open(os.path.join(log_dir, 'debug_csv.csv'), 'w', encoding='utf-8') as f: f.write(csv_text) reader = csv.DictReader(io.StringIO(csv_text)) total_hours = 0.0 for row in reader: logging.debug(f"עיבוד שורה: {row}") # בדיקת תאריך בעמודה I entry_date_str = row['תאריך כניסה'] entry_date = datetime.strptime(entry_date_str, '%d/%m/%Y') # בדיקה אם התאריך תואם את היום הנוכחי if entry_date.date() == today.date(): # המרת סך השעות מעמודה M hours_str = row['סך הזמן במשמרת'] # פיצול השעות לשעות ודקות time_parts = hours_str.split(':') if len(time_parts) == 3: hours, minutes, _ = map(int, time_parts) elif len(time_parts) == 2: hours, minutes = map(int, time_parts) else: logging.warning(f"פורמט זמן לא תקין: {hours_str}") continue total_hours += hours + (minutes / 60) logging.info(f"סך השעות שחושבו: {total_hours} שעות") return total_hours except Exception as e: logging.error(f"שגיאה בעיבוד נתוני CSV: {e}") logging.error(traceback.format_exc()) return 0.0 def create_tts_file(total_hours: float, today: datetime) -> str: """יצירת קובץ TTS עם סיכום השעות""" try: hebrew_day = get_hebrew_day_name(today) hebrew_date = today.strftime("כ %d %B תשפ״ה") hours_text = convert_hours_to_hebrew_format(total_hours) tts_content = f"סך השעות ליום {hebrew_day} {hebrew_date}: {hours_text}" logging.info(f"נוצר קובץ TTS: {tts_content}") return tts_content except Exception as e: logging.error(f"שגיאה ביצירת קובץ TTS: {e}") logging.error(traceback.format_exc()) return "" def upload_tts_file(phone: str, tts_content: str): """העלאת קובץ TTS לשרת""" url = f"{BASE_URL}/UploadTextFile" params = { "token": TOKEN, "what": f"ivr2:5/{phone}.tts", "contents": tts_content } try: logging.debug(f"שולח בקשה להעלאת קובץ TTS עבור {phone}: {url}") logging.debug(f"פרמטרים: {params}") logging.debug(f"תוכן TTS: {tts_content}") response = requests.get(url, params=params) response.raise_for_status() logging.debug(f"תגובת השרת בהעלאת TTS: {response.text}") logging.info(f"העלאת קובץ TTS עבור {phone} בוצעה בהצלחה") return response except requests.exceptions.RequestException as e: logging.error(f"שגיאה בהעלאת קובץ TTS עבור {phone}: {e}") logging.error(traceback.format_exc()) raise def update_extension(phone: str): """עדכון הרחבה במקרה של שגיאה""" url = f"{BASE_URL}/UpdateExtension" params = { "token": TOKEN, "path": f"ivr2:5/{phone[:6]}", "type": "playfile", "playfile_end_goto": "/0000/999" } try: logging.debug(f"שולח בקשה לעדכון הרחבה עבור {phone}: {url}") logging.debug(f"פרמטרים: {params}") response = requests.get(url, params=params, timeout=10) response.raise_for_status() logging.debug(f"תגובת השרת בעדכון הרחבה: {response.text}") logging.info(f"עדכון הרחבה עבור {phone} בוצע בהצלחה") return response except requests.exceptions.RequestException as e: logging.error(f"שגיאה בעדכון הרחבה עבור {phone}: {e}") logging.error(traceback.format_exc()) raise def main(): logging.info("התחלת הרצת סקריפט ניצול זמן") today = datetime.now() logging.debug(f"תאריך נוכחי: {today}") try: phones = get_template_entries() if not phones: logging.warning("לא נמצאו מספרי פלאפון") return for phone in phones: try: # הורדת קובץ YMGR ymgr_content = download_ymgr_file(phone) # חישוב סך השעות total_hours = process_csv_data(ymgr_content, today) # אם אין שעות ביום הנוכחי, דלג על הלומד הזה if total_hours == 0: logging.info(f"אין שעות ביום הנוכחי עבור {phone}") continue # יצירת קובץ TTS tts_content = create_tts_file(total_hours, today) if not tts_content: logging.warning(f"לא ניתן ליצור קובץ TTS עבור {phone}") continue # העלאת קובץ TTS upload_tts_file(phone, tts_content) except Exception as phone_error: logging.error(f"שגיאה בטיפול בטלפון {phone}: {phone_error}") logging.error(traceback.format_exc()) # במקרה של שגיאה בהעלאה, נסה לעדכן את ההרחבה ואז העלה שוב try: update_extension(phone) upload_tts_file(phone, tts_content) except Exception as retry_error: logging.error(f"שגיאה בניסיון חוזר עבור {phone}: {retry_error}") logging.error(traceback.format_exc()) except Exception as e: logging.error(f"שגיאה כללית: {e}") logging.error(traceback.format_exc()) logging.info("סיום הרצת סקריפט ניצול זמן") if __name__ == "__main__": main() וזה עובד פחות מהקוד הקודם, נראה לי שכלל לא עושה כלום. ממש ממש תודה רבה לך!!! תזכה למצוות!
  • הגדרת קטגורית תרומה בנדרים פלוס | סליקה דרך שלוחת API

    2
    0 הצבעות
    2 פוסטים
    202 צפיות
    צ
    @MGM-IVR תמיד אתה יכול ליצור בAPI שלוחת API זמנית עבור הסליקה הספציפית
  • 0 הצבעות
    7 פוסטים
    529 צפיות
    S
    @מוישי-שובקס הדרך לפתור את זה הוא להוסיף פונקציה encodeURL ולתוכן לשרשר את ה-JSON קודhttps://www.call2all.co.il/ym/api/RunCampaign?token=091234567:1234&ttsMode=1&phones={{encodeURL('{"0533123456":"פנייה מספר 159 למוקד טופלה"}')}}
  • תגובת שרת בgoogle script

    2
    0 הצבעות
    2 פוסטים
    122 צפיות
    ה
    @האדם-החושב עיין כאן.
  • עזרה בהנפקת טוקן API עם הרשאות מוגבלות

    4
    0 הצבעות
    4 פוסטים
    213 צפיות
    צ
    @גולד-תקשורת1 הכל מוסבר בתיעוד
  • האם יש אפשרות שהמערכת תקרא תגובה API של ימות

    2
    0 הצבעות
    2 פוסטים
    107 צפיות
    צ
    @צבי-ד-צ למה למשל שההגדרה הזאת לא תעזור לפחות שישמיע את התגובה כמות שהיא say_api_answer=yes
  • נושא זה נמחק!

    4
    0 הצבעות
    4 פוסטים
    60 צפיות
  • השמעת נתונים למשתמש ללא צורך בקבלת נתונים

    2
    0 הצבעות
    2 פוסטים
    103 צפיות
    M
    @anti-malware כתב בהשמעת נתונים למשתמש ללא צורך בקבלת נתונים: אני מעוניין להשמיע למשתמש טקסט ללא שתהיה לו אופציה להקיש משהו לדוגמא שבתוך השרת מתבצע בדיקה האם יום או לילה ( רק לשם הדוגמא ) ואז הוא ישמיע לו בוקר טוב וימשיך בסקריפט לשלב הבא איך עושים? id_list_message בתשובת מהשרת
  • נושא זה נמחק!

    1
    0 הצבעות
    1 פוסטים
    3 צפיות
    אין תגובות