@א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
שלוחת API
type=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 דקות מהשקיעה אז הוא מבצע איפוס
נ.ב. אני משתמש בשלוחה של הקראת הודעה יומית אם תאריך עברי להשמיע את נוסח הספירה
Spoiler
@אa אם יש לך כוח לסדר את זה בפוסט הסבר מסודר לתועלת הציבור