---
read_when:
    - การตั้งค่าการควบคุมการเข้าถึง DM
    - การจับคู่โหนด iOS/Android ใหม่
    - การทบทวนสถานะด้านความปลอดภัยของ OpenClaw
summary: 'ภาพรวมการจับคู่: อนุมัติว่าใครสามารถส่ง DM ถึงคุณได้ + โหนดใดเข้าร่วมได้'
title: การจับคู่
x-i18n:
    generated_at: "2026-06-27T17:12:47Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 92870489b62aeec710f49ec92908f4b83c7d9ee2ce34174b42e283839748e549
    source_path: channels/pairing.md
    workflow: 16
---

"การจับคู่" คือขั้นตอนการอนุมัติการเข้าถึงอย่างชัดเจนของ OpenClaw
ใช้ในสองที่:

1. **การจับคู่ DM** (ใครได้รับอนุญาตให้คุยกับบอต)
2. **การจับคู่ Node** (อุปกรณ์/โหนดใดได้รับอนุญาตให้เข้าร่วมเครือข่าย Gateway)

บริบทความปลอดภัย: [ความปลอดภัย](/th/gateway/security)

## 1) การจับคู่ DM (การเข้าถึงแชทขาเข้า)

เมื่อช่องทางถูกกำหนดค่าด้วยนโยบาย DM `pairing` ผู้ส่งที่ไม่รู้จักจะได้รับโค้ดสั้น ๆ และข้อความของพวกเขาจะ **ไม่ถูกประมวลผล** จนกว่าคุณจะอนุมัติ

นโยบาย DM เริ่มต้นมีเอกสารอยู่ใน: [ความปลอดภัย](/th/gateway/security)

`dmPolicy: "open"` จะเป็นสาธารณะก็ต่อเมื่อรายการอนุญาต DM ที่มีผลรวม `"*"` อยู่ด้วย
การตั้งค่าและการตรวจสอบความถูกต้องต้องใช้ไวลด์การ์ดนี้สำหรับการกำหนดค่าแบบเปิดสาธารณะ หากสถานะที่มีอยู่
มี `open` พร้อมรายการ `allowFrom` แบบเจาะจง runtime จะยังคงรับเฉพาะ
ผู้ส่งเหล่านั้น และการอนุมัติใน pairing-store จะไม่ขยายการเข้าถึง `open`

โค้ดการจับคู่:

- 8 ตัวอักษร เป็นตัวพิมพ์ใหญ่ ไม่มีอักขระที่สับสนได้ (`0O1I`)
- **หมดอายุหลัง 1 ชั่วโมง** บอตจะส่งข้อความการจับคู่เฉพาะเมื่อมีการสร้างคำขอใหม่ (ประมาณหนึ่งครั้งต่อชั่วโมงต่อผู้ส่งหนึ่งราย)
- คำขอจับคู่ DM ที่รอดำเนินการถูกจำกัดไว้ที่ **3 รายการต่อช่องทาง** โดยค่าเริ่มต้น คำขอเพิ่มเติมจะถูกละเว้นจนกว่ารายการหนึ่งจะหมดอายุหรือได้รับการอนุมัติ

### อนุมัติผู้ส่ง

```bash
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
```

หากยังไม่ได้กำหนดค่าเจ้าของคำสั่ง การอนุมัติโค้ดจับคู่ DM จะบูตสแตรป
`commands.ownerAllowFrom` ไปยังผู้ส่งที่ได้รับอนุมัติด้วย เช่น `telegram:123456789`
ซึ่งทำให้การตั้งค่าครั้งแรกมีเจ้าของอย่างชัดเจนสำหรับคำสั่งที่มีสิทธิ์พิเศษและพรอมป์อนุมัติ
การ exec หลังจากมีเจ้าของแล้ว การอนุมัติการจับคู่ครั้งถัดไปจะให้เฉพาะการเข้าถึง DM
เท่านั้น และจะไม่เพิ่มเจ้าของเพิ่มเติม

