Платформы обмена сообщениями
iMessage
⚠️ Для новых развертываний iMessage используйте BlueBubbles. Интеграция
imsgявляется устаревшей и может быть удалена в будущем релизе.
Статус: устаревшая внешняя CLI-интеграция. Шлюз запускает imsg rpc и обменивается данными через JSON-RPC на stdio (отдельный демон/порт не требуется).
Быстрая настройка
Требования и разрешения (macOS)
- В приложении "Сообщения" на Mac, где запущен
imsg, должен быть выполнен вход. - Для контекста процесса, запускающего OpenClaw/
imsg, требуется доступ "Полный доступ к диску" (для доступа к БД сообщений). - Для отправки сообщений через Messages.app требуется разрешение "Автоматизация".
💡 Разрешения предоставляются для каждого контекста процесса. Если шлюз работает без графического интерфейса (LaunchAgent/SSH), запустите однократную интерактивную команду в том же контексте, чтобы вызвать запросы:
Копировать
imsg chats --limit 1# илиimsg send <handle> "test"
Контроль доступа и маршрутизация
channels.imessage.dmPolicy управляет личными сообщениями:
pairing(по умолчанию)allowlistopen(требует, чтобыallowFromвключал"*")disabled
Поле списка разрешений: channels.imessage.allowFrom. Элементы списка разрешений могут быть идентификаторами (handles) или целями чатов (chat_id:*, chat_guid:*, chat_identifier:*).
channels.imessage.groupPolicy управляет обработкой групп:
allowlist(по умолчанию при настройке)opendisabled
Список разрешений отправителей в группах: channels.imessage.groupAllowFrom. Резервный вариант во время выполнения: если groupAllowFrom не задан, проверка отправителя в группе iMessage возвращается к allowFrom, если он доступен. Примечание времени выполнения: если channels.imessage полностью отсутствует, среда выполнения возвращается к groupPolicy="allowlist" и записывает предупреждение (даже если задан channels.defaults.groupPolicy). Управление упоминаниями для групп:
- В iMessage нет встроенных метаданных об упоминаниях
- обнаружение упоминаний использует шаблоны регулярных выражений (
agents.list[].groupChat.mentionPatterns, резервный вариантmessages.groupChat.mentionPatterns) - без настроенных шаблонов управление упоминаниями не может быть применено
Команды управления от авторизованных отправителей могут обходить управление упоминаниями в группах.
- Личные сообщения используют прямую маршрутизацию; группы используют групповую маршрутизацию.
- При настройке по умолчанию
session.dmScope=mainличные сообщения iMessage объединяются в основную сессию агента. - Групповые сессии изолированы (
agent::imessage:group:<chat_id>). - Ответ ы маршрутизируются обратно в iMessage с использованием метаданных исходного канала/цели.
Поведение групповых тредов: Некоторые треды iMessage с несколькими участниками могут поступать с is_group=false. Если этот chat_id явно настроен в channels.imessage.groups, OpenClaw обрабатывает его как групповой трафик (групповое управление + изоляция групповой сессии).
Схемы развертывания
Используйте выделенный Apple ID и пользователя macOS, чтобы трафик бота был изолирован от вашего личного профиля в "Сообщениях". Типичный процесс:
- Создайте/войдите под выделенным пользователем macOS.
- Войдите в "Сообщения" с Apple ID бота в этом пользователе.
- Установите
imsgдля этого пользователя. - Создайте SSH-обертку, чтобы OpenClaw мог запускать
imsgв контексте этого пользователя. - Настройте
channels.imessage.accounts..cliPathи.dbPathна профиль этого пользователя.
При первом запуске могут потребоваться подтверждения в графическом интерфейсе (Автоматизация + Полный доступ к диску) в сессии пользователя бота.
Распространенная топология:
- шлюз работает на Linux/VM
- iMessage +
imsgработает на Mac в вашей tailnet - обертка
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-ключи, чтобы и SSH, и SCP работали неинтерактивно. Убедитесь, что сначала доверен ключ хоста (например, ssh bot@mac-mini.tailnet-1234.ts.net), чтобы known_hosts был заполнен.
iMessage поддерживает конфигурацию для каждой учетной записи в channels.imessage.accounts. Каждая учетная запись может переопределять поля, такие как cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, настройки истории и списки разрешений корневых путей для вложений.