@Y-Excel-Access כתב בהעלאת טקסט מגוגל שיטס לתוך שלוחות בימות המשיח, ויצירת/מחיקת שלוחות:
אשמח אם יש למישהו דוגמה חיה של API בJS שאפשר ללמוד ממנה
וכמובן עדיפות לדוגמה של API של ימות (כמובן למחוק פרטים אישיים וכו')
אני מצרף כאן קוד של @צדיק-תמים שפרסם בפורום ימות המשיח (כתובה ב node js)
אני די צעיר וחדש בJS ולכן לא בדקתי את הקוד , ואני מקווה שזו אכן דוגמא טובה
@צדיק-תמים כתב את זה לבקשת משתמש שרוצה לקבל את מספר הקובץ (tts) הגבוה ביותר
הלוגיקה של זה מאוד פשוטה. יש API של ימות לקבלת רשימת הקבצים בתקיה. הוא מחזיר items שזה מערך של קבצים, שמכיל בין השאר את שם כל קובץ.
צריך לעבור עליהם, לסנן רק את הקבצים מסוג מסוים, ואז להחזיר את הקובץ הגבוה ביותר. המספר של הקובץ הזה + 1, יהיה המספר לקובץ החדש...
בNode.js (הקוד הזה בדיוק יעבוד גם בסביבת דפדפן, רק שצריך לטעון את axios) פונקציה שעושה כזה דבר תיראה ככה בערך (השתמשתי לבקשת רשת במודול axios, אבל אפשר כמובן לממש את זה גם בלי):
const axios = require('axios');
axios.defaults.baseURL = 'https://www.call2all.co.il/ym/api/';
axios.defaults.params = { token: '0773137770:123456' }
/**
* get max file id in folder
* @param {String} extension - extension of the file
* @param {String} path - path of the file in yemot system
* @returns {Number|Boolean} max file id. false if no files found with requested extension
* */
async function getMaxFileId(extension, path) {
const ymResponse = await axios.get('GetIvrTree', {
params: {
path
}
})
if (!['ok', 'OK'].includes(ymResponse.data.responseStatus)) throw new Error(ymResponse.data.message);
Error(ymResponse.data.message);
let filesList = ymResponse.data.items.map(item => {
return item.name
})
filesList = filesList.filter(item => {
const regexFileName = new RegExp(`[0-9]+\.${extension}`)
return regexFileName.test(item)
})
if (!filesList.length) return false;
filesList = filesList.map(item => {
return item.replace(`.${extension}`, '')
})
return Math.max(...filesList)
}
// get max file in 'tts' extension
getMaxFileId('tts', 'ivr2:0/1').then(max => {
if (!max) throw new Error('files not found in this folder')
const padLength = 4;
console.log('next file name:', `${String(max + 1).padStart(padLength, "0")}.tts`)
})
התרגום לפייתון/כל שפת תכנות אחרת אמור להיות פשוט ביותר.
לדוגמה הפונקציה המקבילה ל()Math.max היא max.