15 בנוב׳ 2020, 7:55

@רבי-יצחק ו @גבאי
הרעיון הוא כך.
שלוחת ההקלטות לא עשיתי שלוחה 2 בשלוחת הודעות אישיות, אלא עשיתי כך.

שלוחה 0/0/2/ זה שלוחת הפניה לשלוחה אחרת, שהוא מפנה לשלוחה פנימית יותר שהיא שלוחת הקלטות.
בשלוחה הזאת של הפניה לשלוחת ההקלטות, עשיתי כניסה לפי זיהוי id, אבל לא זיהוי הרגיל של הטלפון המחייג, אלא "כניסה לפי טלפון או הקשת טלפון", ואז הוא עובר להקלטה, והמערכת שומרת את ההקלטה בשלוחה בשם PhoneOrEnterPhone, שהכוונה "טלפון או הקשת טלפון".
לבנתיים כרגע הזיהוי של המקליט בתוך המערכת הוא הטלפון אותו הוא הקיש, ואז אחרי ההקלטה הוא עובר לשלוחה של "הוספת ערך id, (מקור בקישור הזה), והמערכת מוסיפה את הטלפון המזוהה כרגע במערכת לתוך הקובץ שהגדרנו שיוסיף.
ולכן שמיעת ההודעה בנויה על "רשימה לבנה" ולא על כניסה לפי רשי"ת, כי הוספת ערך id מתבצע רק לתוך קובץ ini במערכת, וכך ההוספה מתבצעת לתוך קובץ WhiteList.ini, שנמצא בשלוחת שמיעת ההודעה "יש לך הודעה אישית חדשה".

וזה גם שלוחה 0/1/, שלוחה הפוכה מהנ"ל, כלומר, כשהמאזין נכנס לשלוחת ההודעות אישיות, הוא עובר דרך שלוחה שמסירה את ערך הid שלו - שכרגע זה המספר האמיתי בו הוא חייג (מקור).
וממילא, אם הוא קיים ברשימה הלבנה, והוא שומע את ההודעה, אז כשהוא נכנס לשלוחת ההודעות האישיות הוא מוחק את עצמו מהרשימה הלבנה, והוא מפסיק לשמוע את ההודעה "יש לך הודעה אישית חדשה".

ועכשיו שלוחת ההשמעת קבצים בנויה גם על הרעיון הזה, כי הרי השלוחה בנויה שלוקח את ההודעות משלוחת ההקלטות עם זיהוי ה-id של המתקשר.
הבעיה כאן, שאם הוא יכנס סתם ככה עם זיהוי הטלפון שלו (כמו הרעיון של הודעות אישיות שכבר פורסמו הרבה בפורום), המערכת תיקח את ההודעות לשמיעה משלוחה Phone שבשלוחת ההקלטות, הבעיה שהשלוחה הזאת לא קיימת אצלנו, כי כמו שכבר הזכרנו ההקלטות נשמרות בשלוחה PhoneOrEnterPhone.
לכן גם בשמיעת קבצים הייתי צריך לעשות כניסה לפי "טלפון או הקשת טלפון", ואז המערכת תיקח את ההשמעות משלוחה PhoneOrEnterPhone שבשלוחת ההקלטות.
ובשביל שהמאזין לא יצטרך להקיש את מספר הטלפון שלו בשביל לשמוע את ההודעות האישיות שלו, לכן בתפריט הוא אומר "לשמיעת ההודעות האישיות שהושארו עבורכם, הקשו 1 1", כלומר, 1 הראשון זה כניסה לשלוחת השמעת קבצים. 1 השני, זה כניסה עם זיהוי של המחייג, ואז כשהוא מקיש 11 הוא שומע את ההודעות שנמצאים בשלוחה PhoneOrEnterPhone.

והסיבה שהגדרתי לו שיוכלו להכנס רק פעם אחת בכל שיחה, כי הכנסתי לו הגדרה delete_id_exit=yes, שהכוונה שאחרי היציאה מהשלוחה שיצא מהזיהוי שהוא הקיש, הבעיה שהמערכת לא מוציאה אותו מהזיהוי, ולכן אם הוא יוכל להכנס עוד פעם לשלוחת הודעות אישיות, אז אם הוא יקיש רק פעם אחת 1, הוא אוטומטית יכנס עם הזיהוי של הנמען אותו הוא הקיש לפני כן באותה שיחה, ואז הוא פשוט מסיר את הזיהוי שאותו הוא הקיש מהרשימה הלבנה, ומה הועילו חכמים בתקנתם.
בשביל שלא יקרה הפדיחה הזאת, עשיתי שיהיה כניסה פעם אחת בכל שיחה לשלוחת ההודעות האישיות, ואם הוא מנסה להכנס עוד פעם באותה שיחה, הוא עובר לשלוחת הודעות אישיות מזוייפת, ששומעים את התפריט אותו דבר, רק אין את שלוחות 1 ו2 וכו', ואז המאזין יחשוב שפשוט הלחיצות שלו לא נקלטו במערכת, ומי שלא יודע לא אמור לאחוז את הבאג הזה.

בהצלחה