Skip to content

Signal

TriggerfishエージェントをSignalに接続して、Signalアプリからメッセージできるようにします。 アダプターはあなたのリンクされたSignal電話番号を使用して、JSON-RPC経由で signal-cliデーモンと通信します。

SignalがなぜWいか

Signalアダプターはあなたの電話番号そのものです。TelegramやSlackとは異なり、別のボット アカウントは存在せず、SignalメッセージはあなたのSignal番号宛に届きます。つまり:

  • すべてのインバウンドメッセージはisOwner: false — 常に他の誰かからのメッセージです
  • アダプターはあなたの電話番号として返信します
  • 他のチャンネルのようなメッセージごとのオーナーチェックはありません

これはSignalを、連絡先があなたの番号にメッセージを送り、エージェントがあなたの代わりに返信する 用途に最適にします。

デフォルト分類

SignalはデフォルトでPUBLIC分類です。すべてのインバウンドメッセージは外部の連絡先から来るため、 PUBLIC`が安全なデフォルトです。

セットアップ

ステップ1:signal-cliをインストールする

signal-cliはSignalのサードパーティコマンドラインクライアントです。TriggerfishはTCPまたは Unixソケット経由でこれと通信します。

Linux(ネイティブビルド — Javaは不要):

signal-cliリリースページから最新の ネイティブビルドをダウンロードするか、セットアップ中にTriggerfishに自動ダウンロードさせます。

macOS / その他のプラットフォーム(JVMビルド):

Java 21+が必要です。Javaがインストールされていない場合、Triggerfishがセットアップ中に ポータブルJREを自動的にダウンロードできます。

ガイド付きセットアップを実行することもできます:

bash
triggerfish config add-channel signal

これはsignal-cliを確認し、見つからない場合はダウンロードを提案し、リンクの手順を案内します。

ステップ2:デバイスをリンクする

signal-cliは既存のSignalアカウントにリンクする必要があります(デスクトップアプリのリンクと同様):

bash
signal-cli link -n "Triggerfish"

これによりtsdevice: URIが表示されます。Signal モバイルアプリでQRコードをスキャンします (設定 > リンク済みデバイス > 新しいデバイスをリンク)。

ステップ3:デーモンを起動する

signal-cliは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はいsignal-cliデーモンアドレス(tcp://host:portまたはunix:///path/to/socket
accountstringはいSignalのE.164形式の電話番号
classificationstringいいえ分類上限(デフォルト:PUBLIC
defaultGroupModestringいいえグループメッセージ処理:alwaysmentioned-onlyowner-only(デフォルト:always
groupsobjectいいえグループごとの設定上書き
ownerPhonestringいいえ将来の使用のために予約済み
pairingbooleanいいえセットアップ中にペアリングモードを有効にする

ステップ5:Triggerfishを起動する

bash
triggerfish stop && triggerfish start

別のSignalユーザーからあなたの電話番号にメッセージを送信して接続を確認します。

グループメッセージ

Signalはグループチャットをサポートします。エージェントがグループメッセージにどう応答するかを 制御できます:

モード動作
alwaysすべてのグループメッセージに応答(デフォルト)
mentioned-only電話番号または@メンションで言及された時のみ応答
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

グループIDは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

有効なレベル:PUBLICINTERNALCONFIDENTIALRESTRICTED

変更後にデーモンを再起動:triggerfish stop && triggerfish start

信頼性機能

Signalアダプターにはいくつかの信頼性メカニズムが含まれています:

自動再接続

signal-cliへの接続が切断された場合(ネットワーク障害、デーモンの再起動)、アダプターは 指数バックオフで自動的に再接続します。手動での対応は不要です。

ヘルスチェック

起動時に、TriggerfishはJSON-RPCピングプローブを使用して既存のsignal-cliデーモンが正常かどうか 確認します。デーモンが応答しない場合は、自動的に停止して再起動されます。

バージョン追跡

Triggerfishは既知の安定したsignal-cliバージョン(現在は0.13.0)を追跡し、インストールされて いるバージョンが古い場合は起動時に警告します。signal-cliのバージョンは各接続成功時にログに 記録されます。

Unixソケットサポート

TCPエンドポイントに加えて、アダプターはUnixドメインソケットをサポートします:

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

トラブルシューティング

signal-cliデーモンに到達できない:

  • デーモンが実行中か確認:プロセスを確認するかnc -z 127.0.0.1 7583を試す
  • signal-cliはIPv4のみにバインド — localhostではなく127.0.0.1を使用
  • TCPのデフォルトポートは7583
  • Triggerfishは異常なプロセスを検出した場合、デーモンを自動再起動します

メッセージが届かない:

  • デバイスがリンクされているか確認:Signal モバイルアプリのリンク済みデバイスを確認
  • signal-cliはリンク後に少なくとも1回の同期を受け取っている必要があります
  • 接続エラーのログを確認:triggerfish logs --tail

Javaエラー(JVMビルドのみ):

  • signal-cli JVMビルドにはJava 21+が必要
  • java -versionで確認
  • 必要に応じてTriggerfishがセットアップ中にポータブルJREをダウンロードできます

再接続ループ:

  • ログで繰り返しの再接続試行が見られる場合、signal-cliデーモンがクラッシュしている可能性があります
  • signal-cli自身のstderrの出力でエラーを確認
  • 新しいデーモンで再起動を試みる:Triggerfishを停止し、signal-cliを終了させ、両方を再起動