メディアとデバイス

位置情報コマンド

TL;DR

  • location.get はノードコマンドです(node.invoke経由)。
  • デフォルトではオフです。
  • 設定はセレクターを使用します:オフ / 使用中のみ / 常に。
  • 別個のトグル:高精度位置情報。

セレクターを使用する理由(単なるスイッチではない)

OSの権限は多段階です。アプリ内でセレクターを表示できますが、実際の許可はOSが決定します。

  • iOS/macOS: ユーザーはシステムプロンプト/設定で使用中のみまたは常にを選択できます。アプリはアップグレードをリクエストできますが、OSは設定を要求する場合があります。
  • Android: バックグラウンド位置情報は別個の権限です。Android 10以上では、多くの場合設定画面への遷移が必要です。
  • 高精度位置情報は別個の許可です(iOS 14+の「高精度」、Androidの「正確」と「おおよそ」)。

UIのセレクターは、アプリが要求するモードを決定します。実際の許可はOS設定に依存します。

設定モデル

ノードデバイスごと:

  • location.enabledMode: off | whileUsing | always
  • location.preciseEnabled: ブール値

UIの動作:

  • whileUsingを選択すると、フォアグラウンド権限をリクエストします。
  • alwaysを選択すると、まずwhileUsingを確保し、次にバックグラウンド権限をリクエストします(または、必要に応じてユーザーを設定画面に誘導します)。
  • OSが要求されたレベルを拒否した場合、許可された最高レベルに戻し、ステータスを表示します。

権限マッピング (node.permissions)

オプション。macOSノードは権限マップ経由でlocationを報告します。iOS/Androidでは省略される場合があります。

コマンド: location.get

node.invoke経由で呼び出されます。パラメータ(提案):

{
  "timeoutMs": 10000,
  "maxAgeMs": 15000,
  "desiredAccuracy": "coarse|balanced|precise"
}

レスポンスペイロード:

{
  "lat": 48.20849,
  "lon": 16.37208,
  "accuracyMeters": 12.5,
  "altitudeMeters": 182.0,
  "speedMps": 0.0,
  "headingDeg": 270.0,
  "timestamp": "2026-01-03T12:34:56.000Z",
  "isPrecise": true,
  "source": "gps|wifi|cell|unknown"
}

エラー(安定コード):

  • LOCATION_DISABLED: セレクターがオフです。
  • LOCATION_PERMISSION_REQUIRED: 要求されたモードに必要な権限がありません。
  • LOCATION_BACKGROUND_UNAVAILABLE: アプリがバックグラウンドですが、「使用中のみ」のみ許可されています。
  • LOCATION_TIMEOUT: タイムアウト内に位置情報を取得できませんでした。
  • LOCATION_UNAVAILABLE: システム障害 / プロバイダーなし。

バックグラウンド動作(将来)

目標:ノードがバックグラウンドにある場合でも、以下の条件でのみ位置情報をリクエストできるモデル:

  • ユーザーが常にを選択している。
  • OSがバックグラウンド位置情報を許可している。
  • アプリが位置情報のためにバックグラウンドで実行することが許可されている(iOSのバックグラウンドモード / Androidのフォアグラウンドサービスまたは特別な許可)。

プッシュトリガーフロー(将来):

  1. ゲートウェイがノードにプッシュを送信(サイレントプッシュまたはFCMデータ)。
  2. ノードが短時間起動し、デバイスに位置情報をリクエスト。
  3. ノードがペイロードをゲートウェイに転送。

注意点:

  • iOS: 「常に」権限 + バックグラウンド位置情報モードが必要。サイレントプッシュは調整される可能性があり、断続的な失敗が予想されます。
  • Android: バックグラウンド位置情報にはフォアグラウンドサービスが必要な場合があります。そうでなければ拒否されることが予想されます。

モデル/ツーリング統合

  • ツール画面:nodesツールにlocation_getアクションを追加(ノード必須)。
  • CLI: openclaw nodes location get --node <id>
  • エージェントガイドライン:ユーザーが位置情報を有効にし、その範囲を理解している場合にのみ呼び出してください。

UXコピー(提案)

  • オフ: 「位置情報共有は無効です。」
  • 使用中のみ: 「OpenClawが開いている時のみ。」
  • 常に: 「バックグラウンド位置情報を許可します。システム権限が必要です。」
  • 高精度: 「高精度GPS位置情報を使用します。オフにするとおおよその位置を共有します。」

Voice WakeText-to-Speech