Android Order Skill (点餐)
This skill uses the paired Android device (OpenClaw SMS Demo app with order capability) to manage an in-app menu and cart: get menu, add/remove items, view cart, submit order. Inspired by EdgeOSToolService (MEOW PAY); implementation is in-memory on the device (demo, no real POS backend).
When to use this skill
- User asks to order food/drinks, view menu, add to cart, or submit an order on the paired Android device: use the
order.*commands below.
Commands overview
| Command | Description |
|---|---|
order.getGoods | Return menu (id, name, priceCents, price). |
order.getSelectedGoods | Return current cart with quantities and subtotals. |
order.addGoods | Add by id or name (and optional quantity). |
order.removeGoods | Remove by id or name (and optional quantity). |
order.clearGoods | Clear cart. |
order.submitOrder | Submit cart as order; returns summary (demo only). |
order.batchAddGoods | Add multiple items: list = [{"id":"1","quantity":2},...]. |
How to call the underlying commands
Invoke via the OpenClaw gateway node invoke API:
- command: one of
order.getGoods,order.getSelectedGoods,order.addGoods,order.removeGoods,order.clearGoods,order.submitOrder,order.batchAddGoods. - paramsJSON: JSON object string, or
nullfor no-param commands.
order.getGoods
command:"order.getGoods"paramsJSON:nullor"{}"- Success: payload is a JSON array of
{ "id", "name", "priceCents", "price" }.
order.getSelectedGoods
command:"order.getSelectedGoods"paramsJSON:nullor"{}"- Success: payload is a JSON array of cart items with
id,name,quantity,priceCents,subtotalCents.
order.addGoods
-
command:"order.addGoods" -
paramsJSON: provide id or name (or both); optional quantity (default 1).{ "id": "1", "quantity": "2" }or
{ "name": "拿铁", "quantity": "1" } -
Success: payload includes
success: trueandmessage(e.g. "已添加 拿铁 x1").
order.removeGoods
command:"order.removeGoods"paramsJSON: same shape as addGoods (idorname, optionalquantity).
order.clearGoods
command:"order.clearGoods"paramsJSON:nullor"{}".
order.submitOrder
command:"order.submitOrder"paramsJSON:nullor"{}".- Success: payload includes
success,message,totalCents,items. Cart is cleared after submit. - Error:
CART_EMPTYif cart is empty.
order.batchAddGoods
command:"order.batchAddGoods"paramsJSON:{ "list": "[{\"id\":\"1\",\"quantity\":2},{\"id\":\"2\",\"quantity\":1}]" }- Success: payload includes
successandmessage(e.g. "已批量添加 2 项").
Error handling
- GOODS_NOT_FOUND: No menu item matched the given id or name. Suggest calling
order.getGoodsto see the menu. - NOT_IN_CART: Item not in cart when removing.
- CART_EMPTY: Cannot submit when cart is empty.
- INVALID_REQUEST: Missing or malformed params (e.g. empty
listfor batchAddGoods).
Demo menu (default on device)
The in-app menu includes items such as: 拿铁, 美式, 卡布奇诺, 三明治, 沙拉, 蛋糕 (with ids "1"–"6"). Use order.getGoods to get the current list and prices.
Safety notes
- This is a demo flow: submit order does not charge or send to a real POS. Do not expose as real payment.
- Prefer confirming with the user before submitting an order (e.g. read back cart and total).