ב״ה הושלם פיתוח המודול עליו דובר כאן וכאן
עקב סוג של יאוש בנוגע לבניית אשף אוטומטי להגדרה אני יצרף כאן את ההגדרות לשלוחה:
מומלץ מראש להשתמש במערכת טלפונית חדשה כי אנחנו צריכים להשתמש בכמה שלוחות שלא יוכלו לשמש לדברים אחרים.
- יש ליצור את שלוחות 1,2,3.
- למחוק את כל שאר השלוחות המיותרות במערכת.
- להגדיר כל אחת מהשלוחות כדלהלן:
שלוחה 1 (שליחת מיילים):
type=api
api_link=http://XXXX/ymapi/email/
api_add_0=user=כתובת-המייל-שלכם-בגוגל
api_add_1=password=סיסמת-החשבון
api_add_2=name=כינוי-השולח
api_hangup_send=no
הערה חשובה בנוגע לסיסמא,הסיסמא לא נשמרת אצלנו בשרת בשום אופן!
באם יש לחשבון שלכם אימות דו שלבי יש ליצור סיסמא לאפליקציה ואותה להזין בתור סיסמא.
שלוחה 2 (שמיעת המיילים):
type=playfile
שלוחה 3 (ניהול הצינתוקים):
type=tzintuk
list_tzintuk=1
בכדי שאכן נוכל לשלוח את מיילים יש לתת כמה הרשאות:
- יש לחייג כעת למערכת שלכם, להכנס לשלוחה 1 ולנסות לשלוח מייל לעצמכם. השליחה תכשל ותושמע לכם הודעת שגיאה.
- יש להכנס לחשבון המייל שלכם, גוגל שלחה לכם מייל אזהרה על אפליקצייה לא מאובטחת, יש להכנס למייל ולאשר שאתם ניסיתם לגשת לחשבון.
- יש לאשר גישה זמנית לחשבון - לחץ כאן למעבר.
- יש לחייג חזרה למערכת שלכם ולנסות לשלוח מייל.
קרדיט על השלב הזה לשאול ניו מפורום מתמחים
ניצור מסנן שכל מייל חדש שנכנס יקבל תווית שהסקריפט ירוץ עליו
איך עושים את זה? ובכן,
כשנכנסים למייל לוחצים על המסומן
ואז נפתח תפריט כזו בוחרים לפי המסומן ולוחצים על 'מסנן חדש'
מאשרים את יצירת המסנן ועוברים לשלב הבא
בשלב הזה ממלאים ובוחרים בתווית חדשה, נותנים לה שם, מאשרים, ולוחצים על 'מסנן חדש'
(אני נתתי לה שם 'לטלפון' וע"פ זה הקוד להלן)
מעתה, כל מייל חדש שיגיע למייל שלכם יקבל גם תווית.
שלב ה: הקוד וטריגר להפעלה
עכשיו צריך להכניס את הקוד לגוגל סקריפט שיעשה את כל הפעולות ויכניס את המייל למערכת
נכנסים לכאן פותחים 'פרויקט חדש' בצד ימין, נפתח פרויקט חדש עם קטע קוד. מוחקים את הקוד הקיים ומדביקים את הקוד הבא
אם המערכת בשרת הפריוט
function mailToPhone() {
const url = ('https://private.call2all.co.il/ym/api/');
const token = ('0734567890:1234');
const path = ('ivr2:2/');
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';
}
}
}
אם המערכת בשרת הרגיל
function mailToPhone() {
const url = ('https://www.call2all.co.il/ym/api/');
const token = ('0734567890:1234');
const path = ('ivr2:2/');
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';
}
}
}
וכמובן משנים בשורה 3 למספר המערכת והסיסמה שלכם
נותנים לפרויקט שם כרצונכם
לוחצים על שמור.
עכשיו נפעיל את הטריגר.
בתפריט הנפתחת מצד ימין לוחצים על 'מפעילים' ואז על 'הוספת טריגר',
נפתח תפריט כזו ובוחרים לפי המסומן ולוחצים על שמירה
עכשיו יפתח לנו חלונית חדשה שתבקש שניכנס עם החשבון ג'ימייל שלנו, ואז יופיע אזהרה שגוגל לא אימתה את האפליקציה הזו,
נלחץ על 'מתקדם' ואז על 'כניסה אל... (לא מאובטח)'
(נציין, לאף אחד אין גישה למייל שלך חוץ מהסקריפט שאתה הבעלים עליו ואתה יכול לשנות בכל זמן)
ואז, יפתח עוד חלונית שתבקש אישור שהסקריפט יכול לשנות את המיילים וכו' ואישור על התחברות לשרת חיצוני [ימות המשיח], נאשר
(שוב, הסקריפט לא מוחק ולא משנה שום מייל! אלא שאנחנו צריכים לאשר אפשרות כזו)
גמרנו, יש לנו מערכת מוכנה שתצנתק לנו כשיש מייל חדש ותקריא לנו את המיילים שקבלנו