Skip to content

Signal

חברו את סוכן ה-Triggerfish שלכם ל-Signal כדי שאנשים יוכלו לשלוח לו הודעות מאפליקציית Signal. המתאם מתקשר עם daemon של signal-cli דרך JSON-RPC, באמצעות מספר הטלפון המקושר שלכם ב-Signal.

כיצד Signal שונה

מתאם ה-Signal הוא מספר הטלפון שלכם. בניגוד ל-Telegram או Slack שבהם קיים חשבון בוט נפרד, הודעות Signal מגיעות מאנשים אחרים למספר שלכם. משמעות הדבר:

  • לכל ההודעות הנכנסות isOwner: false -- הן תמיד ממישהו אחר
  • המתאם משיב כמספר הטלפון שלכם
  • אין בדיקת בעלים לכל הודעה כמו בערוצים אחרים

זה הופך את Signal לאידיאלי לקבלת הודעות מאנשי קשר ששולחים למספר שלכם, כאשר הסוכן מגיב בשמכם.

סיווג ברירת מחדל

Signal מוגדר כברירת מחדל לסיווג PUBLIC. מכיוון שכל ההודעות הנכנסות מגיעות מאנשי קשר חיצוניים, PUBLIC הוא ברירת המחדל הבטוחה.

הגדרה

שלב 1: התקנת signal-cli

signal-cli הוא לקוח שורת פקודה של צד שלישי ל-Signal. Triggerfish מתקשר איתו דרך TCP או Unix socket.

Linux (בנייה מקומית -- ללא צורך ב-Java):

הורידו את הבנייה המקומית העדכנית מעמוד שחרורי signal-cli, או תנו ל-Triggerfish להוריד עבורכם במהלך ההגדרה.

macOS / פלטפורמות אחרות (בניית JVM):

דורש Java 21+. Triggerfish יכול להוריד JRE נייד אוטומטית אם Java אינו מותקן.

ניתן גם להריץ את ההגדרה המודרכת:

bash
triggerfish config add-channel signal

זה בודק את signal-cli, מציע להוריד אם חסר, ומלווה אתכם בקישור.

שלב 2: קישור המכשיר

signal-cli חייב להיות מקושר לחשבון ה-Signal הקיים (כמו קישור אפליקציית שולחן עבודה):

bash
signal-cli link -n "Triggerfish"

זה מדפיס URI של tsdevice:. סרקו את קוד ה-QR עם אפליקציית Signal בנייד (הגדרות > מכשירים מקושרים > קשר מכשיר חדש).

שלב 3: הפעלת ה-Daemon

signal-cli רץ כ-daemon ברקע ש-Triggerfish מתחבר אליו:

bash
signal-cli -a +14155552671 daemon --tcp localhost:7583

החליפו +14155552671 במספר הטלפון שלכם בפורמט E.164.

שלב 4: הגדרת Triggerfish

