--- name: meta-fb-inbox description: Check Facebook page inbox messages via Meta Business Suite browser automation. Use when asked to check Facebook messages, reply to FB customers, or manage Facebook page inbox. Supports multiple pages with custom aliases. --- # Meta Facebook Inbox ⚠️ **CRITICAL**: Always use `profile:"openclaw"` (isolated browser) for all browser actions. Never use Chrome relay. Keep the same `targetId` across operations to avoid losing the tab. ⚠️ **CONTEXT Management**: - Snapshot results are large. Do NOT repeat them in thinking. - Extract needed info and process immediately. - **Preferred approach**: Use `snapshot refs:"aria" compact:true` to find element refs, then `act` + `click`/`type` with ref. ## Configuration Before first use, check if `config.json` exists: ``` read file_path:"skills/meta-fb-inbox/config.json" ``` ⚠️ **PATH RULE**: Always use workspace-relative paths starting from `skills/meta-fb-inbox/`. Never use `../` or absolute paths. If missing or empty, help the user run the setup wizard: ```bash cd skills/meta-fb-inbox node scripts/setup.js ``` ### Config Format `config.json` contains a `pages` array. Each page has an `alias` (display name) and `url` (Meta Business Suite inbox URL): ```json { "pages": [ { "alias": "fb fanpage", "url": "https://business.facebook.com/latest/inbox/all/?&asset_id=123456789012345" }, { "alias": "fb fanpage 2", "url": "https://business.facebook.com/latest/inbox/all/?&asset_id=987654321098765" } ] } ``` ### Resolving a Page When the user asks to check messages: - If they specify an alias (e.g. "fb fanpage 2"), look it up in `config.json` → `pages`. - If they don't specify, use the **first** page in the array. - If only one page exists, use it directly. - If multiple pages exist and no alias given, list available aliases and ask which one. ## Enter Facebook Inbox This is the first step for all operations below. 1. **Check and start browser service:** ``` browser action:"status" ``` If `"running": false`, start the browser service: ``` browser action:"start" profile:"openclaw" ``` Wait 2-3 seconds for the service to initialize. 2. **Read config to get the target page URL:** ``` read file_path:"skills/meta-fb-inbox/config.json" ``` Resolve the page alias to a URL (see "Resolving a Page" above). 3. **Open browser:** ``` browser action:"open" profile:"openclaw" targetUrl:"" ``` Capture `targetId` and `url` from response. 4. **Wait for page load:** ``` browser action:"act" profile:"openclaw" targetId:"" request:{"kind":"wait","timeMs":3000} ``` 5. **Check login state:** ``` browser action:"act" profile:"openclaw" targetId:"" request:{"kind":"evaluate","fn":"function(){return window.location.href;}"} ``` - If URL contains `business.facebook.com` and shows the inbox → logged in, proceed. - If redirected to a login page → notify the user they need to log in manually in the OpenClaw browser, then retry. 6. **Proceed with the user's request.** 7. **Clean Up Browser Tabs** (after all operations): a. Open a blank tab: ``` browser action:"open" profile:"openclaw" targetUrl:"about:blank" ``` b. Get all tabs: ``` browser action:"tabs" profile:"openclaw" ``` c. Close all tabs except the newest one (about:blank): ``` browser action:"close" profile:"openclaw" targetId:"" ``` ## Quick Check (for cron / automated checks) Complete flow: open page → screenshot → report. 1. Read config: `read file_path:"skills/meta-fb-inbox/config.json"` → resolve page URL 2. Start browser if needed: `browser action:"start" profile:"openclaw"` 3. Open page: `browser action:"open" profile:"openclaw" targetUrl:` → get `targetId` 4. Wait: `browser action:"act" profile:"openclaw" targetId: request:{"kind":"wait","timeMs":4000}` 5. Check URL to verify login (see step 5 above) 6. Take snapshot: `browser action:"snapshot" profile:"openclaw" targetId: refs:"aria" compact:true` 7. Look for conversation items in the inbox list. Each conversation typically shows: - Customer name - Last message preview - Timestamp - Unread indicator (bold text or dot) 8. Report results in format: ` (