חיבור ימות המשיח לגמיני בחצי שעה API
-
אני מתנצל על חוסר ההבנה, הקישור cursor.desktop. אם תלחץ עליו הוא יביא אותך לקובץ גוגל דוקס, שבו מפיע התפריט, השם cursor.desktop התערבב לי בטעות.
-
@התחלה
אז זה קישור או קובץ כי כשאתה לוחץ עליו הוא מוריד לך קובץ למחשב -
לא הבנתי את ההבדל, זה קישור לקובץ שאתה לוחץ עליו הוא מוריד לך קובץ טקסט של המדריך.
-
@התחלה
זה המדריך?

-
מעלה את הקובץ בצורה שבטוח לא יהיה תקלות תוכל לראות את המדריך הנה. צריך פשוט לעשות שלב אחרי שלב. שלום לכולם! במדריך זה נקים מערכת חכמה בקו: המשתמש מקליט שאלה, וג'מיני )הבינה המלאכותית
החדשה של גוגל בגרסה 2.5( מחזירה לו תשובה קולית אישית לתוך שלוחה ייעודית.
א. הקמת השרת ופתיחת "חומת האש"
נשתמש בשרת חינמי של Cloud Google.
הרשמה: היכנסו ל-Console Cloud Google. תצטרכו להירשם )נדרש אשראי לזיהוי בלבד, גוגל לא מחייבת
ללא אישורכם(.
הקמת השרת: חפשו בשורה העליונה את הסמל <_ )Shell Cloud )ולחצו עליו.
הפקודות המנצחות: העתיקו את השורות הבאות לחלונית השחורה ולחצו Enter:
Bash.1 הזמנת כתובת IP קבועה
gcloud compute addresses create gemini-static-ip --region=us-central1
.2 הקמת השרת )micro2-e הוא במסגרת ה-Tier Free)
gcloud compute instances create geminibot-server --machine-type=e2-micro
--zone=us-central1-a --address=gemini-static-ip --image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud.3 פתיחת פורט 5000 לתקשורת עם ימות המשיח
gcloud compute firewall-rules create allow-gemini-port --allow tcp:5000
התחברות: עברו ל-דף המכונות. תחת העמודה IP External תופיע הכתובת שלכם – שמרו אותה! כעת לחצו
על כפתור ה-SSH בשורה של השרת.
ב. השגת מפתח ה-API והכנת הקוד
Create API key in new על ואז Get API Key על לחצו .Google AI Studio-ל כנסו :מפתח הוצאת
project. העתיקו את הקוד הארוך שקיבלתם.
התקנה בשרת )בחלון ה-SSH השחור(: הריצו את הפקודה הבאה )התקנת הספריות עם תיקון לסביבות
Ubuntu חדשות(:
Bash
sudo apt update && sudo apt install gunicorn -y && pip3 install flask requests
google-generativeai edge-tts asyncio --break-system-packages
יצירת קובץ הקוד: הקישו py.server nano והדביקו בפנים את הקוד הבא. חשוב: עדכנו את הפרטים שלכם
בשורות :10-12
Python
import os, requests, threading, asyncio, uuid, time, edge_tts
import google.generativeai as genai
from flask import Flask, request
import re, queue--- הגדרות אישיות - חובה למלא בתוך המירכאות ---
KEY_API" = הדבק_כאן_מפתח_API"
ID_SYSTEM" = מספר_המערכת_בימות_המשיח"
PASSWORD" = סיסמת_המערכת"
---------------------------------------------- #
)genai.configure(api_key=API_KEY
2.5 לגרסה הגדרה #'( model = genai.GenerativeModel('gemini-2.5-flash
)__app = Flask(__name
)(processing_phones = set
)(job_queue = queue.Queue
:)async def generate_voice(text, output_file
)"communicate = edge_tts.Communicate(text, "he-IL-HilaNeural
)await communicate.save(output_file
:)def ensure_folder_exists_and_configured(token, pathיצירת התיקייה
requests.get(f"https://www.call2all.co.il/ym/api/CreateIVR2Dir?token={token}&path=ivr2:{path
)"}הגדרת הודעה למשתמש למקרה שהקובץ עוד לא מוכן )במקום שקט/ניתוק(
config_data =
b"type=playfile\nsay_no_files=t-\xd7\x94\xd7\xaa\xd7\xa9\xd7\x95\xd7\x91\xd7\x94
\xd7\x91\xd7\x94\xd7\x9b\xd7\xa0\xd7\x94, \xd7\xa0\xd7\xa1\xd7\x95
\xd7\xa9\xd7\x95\xd7\x91 \xd7\x91\xd7\xa2\xd7\x95\xd7\x93
"\xd7\xa8\xd7\xa2\xd7\xa0\xd7\x94\n
,"requests.post("https://www.call2all.co.il/ym/api/UploadFile
,}'data={'token': token, 'path': f'ivr2:{path}/ext.ini
)})files={'file': ('ext.ini', config_data
:)def get_next_file_number(token, path
:try
res =
requests.get(f"https://www.call2all.co.il/ym/api/GetIVR2Dir?token={token}&path=ivr2:{path}").
)(json
nums = [int(re.search(r'(\d{3})', f.get('name', '')).group(1)) for f in res.get("files", []) if
]))'' ,'re.search(r'(\d{3})', f.get('name
"return f"{max(nums) + 1:03d}.mp3" if nums else "000.mp3
"except: return "000.mp3
:)def process_job(folder, phone
]uid = uuid.uuid4().hex[:6
"tmp_in, tmp_out = f"in_{uid}.wav", f"out_{uid}.mp3
audio_upload = None
:try
login_res =
requests.get(f"https://www.call2all.co.il/ym/api/Login?username={SYSTEM_ID}&password={
)(PASSWORD}").json
)"token = login_res.get("token
if not token: return
list_res =
requests.get(f"https://www.call2all.co.il/ym/api/GetIVR2Dir?token={token}&path=ivr2:{folder}"
)().json
files = [f for f in list_res.get("files", []) if f.get("name", "").lower().endswith((".wav",
]))"".mp3
if not files: return
]"last_file = sorted(files, key=lambda x: x["name"])[-1]["name
:with open(tmp_in, "wb") as f
f.write(requests.get(f"https://www.call2all.co.il/ym/api/DownloadFile?token={token}&path=ivr2
):{folder}/{last_file}").contentהעלאה לגוגל
)audio_upload = genai.upload_file(path=tmp_in
prompt" = ענה בעברית. ספק תשובה מפורטת ללא סימני עיצוב )כוכביות או סולמיות( להקראה
קולית."
)]response = model.generate_content([audio_upload, prompt
)(clean_text = response.text.replace('*', '').replace('#', '').replace('_', '').stripיצירת קול
))asyncio.run(generate_voice(clean_text, tmp_out
העלאה חזרה לימות המשיח
"}personal_path = f"6/{phone
)ensure_folder_exists_and_configured(token, personal_path
)target_name = get_next_file_number(token, personal_path
:with open(tmp_out, 'rb') as f
,"requests.post("https://www.call2all.co.il/ym/api/UploadFile
data={'token': token, 'path': f'ivr2:{personal_path}/{target_name}',
)}'convertAudio': 1}, files={'file': fמחיקת קובץ המקור מהשלוחה
requests.get(f"https://www.call2all.co.il/ym/api/DeleteFile?token={token}&path=ivr2:{folder}/{l
)"}ast_file
)"}except Exception as e: print(f"Error: {e
:finallyניקוי יסודי - גם מהשרת וגם משרתי גוגל AI
:if audio_upload
)try: genai.delete_file(audio_upload.name
except: pass
:]for f in [tmp_in, tmp_out
)if os.path.exists(f): os.remove(f
:)(def worker
:while True
)(folder, phone = job_queue.get
)try: process_job(folder, phone
:finally
)processing_phones.discard(phone
)(job_queue.task_done
)time.sleep(5
)(threading.Thread(target=worker, daemon=True).start
)]'app.route('/answer', methods=['GET', 'POST@
:)(def answer
)'phone = request.args.get('ApiPhone', 'unknown
]:if phone.startswith("972"): phone = "0" + phone[3
)'ext = request.args.get('ApiExtension
:"if ext == "4
:if phone not in processing_phones
)processing_phones.add(phone
))job_queue.put(("3", phone
"hangup=yes&.6 בשלוחה בקרוב תופיע התשובה .התקבלה הבקשה-return "id_list_message=t
:"elif ext == "6
"}return f"go_to_folder=/6/{phone
"return "ok
:'__if name == '__main
)app.run(host='0.0.0.0', port=5000
.לשמירה Ctrl+X ואז ,Enter אז ,Ctrl+O לחצו
ג. הגדרות "ימות המשיח" )ניהול המערכת(
יש להגדיר את השלוחות בממשק הניהול של ימות המשיח תחת "הגדרות מתקדמות":
שלוחה 3 )הקלטת השאלה(:
Ini, TOML
type=record
folder_to_record=3
record_ok=go_to_folder
record_ok_data=/4
שלוחה 4 )העברה לעיבוד(: )החליפו את ה-IP בכתובת שלכם(
Ini, TOML
type=api
answer/5000:]שלכם_IP-ה]//:api_link=http
שלוחה 6 )שמיעת התשובה(: חובה להגדיר כ-API בדיוק כמו שלוחה :4
Ini, TOML
type=api
answer/5000:]שלכם_IP-ה]//:api_link=http
ד. הרצה קבועה )24/7(
כדי שהבוט ימשיך לעבוד גם כשה-SSH סגור:
הקישו whoami כדי לראות את שם המשתמש )למשל ubuntu).
sudo nano /etc/systemd/system/geminibot.service :הקישו
הדביקו )החליפו את NAME_USER בשם שקיבלתם(:
Ini, TOML
]Unit[
Description=Gemini Bot Service
After=network.target
]Service[
User=USER_NAME
WorkingDirectory=/home/USER_NAME
ExecStart=/usr/local/bin/gunicorn -w 1 -b 0.0.0.0:5000 server:app
Restart=always
]Install[
WantedBy=multi-user.target
שמרו והפעילו:
Bash
sudo systemctl daemon-reload
sudo systemctl enable geminibot
sudo systemctl start geminibot
זהו! המערכת מחוברת ל2.5- Gemini. המשתמש מקליט בשלוחה ,3 והשרת דואג לעבד, להקריא ולנקות
אחריו את כל הקבצים המיותרים -
מדריך איך בחצי שעה לחבר קו של ימות המשיח לגמיני.docx מצרף קובץ וורד, למי שהקישור הראשון לא עובד.
-
@התחלה אפשר להתחבר לג׳מיני גם תוך 10 דקות הרבה יותר בקלות וללא הכנסת פרטי אשראי, אם היית קצת חוקר על זה יותר מלשאול AI
מלבד זאת שאין לי מושג איזה AI חרטט לך ש-2.5 זה החדש - מדובר על מודל מלפני כמעט שנה..
כיום סדרת המודלים המתקדמת ביותר של גוגל היא Gemini 3 -
יש בעיה לגמיני, כנראה לא הפרו. בחלק עבדתי לא עם פרו. שהוא מעודכן שהגמיני ההכי מתקדם הוא גמיני 1.5. וודאי שאפשר בלי פרטי אשראי להתחבר לגמיני הפרטי אשראי הם בשביל השרת של גוגל קלוד. למיטב ידיעתי אי אפשר לחבר ישירות את ימות המשיח לגמיני, בלי שרת באמצע. אם אתה מכיר דרך יותר קלה אני ישמח לשמוע!
-
@התחלה א"א בלי שרת באמצע אבל אפשר לפתוח שרת בצורה הרבה יותר קלה בחברה אחרת שלא דורשת פרטי אשראי
אם אתה רוצה להגיב למשתמש תלחץ על "תגובה"
-
איך? לפי מה שאני יודע גוגל קלואד, נותנים את המכסה החינמית כמעט הכי נדיבה. ואת הצורה הכי פשוטה לחיבור. והשרת שלהם יחסית חזק בשביל מערכת כזאת, כל עוד לא מדובר במאות משתמשים. אדרבה אני ישמח לשמוע על שרת שיותר פשוט להשתמש בו בשביל החיבור הזה איזה חברה נותנת שרת כזה בלי צורך בפרטי אשראי?
-
@התחלה לפי מה שאתה יודע כי שאלת AI...
בכל מקרה, אני לא תומך במדריך כזה כי עכשיו כל ילד יכול לעשות את זה - וזה בלי טיפת סינון..
-
זה טענה עניינית,
-
בכל מקרה מבחינת מערכתית ישבתי על זה הרבה עם גמיני פרו, ובסופו של דבר זה עובד בפועל. הגיוני שמתכנת אמיתי יעשה את זה בצורה יותר טובה. זה מה שאני מסוגל לעשות, וגם כל אחד.
-
@התחלה גם הקו שפתחת, לדעתי תשאל את ג׳מיני איך לסנן את זה, לפחות בצורה מינימלית