本文へスキップ

メッセージングプラットフォーム

iMessage

⚠️ 新しいiMessageデプロイメントには、BlueBubblesを使用してください。imsg統合はレガシーであり、将来のリリースで削除される可能性があります。

ステータス: レガシー外部CLI統合。ゲートウェイはimsg rpcを生成し、stdio上のJSON-RPCを介して通信します(別個のデーモン/ポートは不要)。

クイックセットアップ

要件と権限 (macOS)

  • imsgを実行するMac上で、メッセージアプリにサインインしている必要があります。
  • OpenClaw/imsgを実行するプロセスコンテキストに対して、フルディスクアクセスが必要です(メッセージDBへのアクセス)。
  • Messages.app経由でメッセージを送信するには、自動化の権限が必要です。

💡 権限はプロセスコンテキストごとに付与されます。ゲートウェイがヘッドレス(LaunchAgent/SSH)で実行される場合、同じコンテキストで一度だけ対話型コマンドを実行してプロンプトをトリガーします:

コピー

imsg chats --limit 1
# または
imsg send <handle> "test"

アクセス制御とルーティング

channels.imessage.dmPolicyはダイレクトメッセージを制御します:

  • pairing (デフォルト)
  • allowlist
  • open (allowFrom"*"を含む必要があります)
  • disabled

許可リストフィールド:channels.imessage.allowFrom。許可リストエントリは、ハンドルまたはチャットターゲット(chat_id:*, chat_guid:*, chat_identifier:*)にすることができます。

channels.imessage.groupPolicyはグループの扱いを制御します:

  • allowlist (構成時にデフォルト)
  • open
  • disabled

グループ送信者許可リスト:channels.imessage.groupAllowFrom。実行時フォールバック:groupAllowFromが設定されていない場合、iMessageグループ送信者チェックは、利用可能な場合allowFromにフォールバックします。実行時注意:channels.imessageが完全に欠落している場合、実行時はgroupPolicy="allowlist"にフォールバックし、警告をログに記録します(channels.defaults.groupPolicyが設定されていても)。グループのメンションゲーティング:

  • iMessageにはネイティブのメンションメタデータがありません
  • メンション検出は正規表現パターンを使用します(agents.list[].groupChat.mentionPatterns、フォールバックmessages.groupChat.mentionPatterns
  • 構成されたパターンがない場合、メンションゲーティングは適用できません

許可された送信者からの制御コマンドは、グループ内のメンションゲーティングをバイパスできます。

  • DMはダイレクトルーティングを使用します;グループはグループルーティングを使用します。
  • デフォルトのsession.dmScope=mainでは、iMessage DMはエージェントのメインセッションに統合されます。
  • グループセッションは分離されます(agent::imessage:group:<chat_id>)。
  • 返信は、発信元チャネル/ターゲットメタデータを使用してiMessageにルーティングされます。

グループ風スレッド動作:一部の複数参加者のiMessageスレッドは、is_group=falseで到着することがあります。そのchat_idchannels.imessage.groupsの下で明示的に構成されている場合、OpenClawはそれをグループトラフィックとして扱います(グループゲーティング + グループセッション分離)。

デプロイメントパターン

専用のApple IDとmacOSユーザーを使用して、ボットのトラフィックを個人のメッセージプロファイルから分離します。典型的なフロー:

  1. 専用のmacOSユーザーを作成/サインインします。
  2. そのユーザーでボット用Apple IDを使用してメッセージアプリにサインインします。
  3. そのユーザーにimsgをインストールします。
  4. OpenClawがそのユーザーコンテキストでimsgを実行できるようにSSHラッパーを作成します。
  5. channels.imessage.accounts..cliPath.dbPathをそのユーザープロファイルにポイントします。

初回実行では、そのボットユーザーセッションでGUI承認(自動化 + フルディスクアクセス)が必要になる場合があります。

一般的なトポロジ:

  • ゲートウェイはLinux/VM上で実行
  • iMessage + imsgはあなたのtailnet内のMac上で実行
  • cliPathラッパーはSSHを使用してimsgを実行
  • remoteHostはSCP添付ファイル取得を有効化

例:

{
channels: {
imessage: {
enabled: true,
cliPath: "~/.openclaw/scripts/imsg-ssh",
remoteHost: "bot@mac-mini.tailnet-1234.ts.net",
includeAttachments: true,
dbPath: "/Users/bot/Library/Messages/chat.db",
},
},
}
#!/usr/bin/env bash
exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"

SSHとSCPが非対話型になるようにSSHキーを使用します。まずホストキーが信頼されていることを確認します(例:ssh bot@mac-mini.tailnet-1234.ts.netknown_hostsが設定されるように。

iMessageはchannels.imessage.accountsの下でアカウントごとの設定をサポートします。各アカウントは、cliPathdbPathallowFromgroupPolicymediaMaxMb、履歴設定、添付ファイルルート許可リストなどのフィールドをオーバーライドできます。

メディア、チャンキング、配信ターゲット

  • インバウンド添付ファイルの取り込みはオプション:channels.imessage.includeAttachments

  • リモート添付ファイルパスは、remoteHostが設定されている場合、SCP経由で取得できます

  • 添付ファイルパスは許可されたルートと一致する必要があります:

    • channels.imessage.attachmentRoots (ローカル)
    • channels.imessage.remoteAttachmentRoots (リモートSCPモード)
    • デフォルトルートパターン:/Users/*/Library/Messages/Attachments
  • SCPは厳格なホストキーチェックを使用します(StrictHostKeyChecking=yes

  • アウトバウンドメディアサイズはchannels.imessage.mediaMaxMbを使用します(デフォルト16 MB)

  • テキストチャンク制限:channels.imessage.textChunkLimit (デフォルト4000)

  • チャンクモード:channels.imessage.chunkMode

    • length (デフォルト)
    • newline (段落優先分割)

推奨される明示的ターゲット:

  • chat_id:123 (安定したルーティングに推奨)
  • chat_guid:...
  • chat_identifier:...

ハンドルターゲットもサポートされています:

  • imessage:+1555...
  • sms:+1555...
  • user@example.com
imsg chats --limit 20

設定書き込み

iMessageはデフォルトでチャネル開始の設定書き込みを許可します(commands.config: trueの場合の/config set|unset用)。無効化:

{
channels: {
imessage: {
configWrites: false,
},
},
}

トラブルシューティング

バイナリとRPCサポートを検証します:

imsg rpc --help
openclaw channels status --probe

プローブがRPC未サポートを報告する場合、imsgを更新してください。

以下を確認:

  • channels.imessage.dmPolicy
  • channels.imessage.allowFrom
  • ペアリング承認(openclaw pairing list imessage

以下を確認:

  • channels.imessage.groupPolicy
  • channels.imessage.groupAllowFrom
  • channels.imessage.groups許可リスト動作
  • メンションパターン構成(agents.list[].groupChat.mentionPatterns

以下を確認:

  • channels.imessage.remoteHost
  • channels.imessage.remoteAttachmentRoots
  • ゲートウェイホストからのSSH/SCPキー認証
  • ゲートウェイホストの~/.ssh/known_hostsにホストキーが存在する
  • メッセージを実行するMac上のリモートパスの読み取り可能性

同じユーザー/セッションコンテキストで対話型GUIターミナルで再実行し、プロンプトを承認します:

imsg chats --limit 1
imsg send <handle> "test"

OpenClaw/imsgを実行するプロセスコンテキストに対して、フルディスクアクセス + 自動化が付与されていることを確認します。

設定リファレンスポインタ

Google ChatIRC