מדריך | שמיעת המיילים בטלפון + צינתוק
-
ב"ה
תמיד רציתם לשמוע את המייל שלכם בטלפון ללא צורך בגישה כל פעם למחשב?
הנה הפיתרון!!בעזרת המדריך הזה תוכלו גם אתם לשמוע את המייל דרך הטלפון בהקראה אוטומטית וגם לקבל צינתוק כשהגיע מייל חדש
נחלק את זה לכמה שלבים כדי להקל על ההבנה
נתחיל עם המערכת
שלב א: קודם כל צריך להיות ברשותכם מערכת תוכן של חברת "ימות המשיח"
(באם אין לכם עדיין, התקשרו ל-0773137770 שלוחה 3>1 ופתחו מערכת חדשה. התקשרו מיד למערכת, הכניסו סיסמת מנהל כדי להפעיל את הקו)
עכשיו שימו לבדוק באיזה שרת נמצא המערכת שלכם, יש שרת פריוט ויש שרת רגיל. כי זה משנה לקוד בהמשך.
שלב ב: הגדרת שלוחת ההשמעה
כדי שתוכלו לשמוע את המיילים צריך להיות במערכת שלוחת השמעת קבצים!
לאורך כל המדריך נלך עם שלוחה 1 כדוגמא להשמעת קבציםיכול להיות שכבר פתוח לכם שלוחה 1 והיא מוגדרת כהשמעת קבצים.
באם לא, ניכנס לאתר ניהול המערכת בשרת הרגיל או שרת הפריוט ניכנס ללשונית "מערכת תוכן" ונלחץ על "צור שלוחה חדשה", כבדוגמא
שלב ג: הגדרת והרשמה לרשימת צינתוקים
כדי שתוכלו לקבל צינתוק בעת הגעת מייל חדש תצטרכו להירשם לרשימת צינתוקים!
איך נרשמים? פותחים שלוחה חדשה, לדוגמא שלוחה 2, כמו שהסברנו לעיל ובמספר שלוחה כותבים 2
עכשיו נכנסים ללשונית "הגדרות מתקדמות", מוחקים את הקוד הקיים -אם קיים- ומניסים את הקוד הבאtype=tzintuk זהו הגדרת סוג השלוחה list_tzintuk=123 וזה שם רשימת הצינתוקים
(שם רשימת הצינתוקים יכול להיות כל מספר וכמה מספרים שתרצו [רק לשנות לפי זה בקוד הבא])
אחרי השמירה מתקשרים למערכת מקישים 2 ומאשרים הרשמה לקבלת צינתוקים
זהו. המערכת מוכנה להשמיע לכם את המיילים ולצנתק לכם על כל מייל חדש
עכשיו רק צריך שמיילים יכנסו לשלוחת השמעת הקבצים שבמערכת שיהיה מה להשמיע! איך עושים את זה?נעבור לשלבי המייל
שלב ד: יצירת והגדרת תווית
ניצור מסנן שכל מייל חדש שנכנס יקבל תווית שהסקריפט ירוץ עליו
איך עושים את זה? ובכן,
כשנכנסים למייל לוחצים על המסומן
ואז נפתח תפריט כזו בוחרים לפי המסומן ולוחצים על 'מסנן חדש'
מאשרים את יצירת המסנן ועוברים לשלב הבא
בשלב הזה ממלאים ובוחרים בתווית חדשה, נותנים לה שם, מאשרים, ולוחצים על 'מסנן חדש'(אני נתתי לה שם 'לטלפון' וע"פ זה הקוד להלן)
מעתה, כל מייל חדש שיגיע למייל שלכם יקבל גם תווית.
שלב ה: הקוד וטריגר להפעלה
עכשיו צריך להכניס את הקוד לגוגל סקריפט שיעשה את כל הפעולות ויכניס את המייל למערכת
נכנסים לכאן פותחים 'פרויקט חדש' בצד ימין, נפתח פרויקט חדש עם קטע קוד. מוחקים את הקוד הקיים ומדביקים את הקוד הבאאם המערכת בשרת הפריוט
function mailToPhone() { const url = ('https://private.call2all.co.il/ym/api/'); const token = ('0734567890:1234'); const path = ('ivr2:1/'); const listTzintuk = ('tzl:123'); const label = GmailApp.getUserLabelByName('לטלפון'); let didUpload = false chechForGmails() function chechForGmails() { const threads = GmailApp.search('label:לטלפון'); for (const thread of threads) { const messages = thread.getMessages(); const minuteAgo = new Date(Date.now() - 60000); if (thread.getLastMessageDate() > minuteAgo) { for (const message of messages) { if (message.getDate() > minuteAgo) { const result = sendToYemot(message); didUpload = result || didUpload; } } thread.removeLabel(label); } else { const result = sendToYemot(messages[messages.length - 1]); didUpload = result || didUpload; thread.removeLabel(label); } } if(didUpload === true){ const tzintuk = UrlFetchApp.fetch(`${url}RunTzintuk?token=${token}&phones=${listTzintuk}`); Logger.log(tzintuk) } } function sendToYemot (message) { const ttsString = `הודעה מאת. ${message.getFrom()}. ,נושא,. ${message.getSubject()}. גוף ההודעה. ${message.getPlainBody()}`; Logger.log({ ttsString }); const directoryListing = JSON.parse(UrlFetchApp.fetch(`${url}GetIVR2Dir?token=${token}&path=${path}`)); Logger.log(directoryListing) if (directoryListing.responseStatus === 'OK') { const lastFileName = directoryListing.files .filter(file => file.fileType === 'AUDIO' || file.fileType === 'TTS') .map(file => file.name.split('.')[0]) .find(fileName => !isNaN(fileName)); const newFileNumber = Number(lastFileName || -1) + 1; const newFileName = newFileNumber.toString().padStart(3, '0'); const newFilePath = `${path}${newFileName}.tts`; const payload = { token, what: newFilePath, contents: ttsString }; const uploadResult = JSON.parse(UrlFetchApp.fetch(url + 'UploadTextFile?', { payload })); return uploadResult.responseStatus === 'OK'; } } }
אם המערכת בשרת הרגיל
function mailToPhone() { const url = ('https://www.call2all.co.il/ym/api/'); const token = ('0734567890:1234'); const path = ('ivr2:1/'); const listTzintuk = ('tzl:123'); const label = GmailApp.getUserLabelByName('לטלפון'); let didUpload = false chechForGmails() function chechForGmails() { const threads = GmailApp.search('label:לטלפון'); for (const thread of threads) { const messages = thread.getMessages(); const minuteAgo = new Date(Date.now() - 60000); if (thread.getLastMessageDate() > minuteAgo) { for (const message of messages) { if (message.getDate() > minuteAgo) { const result = sendToYemot(message); didUpload = result || didUpload; } } thread.removeLabel(label); } else { const result = sendToYemot(messages[messages.length - 1]); didUpload = result || didUpload; thread.removeLabel(label); } } if(didUpload === true){ const tzintuk = UrlFetchApp.fetch(`${url}RunTzintuk?token=${token}&phones=${listTzintuk}`); Logger.log(tzintuk) } } function sendToYemot (message) { const ttsString = `הודעה מאת. ${message.getFrom()}. ,נושא,. ${message.getSubject()}. גוף ההודעה. ${message.getPlainBody()}`; Logger.log({ ttsString }); const directoryListing = JSON.parse(UrlFetchApp.fetch(`${url}GetIVR2Dir?token=${token}&path=${path}`)); Logger.log(directoryListing) if (directoryListing.responseStatus === 'OK') { const lastFileName = directoryListing.files .filter(file => file.fileType === 'AUDIO' || file.fileType === 'TTS') .map(file => file.name.split('.')[0]) .find(fileName => !isNaN(fileName)); const newFileNumber = Number(lastFileName || -1) + 1; const newFileName = newFileNumber.toString().padStart(3, '0'); const newFilePath = `${path}${newFileName}.tts`; const payload = { token, what: newFilePath, contents: ttsString }; const uploadResult = JSON.parse(UrlFetchApp.fetch(url + 'UploadTextFile?', { payload })); return uploadResult.responseStatus === 'OK'; } } }
וכמובן משנים בשורה 3 למספר המערכת והסיסמה שלכם
נותנים לפרויקט שם כרצונכם
לוחצים על שמור.עכשיו נפעיל את הטריגר.
בתפריט הנפתחת מצד ימין לוחצים על 'מפעילים' ואז על 'הוספת טריגר',
נפתח תפריט כזו ובוחרים לפי המסומן ולוחצים על שמירה
עכשיו יפתח לנו חלונית חדשה שתבקש שניכנס עם החשבון ג'ימייל שלנו, ואז יופיע אזהרה שגוגל לא אימתה את האפליקציה הזו,
נלחץ על 'מתקדם' ואז על 'כניסה אל... (לא מאובטח)'
(נציין, לאף אחד אין גישה למייל שלך חוץ מהסקריפט שאתה הבעלים עליו ואתה יכול לשנות בכל זמן)
ואז, יפתח עוד חלונית שתבקש אישור שהסקריפט יכול לשנות את המיילים וכו' ואישור על התחברות לשרת חיצוני [ימות המשיח], נאשר
(שוב, הסקריפט לא מוחק ולא משנה שום מייל! אלא שאנחנו צריכים לאשר אפשרות כזו)גמרנו, יש לנו מערכת מוכנה שתצנתק לנו כשיש מייל חדש ותקריא לנו את המיילים שקבלנו
נ.ב. לכל דבר יש חסרונות, וגם למערכת שלנו. ההקראה של טקסט בימות המשיח מוגבלת לכ-100 מילים, ולכן אם המייל שקבלתם גדול יותר, יכול להיות שהמערכת לא יקריא לכם את זה ותשמעו שגיאה [או 'המקש שהוקש שגוי' אם זה ההודעה האחרונה בשלוחה].
אפשר לנסות שוב פעם, יש פעמים שזה עוזר וזה כן מקריא אחרי שתיים שלוש הקשותבהצלחה
-
@משה-144 אמר במדריך | שמיעת המיילים בטלפון + צינתוק:
@שאול-נ-י
תודה רבה על המדריך הברור
משום מה עולה שגיאה אדומה בשמירת הפרוייקט:
שגיאת תחביר: SyntaxError: Unexpected token '}' שורה: 61 קובץ: קוד.gs
יש דרך לסדר את זה?בקוד שהבאתי אין בכלל שורה 61
כנראה לא מחקת את הקוד הקיים לפני שהדבקת את הקוד מכאן.. -
מי שרוצה שהצינתוק ישלח ממספר משני של המערכת
שיחליף את שורה 32 בקוד הבאconst tzintuk = UrlFetchApp.fetch(`${url}RunTzintuk?token=${token}&callerId=077XXXX&phones=${listTzintuk}`);
ולשנות את 077XXXXX למספר המשני שממנו רוצים שיתקבל הצינתוק
התוספת קוד כמובן היא מ @שאול-נ-י (הוא כתב לי בצאט)
בהצלחה -
@נום-נום אמר במדריך | שמיעת המיילים בטלפון + צינתוק:
האם אפשר להפנות שתי כתובות מייל לאותה שלוחה ושם יהיו מרוכזות כל ההודעות הנכנסות?
אפשרי טכנית.
אבל אני חושב שזה לא מומלץ כי הסקריפט בודק מה עכשיו הקובץ הכי גבוה בשלוחה
ואם יהיה שני סקריפטים שרצים באותו זמן זה יכול ליצור התנגשות וקובץ אחד שעולה ידרוס את השניאולי אפשר להפעיל את הטריגר רק פעם בשתי דקות או להפעיל טריגר אחד בדיוק חצי דקה אחרי השני שאז יש סיכוי שלא יתנגשו
@נום-נום אמר במדריך | שמיעת המיילים בטלפון + צינתוק:
ניסיתי על מייל נוסף ושם לא מגיע צינתוק משום מה
לא ידוע לי על בעיה שאמור להיות בגלל שזה מייל נוסף, חוץ ממה שאמרתי שהם יכולים להתנגש
-
@אברהם-צבי אמר במדריך | שמיעת המיילים בטלפון + צינתוק:
עשיתי כמו שאמרת אבל....לא עובד
לא עובד לא נותן שום מידע כדי לעזור לך
תסביר איפה נתקעת? באיזה שלב? מה לא עובד?
במערכת, במסנן, בסקריפט.... וכו' -
@055678 אמר במדריך | שמיעת המיילים בטלפון + צינתוק:
@liy תבדוק אולי אם שלוחה 1 מוגדר השמעת קבצים בסוג שלוחה או משהו אחר
השמעת קבצים.
זה הקוד ששמתי:
function mailToPhone() { const url = ('https://private.call2all.co.il/ym/api/'); const token = ('073364XXXX:XXXX'); const path = ('ivr2:/1'); const listTzintuk = ('tzl:1'); const label = GmailApp.getUserLabelByName('לטלפון'); let didUpload = false chechForGmails() function chechForGmails() { const threads = GmailApp.search('label:לטלפון'); for (const thread of threads) { const messages = thread.getMessages(); const minuteAgo = new Date(Date.now() - 60000); if (thread.getLastMessageDate() > minuteAgo) { for (const message of messages) { if (message.getDate() > minuteAgo) { const result = sendToYemot(message); didUpload = result || didUpload; } } thread.removeLabel(label); } else { const result = sendToYemot(messages[messages.length - 1]); didUpload = result || didUpload; thread.removeLabel(label); } } if(didUpload === true){ const tzintuk = UrlFetchApp.fetch(`${url}RunTzintuk?token=${token}&phones=${listTzintuk}`); Logger.log(tzintuk) } } function sendToYemot (message) { const ttsString = `הודעה מאת. ${message.getFrom()}. ,נושא,. ${message.getSubject()}. גוף ההודעה. ${message.getPlainBody()}`; Logger.log({ ttsString }); const directoryListing = JSON.parse(UrlFetchApp.fetch(`${url}GetIVR2Dir?token=${token}&path=${path}`)); Logger.log(directoryListing) if (directoryListing.responseStatus === 'OK') { const lastFileName = directoryListing.files .filter(file => file.fileType === 'AUDIO' || file.fileType === 'TTS') .map(file => file.name.split('.')[0]) .find(fileName => !isNaN(fileName)); const newFileNumber = Number(lastFileName || -1) + 1; const newFileName = newFileNumber.toString().padStart(3, '0'); const newFilePath = `${path}${newFileName}.tts`; const payload = { token, what: newFilePath, contents: ttsString }; const uploadResult = JSON.parse(UrlFetchApp.fetch(url + 'UploadTextFile?', { payload })); return uploadResult.responseStatus === 'OK'; } } }