| name | android-order |
| description | Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment). |
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
null for no-param commands.
order.getGoods
command: "order.getGoods"
paramsJSON: null or "{}"
- Success: payload is a JSON array of
{ "id", "name", "priceCents", "price" }.
order.getSelectedGoods
command: "order.getSelectedGoods"
paramsJSON: null or "{}"
- 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: true and message (e.g. "已添加 拿铁 x1").
order.removeGoods
command: "order.removeGoods"
paramsJSON: same shape as addGoods (id or name, optional quantity).
order.clearGoods
command: "order.clearGoods"
paramsJSON: null or "{}".
order.submitOrder
command: "order.submitOrder"
paramsJSON: null or "{}".
- Success: payload includes
success, message, totalCents, items. Cart is cleared after submit.
- Error:
CART_EMPTY if cart is empty.
order.batchAddGoods
command: "order.batchAddGoods"
paramsJSON: { "list": "[{\"id\":\"1\",\"quantity\":2},{\"id\":\"2\",\"quantity\":1}]" }
- Success: payload includes
success and message (e.g. "已批量添加 2 项").
Error handling
- GOODS_NOT_FOUND: No menu item matched the given id or name. Suggest calling
order.getGoods to 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
list for 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).