מדריך | קבלת צינתוק עם הגעת מייל חדש
-
@צדיק-תמים
אתה צודק במאה אחוז GET פירושו לקבל וכוונתי הייתה שבמקום לקבל את תוכן ההודעה בGET אשמח לקבלו בPOST
וכעת לעניינינו יש לך איך לעזור בעניין??? -
@כמה-טוב-השם
כמו שאי אפשר לשלוח בget ככה אי אפשר לקבל בpost...
לא יודע איך הגעת למסקנה שזה מגיע דרך get ולכן זה לא עובד...
המידע מגיע דרך הפונקציה()lastMsg.getPlainBody
שהיא בכלל פונקציה של gs (גוגל סקריפט), כלומר חלק מהפונקציות שמוטמעות בגוגל סקריפט... -
@צדיק-תמים
הגעתי למסקנה הזו משום שלאחר 150 תווים זה נתקע מה שלא מאפשר שליחת מלל של כל ההודעה -
@כמה-טוב-השם אז מה?
מי אמר לך שזה נתקע בשלב של קבלת המידע?
אולי זה הגבלה של ימות?
וגם את זה נתקע בשלב הזה, אולי זה הגבלה בפונקציה של גוגל סקריפט?
תנסה לבדוק בתיעוד...
אתה יכול כמובן גם לעשות הדפסה של גוף המייל, ואז לבדוק בהסטוריה... -
@צדיק-תמים
אני אישית שולח את זה לשרת שלי ולא לימות
אבל אני יבדוק -
@כמה-טוב-השם אין קשר ישיר כל כך בין JavaScript ל HTTP Methods כמו post ו get. בוא נגיד שאם אתה יודע PHP, יש יותר סיכוי שתכיר את העניינים האלו.
בכל מקרה, הבעיה פה לא כל כך מובנת. תנסה להסביר יותר מה אתה רוצה שיקרה.
או בקיצור: Get ו Post למי שלא יודע, הם HTTP Methods, והתפקיד שלהם הוא סמלי בלבד. כלומר: אפשר לשלוח מידע ולקבל מידע ב Get וכנ"ל ב Post, כנ"ל ב Put, כנ"ל ב Delete וכנ"ל ב Patch וכו'.
ובתשובה לשאלה שלך: אם השרת מתוכנת להתייחס לבקשות Post, אז אפשר לשלוח לו גם בקשות post, אין שום בעיה. ואם השרת לא מתוכנת להתייחס לזה, אז זה לא יעבוד. -
@מוטי-אורן @כמה-טוב-השם @צדיק-תמים @שאול-נ-י
אני משתמש בקוד הזה שהעלו כאן
(שינתי אותו קצת שבמקום שישלח לAPI של ימות, ישלח לשרת שלי ושם אני מכניס את זה לקו כהודעת שמע)הבעיה היא שכל פעם שהמייל קצת ארוך, הוא לא נשלח, וגוגל סקריפט שולח לי למייל את השגיאה הזאת:
אין לי ידע בכלל בגוגל סקריפט,
אבל אני שואל האם שייך לשלוח את התוכן בגוף הבקשה (בפוסט), במקום ב- URL ??? -
@דוד-ב אז אני מסביר שוב. האם אפשר? חד משמעית כן, כמובן שאפשר. כמו שאתה יכול לראות פה בדיוק איך עושים את זה.
השאלה האמיתית היא, האם יש טעם לשלוח את הנתונים ב Post, וזה כבר תלוי במתכנת של השרת. מהסיבה הפשוטה, שאם השרת לא מתוכנת להתייחס לבקשות מסוג Post, אז אין שום טעם לשלוח בפוסט.@צדיק-תמים זה לא קשור ספציפית ל GS. זה נושא מאוד פשוט ובסיסי של HTTP Methods כמו שכבר הזכרתי.
נ.ב. מומלץ לקרוא את המאמר שבקישור, הוא יכול לעשות לכם סדר
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods -
@מוטי-אורן
לתכנת שהשרת שלי יקבל את הנתונים בפוסט אני יודע לעשות.
(גם ל API של ימות המשיח אפשר לשלוח נתונים גם ב POST וגם ב -GET)הבעיה היא שאני לא מבין בכלל בGS ולכן שאלתי אם יש סיכוי שמי שכתב את הקוד למעלה יוכל לשנות את את זה שישלח בצורה אחרת
-
@דוד-ב אמר במדריך | קבלת צינתוק עם הגעת מייל חדש:
@מוטי-אורן
לתכנת שהשרת שלי יקבל את הנתונים בפוסט אני יודע לעשות.
(גם ל API של ימות המשיח אפשר לשלוח נתונים גם ב POST וגם ב -GET)הבעיה היא שאני לא מבין בכלל בGS ולכן שאלתי אם יש סיכוי שמי שכתב את הקוד למעלה יוכל לשנות את את זה שישלח בצורה אחרת
למה לא אמרת? אם ככה זה מעולה. תסתכל בקישור שנתתי לך, אתה מן הסתם תבין מאוד מהר מה לעשות. זה ממש פשוט.
שים לב שאני מתכוון לקישור הראשון. -
@דוד-ב אתה יודע מה? אני יסביר, אתה תראה לבד כמה זה קל.
פשוט להעביר ארגומנט נוסף לפונקצייה של fetch, שהוא יהיה אובייקט של אפשרויות.
אחת מהאפשרויות היא method, ואתה פשוט צריך להעביר לה את הערך post כסטרינג.קח דוגמא:
const options = { method: 'post', // במקרה שלנו שאתה רוצה פוסט payload: 'Request body' // תוכן הבקשה } UrlFetchApp.fetch('https://my-url.com', options);
אפשר גם:
UrlFetchApp.fetch('https://my-url.com', { method: 'post', payload: 'Request body' });
-
@דוד-ב ו @כמה-טוב-השם וכל מי שביקש
אז סוף סוף ימות פרסמו API מיוחד לשליחת סמס
אז כתבתי ע"פ ה-API החדש, ובשליחה בפוסטfunction sendSms() { const inboxThreads = GmailApp.search('is:inbox newer_than:1h'); for(const thread of inboxThreads){ const minutAgo = new Date (Date.now() -300000); if(thread.getLastMessageDate() > minutAgo){ const messages = thread.getMessages(); const lastMessage = messages[messages.length -1]; if(lastMessage.isUnread()){ const sender = lastMessage.getFrom().replace(/</,'').replace(/>/,''); const subject = lastMessage.getSubject(); const body = lastMessage.getPlainBody().trim(); const content = ('הודעה מאת:' + sender + ' נושא:' + subject + '.' + ' גוף ההודעה:' + body); const data = { 'token': '07XXXXXXXX:****', 'from': '07XXXXXXXX', 'message': content, 'phones': '05XXXXXXXX' } const options = { 'method': 'post', 'payload': data } const sms = UrlFetchApp.fetch('https://www.call2all.co.il/ym/api/SendSms?', options) Logger.log(sms) } } } }
כמובן לשנות בשורה 16 למספר המערכת במקום האיקסים והסיסמה במקום הכוכביות
כמו כן בשורה 17 מספר הזיהוי שממנה יצא הסמס (אפשר לוותר על זה ולמחוק. ברירת מחדל, מספר המערכת הראשי.)
ו.. בשורה 19 מספר הטלפון שאיליה יישלח הסמסוכמובן להפעיל את הטריגר כדלעיל
-
קיראו את הטקסט הבא!!!
"הסקריפט שלך, פרויקט ללא שם, לא הושלם בהצלחה. להלן סיכום של הכשלים. כדי להגדיר את הגורמים המפעילים של הסקריפט, או כדי לשנות את ההגדרות שלך לקבלת התראות על כשל בעתיד.
הודעת שגיאה ספירה
מצטערים, אירעה שגיאת שרת במהלך הקריאה מהאחסון. קוד שגיאה: INTERNAL. 1
מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. 2
הפעלה פונקציה הודעת שגיאה הפעלה סיום
12:19:08 IST 04/12/21 tzintukim מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. time-based 12:20:08 IST 04/12/21
17:10:17 IST 04/12/21 tzintukim מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. time-based 17:11:17 IST 04/12/21
09:27:08 IST 05/12/21 tzintukim מצטערים, אירעה שגיאת שרת במהלך הקריאה מהאחסון. קוד שגיאה: INTERNAL. time-based 09:27:13 IST 05/12"זוהי ההודעה שנשלח אלי בתדירות גבוהה, אם מישהו יודע מה הבעיה בהגדרות הסקריפט שלי, ומה אני אמור לתקן אשמח מאד שתעדכנו אותי,
וקחו בחשבון שכל פעם שמגיע כזה הודעה, הרי נשלח אלי צינתוק, ואני בטוח שמדובר במייל חדש חשוב.... -
@אמונה אמר במדריך | קבלת צינתוק עם הגעת מייל חדש:
קיראו את הטקסט הבא!!!
"הסקריפט שלך, פרויקט ללא שם, לא הושלם בהצלחה. להלן סיכום של הכשלים. כדי להגדיר את הגורמים המפעילים של הסקריפט, או כדי לשנות את ההגדרות שלך לקבלת התראות על כשל בעתיד.
הודעת שגיאה ספירה
מצטערים, אירעה שגיאת שרת במהלך הקריאה מהאחסון. קוד שגיאה: INTERNAL. 1
מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. 2
הפעלה פונקציה הודעת שגיאה הפעלה סיום
12:19:08 IST 04/12/21 tzintukim מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. time-based 12:20:08 IST 04/12/21
17:10:17 IST 04/12/21 tzintukim מצטערים, התרחשה שגיאת שרת. יש להמתין מעט ולנסות שוב. time-based 17:11:17 IST 04/12/21
09:27:08 IST 05/12/21 tzintukim מצטערים, אירעה שגיאת שרת במהלך הקריאה מהאחסון. קוד שגיאה: INTERNAL. time-based 09:27:13 IST 05/12"זוהי ההודעה שנשלח אלי בתדירות גבוהה, אם מישהו יודע מה הבעיה בהגדרות הסקריפט שלי, ומה אני אמור לתקן אשמח מאד שתעדכנו אותי,
וקחו בחשבון שכל פעם שמגיע כזה הודעה, הרי נשלח אלי צינתוק, ואני בטוח שמדובר במייל חדש חשוב....גם לי היו שגיאות שגרמו לצינתוק, והגדרתי ש[כמעט ו]לא ידווח על שגיאות [אם אני זוכר, אין כזו אפשרות, רק שידווח פעם ב...]
-
האם יש אפשרות לעשות צינתוק במקרה שיש לי שני מכשירי טלפון ואני רוצה לדעת במכשיר מס' 2 שקיבלתי שיחה במכשיר מס' 1 ??