תזכורת ספירת העומר
-
@אa לא הבנתי את ההגדרה שלך בספירת העומר אני רוצה בקו שלי שבחיוג ישמע תזכורת ספירת העומר רק מי שביקש לקבל תזכורת ואני רוצה שיהיה יכולת לדווח על ספירה ואז בחיוג הבא לא ישמיע לו
אז חשבתי לעשות הודעת קמפיין ומי שרוצה נרשם לרשימת תפוצה ואז אחרי שהוא ספר הוא בעצם מסיר את עצמו אבל אז יום למחרת הוא לא ישמע?
בקיצור מה הנוסחה הכי קלה לעשות פילטר שישמיע תזכורת ספירת העומר רק למי שרוצה ורק עד שידווח שבירך
תודה מראש -
@BEN-ZION
אז אני הצעתי הפוך.
שיהיה פילטר לפי רשי"ת, ומי שלא רשום נכנס לשמוע את התזכורת וכשמאשר הוא נכנס לשלוחת הוספה לרשי"ת. ותיצור שלוחת איפוס. -
@אA ואיך מי שלא רוצה לא ישמע ?
-
@BEN-ZION
מי שבכלל לא רוצה לשמוע?
אז תכניס אותו לרשימה אחרת.
ובפילטר תגדיר שיבדוק ב2 הרשימות. -
@BEN-ZION
ואם אתה רוצה שמי שלא רשום לא יצטרך לבצע שום פעולה, נעשה משהו אחר.
תגדיר מעבר לפי מחייג והוספת ערך של הID לקובץ ההפנייה וכך רק מי שרשום מופנה לשלוחה הפנימית ושם תשים את הפילטר לפי רשי"ת. -
@אA הגדרתי הודעת קמפיין רק למי שפעיל ברשימה ועשתי שלוחת API לדיווח שהוא הופך את עצמו לחסום וכתבתי קוד שלפני השקיעה הופך את כולם לפעילים בחזרה
-
@BEN-ZION
אולי תפרסם אותו לטובת כולם -
@אA מצרף נוסחה לתזכורת ספירת העומר
בשלוחה ראשית להגדיר שישמיע הודעה לקמפיין פעיל בלבד
שלוחה לדיווח על ספירה שלוחה 2 הוספת ערך
זה להוסיף את המספר של המחייג לדיווחtype=add_id_to_list enter_id=yes enter_id_type=phone record_name=no say_name=no add_id_to_list_location_list=/2/1/ext add_id_to_list_value_type=EnterID add_id_to_list_key=api_add_3 add_id_to_list_value_first=phone= add_id_to_list_value_change=yes add_id_to_list_end_goto=1להשתיק הודעה M3411
שלוחה 1 בתוך שלוחה 2
שלוחת APItype=api title=דיווח על ספירה api_link=https://private.call2all.co.il/ym/api/UpdateTemplateEntry api_add_0=token=להכניס כאן טוקן api_add_1=templateId=מזהה רשימת תפוצה api_add_2=blocked=1 api_end_goto=נתיב לאן יחזור בסיוםלהעלות הודעה M1607 "הדיווח התקבל בהצלחה"
קוד PHP לשחרור כל החסימות<?php // ========================================== // הגדרות מערכת ופרטי התחברות // ========================================== $token = 'token'; // הכנס כאן את הטוקן שלך $templateId = 'מזהה_רשימה'; // הכנס כאן את מזהה התבנית $apiUrl = 'https://private.call2all.co.il/ym/api/'; // קואורדינטות לחישוב השקיעה (ברירת מחדל: אזור המרכז/ירושלים) $latitude = 31.7690; $longitude = 35.2163; // ========================================== // 1. בדיקת תאריך עברי (בין ט"ז ניסן ל-ה' סיוון) // ========================================== $todayJd = gregoriantojd(date('n'), date('j'), date('Y')); $hebrewDate = cal_from_jd($todayJd, CAL_JEWISH); $monthName = $hebrewDate['monthname']; // שם החודש באנגלית (Nisan, Iyyar, Sivan) $day = $hebrewDate['day']; $isValidDate = false; if ($monthName === 'Nisan' && $day >= 16) { $isValidDate = true; } elseif ($monthName === 'Iyyar') { $isValidDate = true; } elseif ($monthName === 'Sivan' && $day <= 5) { $isValidDate = true; } if (!$isValidDate) { exit("התאריך העברי הנוכחי אינו בטווח של ימי ספירת העומר (ט\"ז ניסן - ה' סיוון). הסקריפט מופסק.\n"); } // ========================================== // 2. בדיקת זמן השקיעה (האם זו הריצה הקרובה ביותר?) // ========================================== $sunInfo = date_sun_info(time(), $latitude, $longitude); $sunsetTime = $sunInfo['sunset']; $currentTime = time(); // אנחנו מריצים את הסקריפט כל 10 דקות (600 שניות). // הריצה הקרובה ביותר לשקיעה תהיה במרחק של עד 5 דקות (300 שניות) מהשקיעה. // אנו משתמשים ב- >= -300 ו- < 300 כדי להבטיח שאם השקיעה נופלת בדיוק באמצע, הסקריפט ירוץ רק פעם אחת. $diff = $currentTime - $sunsetTime; if ($diff < -300 || $diff >= 300) { exit("השעה הנוכחית (" . date('H:i:s', $currentTime) . ") אינה הקרובה ביותר לזמן השקיעה (" . date('H:i:s', $sunsetTime) . "). הסקריפט מופסק.\n"); } echo "תנאי התאריך והשעה התקיימו (שקיעה ב-" . date('H:i:s', $sunsetTime) . "). מתחיל בפעולה מול השרת...\n"; // ========================================== // 3. שליפת רשימת המספרים והוצאת המספרים החסומים // ========================================== $getEntriesUrl = $apiUrl . 'GetTemplateEntries?token=' . urlencode($token) . '&templateId=' . urlencode($templateId); $ch = curl_init($getEntriesUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); if (!$response) { exit("שגיאה בהתקשרות לשרת לשליפת הנתונים.\n"); } $data = json_decode($response, true); $rowidsToUnblock = []; if (isset($data['entries']) && is_array($data['entries'])) { foreach ($data['entries'] as $entry) { if (isset($entry['blocked']) && $entry['blocked'] === true) { $rowidsToUnblock[] = $entry['rowid']; } } } if (empty($rowidsToUnblock)) { exit("לא נמצאו מספרים חסומים ברשימת התפוצה. אין פעולה לבצע.\n"); } // ========================================== // 4. ביטול החסימה למספרים שנמצאו // ========================================== $rowidsString = implode('-', $rowidsToUnblock); $postData = [ 'token' => $token, 'templateId' => $templateId, 'rowids' => $rowidsString, 'action' => 'unblock' ]; $ch = curl_init($apiUrl . 'UpdateTemplateEntries'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); $updateResponse = curl_exec($ch); curl_close($ch); echo "בקשת שחרור חסימה נשלחה עבור " . count($rowidsToUnblock) . " מספרים.\n"; echo "תגובת השרת: " . $updateResponse . "\n"; ?>זה עובד בצורה כזו שכל מי שמדווח על ספירה בעצם חוסם את עצמו ברשימת תפוצה הקוד בשקיעה של יום הבא משחרר לכולם את החסימה ככה הם ישמעו שוב את הודעת הקמפיין הקוד מתוזמן לעבוד רק בין ט"ז ניסן ל ה' סיוון
אני תיזמנתי לו ריצה כל 10 דקות משעה 18:00 עד 19:59 שזה טווח השקיעה ל10 שנים קדימה כל פעם שהוא רץ הוא בודק אם עכשיו אנחנו בטווח של 5 דקות מהשקיעה אז הוא מבצע איפוס
נ.ב. אני משתמש בשלוחה של הקראת הודעה יומית אם תאריך עברי להשמיע את נוסח הספירה@אa אם יש לך כוח לסדר את זה בפוסט הסבר מסודר לתועלת הציבור