> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Đánh thức bằng giọng nói

OpenClaw xem **từ đánh thức là một danh sách toàn cục duy nhất** do **Gateway** sở hữu.

* **Không có từ đánh thức tùy chỉnh theo từng nút**.
* **Bất kỳ giao diện người dùng nút/ứng dụng nào cũng có thể chỉnh sửa** danh sách; các thay đổi được Gateway lưu bền vững và phát tới tất cả mọi người.
* macOS và iOS giữ các nút bật/tắt **Voice Wake đã bật/tắt** cục bộ (trải nghiệm người dùng cục bộ + quyền khác nhau).
* Android hiện giữ Voice Wake tắt và dùng luồng mic thủ công trong thẻ Voice.

## Lưu trữ (máy chủ Gateway)

Từ đánh thức và quy tắc định tuyến được lưu trong cơ sở dữ liệu trạng thái gateway:

* `~/.openclaw/state/openclaw.sqlite`

Các bảng đang hoạt động là:

* `voicewake_triggers`
* `voicewake_routing_config`
* `voicewake_routing_routes`

Các tệp `settings/voicewake.json` và `settings/voicewake-routing.json` cũ chỉ là
đầu vào di trú của doctor; runtime đọc và ghi các bảng SQLite.

## Giao thức

### Phương thức

* `voicewake.get` → `{ triggers: string[] }`
* `voicewake.set` với tham số `{ triggers: string[] }` → `{ triggers: string[] }`

Ghi chú:

* Trình kích hoạt được chuẩn hóa (cắt khoảng trắng, bỏ mục rỗng). Danh sách rỗng sẽ quay về mặc định.
* Các giới hạn được thực thi để đảm bảo an toàn (giới hạn số lượng/độ dài).

### Phương thức định tuyến (trình kích hoạt → đích)

* `voicewake.routing.get` → `{ config: VoiceWakeRoutingConfig }`
* `voicewake.routing.set` với tham số `{ config: VoiceWakeRoutingConfig }` → `{ config: VoiceWakeRoutingConfig }`

Hình dạng `VoiceWakeRoutingConfig`:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "version": 1,
  "defaultTarget": { "mode": "current" },
  "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }],
  "updatedAtMs": 1730000000000
}
```

Đích định tuyến hỗ trợ đúng một trong các dạng sau:

* `{ "mode": "current" }`
* `{ "agentId": "main" }`
* `{ "sessionKey": "agent:main:main" }`

### Sự kiện

* payload `voicewake.changed` `{ triggers: string[] }`
* payload `voicewake.routing.changed` `{ config: VoiceWakeRoutingConfig }`

Ai nhận được:

* Tất cả máy khách WebSocket (ứng dụng macOS, WebChat, v.v.)
* Tất cả các nút đã kết nối (iOS/Android), và cả khi nút kết nối dưới dạng lần đẩy "trạng thái hiện tại" ban đầu.

## Hành vi máy khách

### Ứng dụng macOS

* Dùng danh sách toàn cục để kiểm soát trình kích hoạt `VoiceWakeRuntime`.
* Chỉnh sửa "Từ kích hoạt" trong cài đặt Voice Wake sẽ gọi `voicewake.set` rồi dựa vào bản phát để giữ các máy khách khác đồng bộ.

### Nút iOS

* Dùng danh sách toàn cục để phát hiện trình kích hoạt `VoiceWakeManager`.
* Chỉnh sửa Từ đánh thức trong Cài đặt sẽ gọi `voicewake.set` (qua Gateway WS) và cũng giữ phát hiện từ đánh thức cục bộ phản hồi nhanh.

### Nút Android

* Voice Wake hiện bị tắt trong runtime/Cài đặt Android.
* Giọng nói Android dùng thu mic thủ công trong thẻ Voice thay vì trình kích hoạt bằng từ đánh thức.

## Liên quan

* [Chế độ trò chuyện](/vi/nodes/talk)
* [Âm thanh và ghi chú thoại](/vi/nodes/audio)
* [Hiểu nội dung phương tiện](/vi/nodes/media-understanding)