ช่องทางที่รองรับ: `discord`, `feishu`, `googlechat`, `imessage`, `irc`, `line`, `matrix`, `mattermost`, `msteams`, `nextcloud-talk`, `nostr`, `openclaw-weixin`, `signal`, `slack`, `synology-chat`, `telegram`, `twitch`, `whatsapp`, `zalo`, `zalouser`

### กลุ่มผู้ส่งที่นำกลับมาใช้ได้

ใช้ `accessGroups` ระดับบนสุดเมื่อชุดผู้ส่งที่เชื่อถือได้เดียวกันควรใช้กับ
หลายช่องทางข้อความ หรือใช้กับทั้งรายการอนุญาต DM และกลุ่ม

กลุ่มแบบคงที่ใช้ `type: "message.senders"` และถูกอ้างอิงด้วย
`accessGroup:<name>` จากรายการอนุญาตของช่องทาง:

```json5
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
        whatsapp: ["+15551234567"],
      },
    },
  },
  channels: {
    telegram: { dmPolicy: "allowlist", allowFrom: ["accessGroup:operators"] },
    whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["accessGroup:operators"] },
  },
}
```

กลุ่มการเข้าถึงมีเอกสารโดยละเอียดที่นี่: [กลุ่มการเข้าถึง](/th/channels/access-groups)

### สถานะอยู่ที่ใด

จัดเก็บภายใต้ `~/.openclaw/credentials/`:

- คำขอที่รอดำเนินการ: `<channel>-pairing.json`
- ที่เก็บรายการอนุญาตที่ได้รับอนุมัติ:
  - บัญชีเริ่มต้น: `<channel>-allowFrom.json`
  - บัญชีที่ไม่ใช่ค่าเริ่มต้น: `<channel>-<accountId>-allowFrom.json`

พฤติกรรมการกำหนดขอบเขตบัญชี:

- บัญชีที่ไม่ใช่ค่าเริ่มต้นจะอ่าน/เขียนเฉพาะไฟล์รายการอนุญาตในขอบเขตของตน
- บัญชีเริ่มต้นใช้ไฟล์รายการอนุญาตแบบไม่มีขอบเขตระดับช่องทาง

ถือว่าสิ่งเหล่านี้เป็นข้อมูลละเอียดอ่อน (เพราะเป็นตัวควบคุมการเข้าถึงผู้ช่วยของคุณ)

<Note>
ที่เก็บรายการอนุญาตการจับคู่มีไว้สำหรับการเข้าถึง DM การอนุญาตสำหรับกลุ่มแยกต่างหาก
การอนุมัติโค้ดจับคู่ DM จะไม่อนุญาตให้ผู้ส่งนั้นเรียกใช้คำสั่งกลุ่ม
หรือควบคุมบอตในกลุ่มโดยอัตโนมัติ การบูตสแตรปเจ้าของคนแรกเป็นสถานะการกำหนดค่า
แยกต่างหากใน `commands.ownerAllowFrom` และการส่งมอบแชทกลุ่มยังคงเป็นไปตาม
รายการอนุญาตกลุ่มของช่องทาง (เช่น `groupAllowFrom`, `groups` หรือการแทนที่
รายกลุ่มหรือรายหัวข้อ ขึ้นอยู่กับช่องทาง)
</Note>

## 2) การจับคู่อุปกรณ์ Node (Node บน iOS/Android/macOS/headless)

Node เชื่อมต่อกับ Gateway เป็น **อุปกรณ์** ด้วย `role: node` Gateway
จะสร้างคำขอจับคู่อุปกรณ์ที่ต้องได้รับการอนุมัติ

### จับคู่ผ่าน Telegram (แนะนำสำหรับ iOS)

หากคุณใช้ Plugin `device-pair` คุณสามารถจับคู่อุปกรณ์ครั้งแรกทั้งหมดจาก Telegram ได้:

