Phone Panel Show
phone_panel_showDisplay a phone-page panel with text, media, buttons, and inputs to collect a decision or structured answer, optionally blocking until the response arrives.
Instructions
A panel over the phone page (the stage_panel_show shape): title, text, an image file, a video file, buttons (labels), and inputs for a fuller answer: [{'id', 'kind': 'choice' (one of options) | 'check' (any of options) | 'toggle' (on or off) | 'text', 'label', 'options', 'optional'}]. A choice must be picked before a button sends (unless 'optional': true). A tap arrives as kind 'answer' {id, answer, values: {input id: value}, for: sender}; Not now (on every panel) arrives as kind 'answer' with dismissed: true and answer null, which is not an answer. wait=N blocks up to N seconds for it. Every panel has a record button: what they say on it arrives as kind 'voice' and 'voice_text' with panel= and for=, so pass sender (your name) to get it back. video=: the person watches it playing inline in the panel, next to the panel's buttons, inputs and voice reply (the video pauses when they start to record), so they can watch and then ask questions about it. image=: a tap opens it full screen, where they can pinch to zoom and move around it. Any agent that controls the phone may use it. A phone-sized copy (H.264 + AAC MP4, at most 720 px tall) is made first, once per file and kept, inside the machine's cpu slot like any heavy job: video_wait is how long to stand in line for the machine ('10m'; '0' refuses at once when it is busy). It needs ffmpeg. priority: 'needs you' (sorts first, and the corner key takes the accent colour while it is open), 'normal' (the default) or 'low' (sorts last). link=: a big button in the panel that opens a page of this server in the same tab; it must start with one '/' (anything else is refused). The picture round is '/eye/?from=phone' (see exam_picture_round), with link_label naming the button. A panel never pops up: it shows as a message on the page's corner key (a short buzz), and the person opens it when they choose, switches between open messages, or puts one back with Later. Send one only for something to decide; say everything else in a caption. Refused: a title, text, button or input naming a place or personal detail from the local private terms (rephrase it), and a yes/no or approve/deny panel (its buttons, or a choice's options, are yes and no words) whose title or text a standing grant covers: act on the grant, then post a caption saying what you did. override_grant='' shows it anyway and logs the reason (phone.md).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | ||
| text | No | ||
| wait | No | ||
| image | No | ||
| title | No | ||
| video | No | ||
| inputs | No | ||
| sender | No | ||
| buttons | No | ||
| panel_id | No | ||
| priority | No | ||
| link_label | No | Open | |
| video_wait | No | 10m | |
| override_grant | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |