שיתוף | מייל לפלאפון הכשר
-
מי שרוצה להכניס רשימת תפוצה ומי שלא ברשימה יהיה לו סיסמא ההגדרות הם
שלוחה 1
type=template_filter template_filter=1 template_filter_active_go_to=/11 template_filter_none_go_to=/12 template_filter_blocked_go_to=/12
שלוחה 3
type=template_add_number template_to_add=1 password=הסיסמא שלכם
שלוחה 11
type=playfile
שלוחה 12
type=go_to_folder title=השמעה עם סיסמא go_to_folder=/11 password=הסיסמא שלכם
וכעת השלוחה מוגדרת עם סיסמא ובשביל להכנס ללא סיסמא נרשמים בשלוחה 3
(יותר תקני היה לעשות שלוחה 1/1 ו 1/2 אבל אין הבדל כ"כ)
וכמובן בקובץ אקסל לשנות את מספר השלוחה לשלוחה 11 -
@מנצפכ אני הייתי ממליץ להוסיף בהדרכה בהתחלה שאחרי שגומרים ליצור את המערכת ולהירשם לרשימת צינתוקים להוסיף בשלוחה הראשית את ההגדרה הזאת:
go_to_from_tzintuk=yes check_list_tzintuk=123 go_to_from_tzintuk_found=in_extension go_to_from_tzintuk_not_found=hangup
וכמובן להחליף בשורה 2 לשם רשימת הצינתוקים שבחרתם
כדי שאחרים לא יוכלו לשמוע את המיילים שלכם -
@אבוב @אנא
למה לא להגדיר סיסמה בצורה הרגילה וזהו, בסה"כ צריך להוסיף שורה אחת בתפריט הראשיpassword=1234
ואם תרצו שמהמספר הרגיל שאתם מתקשרים ממנו תוכלו להכנס בלי סיסמה אפשר פשוט להגדיר בלשונית הראשית של אתר הניהול (הגדרות משתמש) סיסמת גישה שחלה על כל הטלפונים חוץ משל המנהל בלי להגדיר שום דבר נוסף במערכת
-
function mailToPhone() { const number = '07********'; const pass = '******'; const extension = '1'; const tzl = '123'; const tag = 'נשלח לפלאפון'; const searchwording = 'is: inbox'; const cnsender = 'הודעה מאת'; const cnsubject = ' ,נושא,'; const cnbody = 'גוף ההודעה'; const cnend = '. סוף ההודעה'; const url = ('https://www.call2all.co.il/ym/api/'); const token = (number + ':' + pass); const path = ('ivr2:' + extension + '/'); const listTzintuk = ('tzl:' + tzl); const label = GmailApp.getUserLabelByName(tag); let didUpload = false chechForGmails() function chechForGmails() { const threads = GmailApp.search(searchwording + ' newer_than:1h -{label:' + tag + '}'); 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.addLabel(label); } else { const result = sendToYemot(messages[messages.length - 1]); didUpload = result || didUpload; thread.addLabel(label); } if(didUpload === true){ const tzintuk = UrlFetchApp.fetch(`${url}RunTzintuk?token=${token}&phones=${listTzintuk}`); Logger.log(tzintuk) } } function sendToYemot (message) { const subjectTranslate = LanguageApp.translate(message.getSubject(), '', 'iw') ; const bodyTranslate = LanguageApp.translate(message.getPlainBody(), '', 'iw') ; const ttsStringSimple = `${cnsender}. ${message.getFrom()}. ${cnsubject}. ${subjectTranslate}. ${cnbody}. ${bodyTranslate}`; const ttsString1 = ttsStringSimple.replace(new RegExp (/(?:(?:https?|ftp):\/\/|\b(?:[a-z\d]+\.))(?:(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))?\))+(?:\((?:[^\s()<>]+|(?:\(?:[^\s()<>]+\)))?\)|[^\s`!()[]{};:'".,<>?«»“”‘’]))?/, 'g',), ' '); const ttsString2 = ttsString1.replace(new RegExp (/"|>|<|\*|\)|\(|`/, 'g',), ''); const ttsString3 = ttsString2.replace(new RegExp(/@|\n|-/, 'g',), ' '); const ttsString4 = ttsString3.replace(new RegExp(/\s{2,}/, 'g',), ' '); const ttsString = ttsString4.substring(0,2200) + cnend 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'; } } }}
כמובן קרדיט ל @מנצפכ
-
@מנצפכ יש אפשרות לבנות את הקוד באופן שמי שמריץ את הקוד לא יוכל לדעת מה הסיסמה של המערכת?
[הרעיון בזה, שבמקום לעשות לכל אחד עבודה כפולה, גם לפתוח מערכת וגם להריץ את הסקריפט, תהיה מערכת שבא יהיה מוגדר לכל מספר פלאפון שלוחה, שבשלוחה 1 הוא מקבל מיילים, בשלוחה 2 שולח מיילים, שלוחה 3 הוא מאשר צינטוקים [שהמספר הצינטוק הוא מספר הפלאפון שלו] ובסקריפט הוא רק צריך להזין את המספר שלו, וזה ישמש גם לרשימת צינטוקים גם למספר שלוחה לשם ישלח המיילים.
הבעיה בכזה דבר, שאם כל אחד יכול לראות את הקוד של המערכת, זה לא שווה כלום, כ"א יכול לאפס לראות מיילים כו'.
יש מצב לעשות שלא יוכלו לראות את הסיסמה של המערכת? -
@ישראל10 אמר במדריך | שליחת צינתוק ונוסח הודעת המייל לפלאפון בעת קבלת מייל חדש:
@מנצפכ יש אפשרות לבנות את הקוד באופן שמי שמריץ את הקוד לא יוכל לדעת מה הסיסמה של המערכת?
כמובן שלא, אין לקוד דרך להגיע לנתונים במערכת ללא סיסמה
לפחות בצורה הנוכחית שזה עובד עם מודול קבלת נתונים זה לא אפשרי
אגב גם אם זה היה אפשרי, בסוף למישהו היה את הסיסמה של המערכת וגישה למיילים של כולם
אני לא הייתי מעוניין בכזה דבר רק בשביל לחסוך כמה דקות של טרחה -
עדכון גירסה 4.1, תיקנתי את ההתקנה האוטומטית והוספתי אבטחה בחיוג למערכת.
להתקנת הסקריפט יש ללחוץ על הקישור המצורף, ולאשר יצירת עותק של הקובץ להזין את הפרטים הנצרכים, וללחוץ על כפתור ההתקנה.
https://docs.google.com/spreadsheets/d/1CuMfGMHbdymIMQCQJwX68jjSWalHs9LwE_VTeyxE56E/copy?usp=sharing -
@מנצפכ אמר במדריך | שליחת צינתוק ונוסח הודעת המייל לפלאפון בעת קבלת מייל חדש:
שימו לב
אם לא קיבלתם הודעה קופצת בצד שמאל למטה שהסקריפט הופעל - הסקריפט לא הופעל ויש להפעילו שובאני לא מצליח לקבל הודאה בצד שמאל, ולמעשה אני לא מצליח להתחבר לקבל מיילים לטלפון, מה אני יכול לעשות?
-
פוסט זה נמחק!