1. ใน Telegram ให้ส่งข้อความหาบอตของคุณ: `/pair`
2. บอตจะตอบกลับด้วยสองข้อความ: ข้อความคำแนะนำและข้อความ **โค้ดตั้งค่า** แยกต่างหาก (คัดลอก/วางใน Telegram ได้ง่าย)
3. บนโทรศัพท์ของคุณ เปิดแอป OpenClaw iOS → Settings → Gateway
4. สแกนคิวอาร์โค้ดหรือวางโค้ดตั้งค่าแล้วเชื่อมต่อ
5. กลับไปที่ Telegram: `/pair pending` (ตรวจสอบ ID คำขอ บทบาท และขอบเขต) จากนั้นอนุมัติ

โค้ดตั้งค่าเป็นเพย์โหลด JSON ที่เข้ารหัส base64 ซึ่งประกอบด้วย:

- `url`: URL WebSocket ของ Gateway (`ws://...` หรือ `wss://...`)
- `bootstrapToken`: โทเค็นบูตสแตรปแบบอายุสั้นสำหรับอุปกรณ์เดียว ใช้สำหรับแฮนด์เชคการจับคู่ครั้งแรก

โทเค็นบูตสแตรปนั้นมีโปรไฟล์บูตสแตรปการจับคู่ในตัว:

- โปรไฟล์ตั้งค่าในตัวอนุญาตเฉพาะฐาน QR/โค้ดตั้งค่าใหม่เท่านั้น:
  `node` พร้อมการส่งต่อ `operator` ที่มีขอบเขตจำกัด
- โทเค็น `node` ที่ส่งต่อยังคงเป็น `scopes: []`
- โทเค็น `operator` ที่ส่งต่อถูกจำกัดไว้ที่ `operator.approvals`,
  `operator.read` และ `operator.write`
- `operator.admin` และ `operator.pairing` จะไม่ได้รับผ่านบูตสแตรป
  QR/โค้ดตั้งค่า แต่ต้องใช้การจับคู่ operator ที่อนุมัติแยกต่างหากหรือโฟลว์โทเค็นแยกต่างหาก
- การหมุนเวียน/เพิกถอนโทเค็นภายหลังยังคงถูกจำกัดทั้งโดยสัญญาบทบาท
  ที่อนุมัติของอุปกรณ์และขอบเขต operator ของเซสชันผู้เรียก

ปฏิบัติต่อโค้ดตั้งค่าเหมือนรหัสผ่านระหว่างที่ยังใช้งานได้

สำหรับ Tailscale, สาธารณะ หรือการจับคู่อุปกรณ์มือถือระยะไกลแบบอื่น ให้ใช้ Tailscale Serve/Funnel
หรือ URL Gateway `wss://` อื่น โค้ดตั้งค่า `ws://` แบบข้อความธรรมดาจะถูกยอมรับเฉพาะ
สำหรับ loopback, ที่อยู่ LAN ส่วนตัว, โฮสต์ Bonjour `.local` และโฮสต์ Android
emulator เท่านั้น ที่อยู่ CGNAT ของ Tailnet, ชื่อ `.ts.net` และโฮสต์สาธารณะจะยังคง
ปิดกั้นก่อนออก QR/โค้ดตั้งค่า

### อนุมัติอุปกรณ์ Node

```bash
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
```

เมื่อการอนุมัติแบบชัดเจนถูกปฏิเสธเพราะเซสชันอุปกรณ์ที่จับคู่ซึ่งเป็นผู้อนุมัติ
ถูกเปิดด้วยขอบเขตสำหรับการจับคู่เท่านั้น CLI จะลองคำขอเดิมอีกครั้งด้วย
`operator.admin` ซึ่งทำให้อุปกรณ์ที่จับคู่แล้วและมีความสามารถระดับแอดมินสามารถกู้คืนการจับคู่
Control UI/เบราว์เซอร์ใหม่ได้โดยไม่ต้องแก้ไข `devices/paired.json` ด้วยมือ
Gateway ยังคงตรวจสอบการเชื่อมต่อที่ลองซ้ำ โทเค็นที่ไม่สามารถยืนยันตัวตน
ด้วย `operator.admin` จะยังคงถูกบล็อก