הוסיפו Signal ל-triggerfish.yaml:

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: PUBLIC
אפשרותסוגנדרשתיאור
endpointstringכןכתובת daemon של signal-cli (tcp://host:port או unix:///path/to/socket)
accountstringכןמספר הטלפון שלכם ב-Signal (פורמט E.164)
classificationstringלאתקרת סיווג (ברירת מחדל: PUBLIC)
defaultGroupModestringלאטיפול בהודעות קבוצתיות: always, mentioned-only, owner-only (ברירת מחדל: always)
groupsobjectלאדריסות תצורה לכל קבוצה
ownerPhonestringלאשמור לשימוש עתידי
pairingbooleanלאהפעלת מצב צימוד במהלך ההגדרה

שלב 5: הפעלת Triggerfish

bash
triggerfish stop && triggerfish start

שלחו הודעה למספר הטלפון שלכם ממשתמש Signal אחר לאישור החיבור.

הודעות קבוצתיות

Signal תומך בצ'אטים קבוצתיים. ניתן לשלוט כיצד הסוכן מגיב להודעות קבוצתיות:

מצבהתנהגות
alwaysהגיבו לכל ההודעות הקבוצתיות (ברירת מחדל)
mentioned-onlyהגיבו רק כשמוזכרים לפי מספר טלפון או @mention
owner-onlyלעולם אל תגיבו בקבוצות

הגדירו באופן גלובלי או לכל קבוצה:

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    defaultGroupMode: mentioned-only
    groups:
      "your-group-id":
        mode: always
        classification: INTERNAL

מזהי קבוצות הם מזהים מקודדים ב-base64. השתמשו ב- triggerfish signal list-groups או בדקו את תיעוד signal-cli למציאתם.

חלוקת הודעות

ל-Signal מגבלת הודעה של 4,000 תווים. תגובות ארוכות מזה מחולקות אוטומטית למספר הודעות, עם חלוקה על שורות חדשות או רווחים לצורך קריאות.

מחווני הקלדה

המתאם שולח מחווני הקלדה בזמן שהסוכן מעבד בקשה. מצב ההקלדה מתנקה כאשר התשובה נשלחת.

כלים מורחבים

מתאם ה-Signal חושף כלים נוספים:

  • sendTyping / stopTyping -- שליטה ידנית במחווני הקלדה
  • listGroups -- רשימת כל קבוצות Signal שהחשבון חבר בהן
  • listContacts -- רשימת כל אנשי הקשר ב-Signal

שינוי סיווג

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: INTERNAL

רמות תקפות: PUBLIC, INTERNAL, CONFIDENTIAL, RESTRICTED.

הפעילו מחדש את ה-daemon לאחר שינוי: triggerfish stop && triggerfish start

תכונות אמינות

מתאם ה-Signal כולל מספר מנגנוני אמינות:

חיבור מחדש אוטומטי

אם החיבור ל-signal-cli נופל (הפרעת רשת, הפעלה מחדש של daemon), המתאם מתחבר מחדש אוטומטית עם backoff מעריכי. ללא צורך בהתערבות ידנית.

בדיקת תקינות

באתחול, Triggerfish בודק אם daemon signal-cli קיים תקין באמצעות בדיקת JSON-RPC ping. אם ה-daemon אינו מגיב, הוא נהרג ומופעל מחדש אוטומטית.

מעקב גרסאות

Triggerfish עוקב אחר גרסת signal-cli ידועה-כתקינה (כרגע 0.13.0) ומזהיר באתחול אם הגרסה המותקנת ישנה יותר. גרסת signal-cli נרשמת בכל חיבור מוצלח.

תמיכה ב-Unix Socket

בנוסף לנקודות קצה TCP, המתאם תומך ב-Unix domain sockets:

yaml
channels:
  signal:
    endpoint: "unix:///run/signal-cli/socket"
    account: "+14155552671"

פתרון בעיות

daemon של signal-cli אינו נגיש:

  • וודאו שה-daemon רץ: בדקו את התהליך או נסו nc -z 127.0.0.1 7583
  • signal-cli נקשר ל-IPv4 בלבד -- השתמשו ב-127.0.0.1, לא ב-localhost
  • פורט TCP ברירת מחדל הוא 7583
  • Triggerfish יפעיל מחדש את ה-daemon אוטומטית אם הוא מזהה תהליך לא תקין

הודעות אינן מגיעות:

  • אשרו שהמכשיר מקושר: בדקו באפליקציית Signal בנייד תחת מכשירים מקושרים
  • signal-cli חייב לקבל לפחות סנכרון אחד לאחר הקישור
  • בדקו יומנים לשגיאות חיבור: triggerfish logs --tail

שגיאות Java (בניית JVM בלבד):

  • בניית JVM של signal-cli דורשת Java 21+
  • הריצו java -version לבדיקה
  • Triggerfish יכול להוריד JRE נייד במהלך ההגדרה אם נדרש

לולאות חיבור מחדש:

  • אם אתם רואים ניסיונות חיבור מחדש חוזרים ביומנים, ה-daemon של signal-cli עשוי לקרוס
  • בדקו את פלט stderr של signal-cli עצמו לשגיאות
  • נסו להפעיל מחדש עם daemon חדש: עצרו Triggerfish, הרגו signal-cli, הפעילו מחדש את שניהם