מדריך | קבלת צינתוק עם הגעת מייל חדש
-
@שאול-נ-י אמר במדריך | קבלת צינתוק עם הגעת מייל חדש:
@איציק-בוזגלו אמר במדריך | קבלת צינתוק עם הגעת מייל חדש:
@שאול-נ-י תודה רבה רבה רבה.
אם אני רוצה שבמקום צינתוק ישלח לי הודעה (אפילו בעלות יחידות) ואם יש אפשרות שבהודעה יהיה כתוב לי ממי המייל...אפשרי
שים לב!!!
א. הגדרתי שיבדוק וישלח רק פעם בחמש דקות (עקב בעיות שעשה השימוש בטריגר כל דקה)
ב. ה-סמס בימות המשיח הולך לפי תעריף של הודעה כל 70 תווים (כולל רווח) כך שככל שהאימייל גדול יותר יילקח על זה יותר יחידות
והנה הסקריפטfunction sendsms() { let inboxmessages = GmailApp.search('is:inbox newer_than:1h'); for (let messages of inboxmessages){ let minutago = new Date (Date.now() -300000); if (messages.getLastMessageDate() > minutago){ let message = messages.getMessages(); let lastMsg = message[message.length -1] if (lastMsg.isUnread()){ let sender = lastMsg.getFrom(); let subject = lastMsg.getSubject(); let body = lastMsg.getPlainBody(); let sms = ('הודעה מאת:' + sender + '. הכותרת:' + subject + '. ההודעה:' + body); let tophone = ('{"0512345678":"' + sms + '"}') let encode = encodeURIComponent(tophone.trim()); let setup = encode.replace(/%0D%0A/g, ' %5C%5Cn'); let send = UrlFetchApp.fetch('https://www.call2all.co.il/ym/api/RunCampaign?token=07XXXXXXXX:******&withSMS=1&phones=' + setup) Logger.log (send); } } } }
לא לשכוח בשורה 15 להכניס במקום המספר כעת את המספר שאיליה יישלח הסמס
ובשורה 19 להכניס את מספר המערכת במקום המספר '07XXXXXXXX' ואת הסיסמה במקום הכוכביותואת הטריגר להפעיל לפעם בחמש דקות
חברה צריכים עזרה שהשליחה תהיה בפוסט ולא בגט זה לא נותן להקריא את כל הודעה אלא רק את הכותרת הייתי שמח לסייע בעניין אבל הידע שלי מסתכם בPHP וHTML ולא בגוואה סקריפט ולכן אשמח אם אי מי מחברי הפורום יכול להרים את ידו ולעזור בעניין @chv @אהרן-שובקס @נ-נח @דוד-ב וכן כל מי שמבין בעניין ולא הזכרתי את שמו
-
@צדיק-תמים
אתה צודק במאה אחוז 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 מספר הטלפון שאיליה יישלח הסמסוכמובן להפעיל את הטריגר כדלעיל