หากอุปกรณ์เดิมลองใหม่ด้วยรายละเอียด auth ที่ต่างกัน (เช่น
บทบาท/ขอบเขต/คีย์สาธารณะต่างกัน) คำขอที่รอดำเนินการก่อนหน้าจะถูกแทนที่และสร้าง
`requestId` ใหม่

<Note>
อุปกรณ์ที่จับคู่แล้วจะไม่ได้รับการเข้าถึงที่กว้างขึ้นแบบเงียบ ๆ หากเชื่อมต่อใหม่โดยขอขอบเขตเพิ่มเติมหรือบทบาทที่กว้างขึ้น OpenClaw จะคงการอนุมัติที่มีอยู่ไว้ตามเดิมและสร้างคำขออัปเกรดใหม่ที่รอดำเนินการ ใช้ `openclaw devices list` เพื่อเปรียบเทียบการเข้าถึงที่ได้รับอนุมัติอยู่ในปัจจุบันกับการเข้าถึงที่ขอใหม่ก่อนที่คุณจะอนุมัติ
</Note>

### การอนุมัติ Node อัตโนมัติด้วย trusted-CIDR แบบไม่บังคับ

การจับคู่อุปกรณ์ยังคงเป็นแบบแมนนวลโดยค่าเริ่มต้น สำหรับเครือข่าย Node ที่ควบคุมอย่างเข้มงวด
คุณสามารถเลือกใช้การอนุมัติ Node ครั้งแรกอัตโนมัติด้วย CIDR หรือ IP แบบเจาะจงได้:

```json5
{
  gateway: {
    nodes: {
      pairing: {
        autoApproveCidrs: ["192.168.1.0/24"],
      },
    },
  },
}
```

สิ่งนี้ใช้เฉพาะกับคำขอจับคู่ `role: node` ใหม่ที่ไม่มีขอบเขตที่ร้องขอ
เท่านั้น ไคลเอนต์ operator, เบราว์เซอร์, Control UI และ WebChat ยังคงต้องอนุมัติ
ด้วยตนเอง การเปลี่ยนบทบาท ขอบเขต เมตาดาตา และคีย์สาธารณะยังคงต้องอนุมัติ
ด้วยตนเอง

### การจัดเก็บสถานะการจับคู่ Node

จัดเก็บภายใต้ `~/.openclaw/devices/`:

- `pending.json` (อายุสั้น; คำขอที่รอดำเนินการจะหมดอายุ)
- `paired.json` (อุปกรณ์ที่จับคู่แล้ว + โทเค็น)

### หมายเหตุ

- API เดิม `node.pair.*` (CLI: `openclaw nodes pending|approve|reject|remove|rename`) เป็น
  ที่เก็บการจับคู่ที่ Gateway เป็นเจ้าของแยกต่างหาก Node ผ่าน WS ยังคงต้องใช้การจับคู่อุปกรณ์
- ระเบียนการจับคู่คือแหล่งข้อมูลจริงที่คงทนสำหรับบทบาทที่อนุมัติ โทเค็นอุปกรณ์
  ที่ใช้งานอยู่ยังคงถูกจำกัดอยู่กับชุดบทบาทที่อนุมัตินั้น รายการโทเค็นหลงเหลือ
  ที่อยู่นอกบทบาทที่อนุมัติจะไม่สร้างการเข้าถึงใหม่

## เอกสารที่เกี่ยวข้อง

- โมเดลความปลอดภัย + prompt injection: [ความปลอดภัย](/th/gateway/security)
- การอัปเดตอย่างปลอดภัย (เรียกใช้ doctor): [การอัปเดต](/th/install/updating)
- การกำหนดค่าช่องทาง:
  - Telegram: [Telegram](/th/channels/telegram)
  - WhatsApp: [WhatsApp](/th/channels/whatsapp)
  - Signal: [Signal](/th/channels/signal)
  - iMessage: [iMessage](/th/channels/imessage)
  - Discord: [Discord](/th/channels/discord)
  - Slack: [Slack](/th/channels/slack)
