返回技能库

Amber — 支持电话通话的语音代理

适用于 OpenClaw 的最佳语音和电话通话技能。通过 Twilio 使用 OpenAI Realtime 语音来处理入站和出站呼叫。入站出站呼叫,ca...

作者:batthis · 最新版本:5.5.7

收藏:4 · 下载:1.1k

说明文档

# Calendar Skill

Query the operator's calendar for availability and create new entries via `ical-query`.

## Capabilities

- **read**: Check free/busy availability for today, tomorrow, this week, or a specific date
- **act**: Create new calendar entries

## Privacy Rule

**Event details are never disclosed to callers.** This is enforced at two levels:

1. **Handler level** — the handler strips all event titles, names, locations, and notes from ical-query output before returning results. Only busy time slots (start/end times) are returned.
2. **Model level** — the function description instructs Amber to only communicate availability ("free from 2pm to 4pm") and never reveal what the events are.

Amber should say things like:
- ✅ "The operator is free between 2 and 4 this afternoon"
- ✅ "They're busy until 3pm, then free for the rest of the day"
- ❌ "They have a meeting with John at 2pm" ← never
- ❌ "They're at the dentist from 10 to 11" ← never

## Security — Three Layers

Input validation is enforced at three independent levels:

1. **Schema level** — `range` is constrained by `pattern: ^(today|tomorrow|week|\d{4}-\d{2}-\d{2})

  
    Amber — 支持电话通话的语音代理 - 免费 AI Skill 技能包 | ClawSkills
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    
    
    

    
    
    
    

    
  
  


  
    ; `start`/`end` by `pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}

  
    Amber — 支持电话通话的语音代理 - 免费 AI Skill 技能包 | ClawSkills
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    
    
    

    
    
    
    

    
  
  


  
    ; freetext fields have `maxLength` caps. The LLM cannot produce out-of-spec values without violating the schema.
2. **Handler level** — explicit validation before any exec call; rejects values that don't match expected formats even if schema is bypassed.
3. **Exec level** — `context.exec()` takes a `string[]` and uses `execFileSync` (no shell spawned); arguments are passed as discrete tokens, not a shell-interpolated string.

## Notes

- Uses `/usr/local/bin/ical-query` — no network access, no gateway round-trip
- Fast: direct local binary call (~100ms)
- Calendar name optional — defaults to operator's primary calendar