MONITOR AND RESPOND

User questions, notifications and reply handling

Normal notices, large popups, Yes/No replies, timeouts and explicit workflow decisions.

Examples use remoteops.example.com and fictional systems. Adapt them to your tenant.

Screen reference#

Maintenance question on an example desktop
Maintenance question on an example desktop

The user sees Notification, the message, and separate Yes and No buttons. The workflow handles the actual response.

Large completion notice
Large completion notice

A large notification presents the result to the signed-in user without asking for a Yes/No response.

Front Door viewing question
Front Door viewing question

The message states the action the following step will perform. These are illustrative desktop layouts using fictional content.

Choose the right notification#

type User experience Reply and timing
normal Windows notification, subject to the user's notification settings No Yes/No reply; acceptance is not a read receipt
large Centred topmost window titled Notification Up to 15 seconds; recipient can dismiss it
yes_or_no Large window with Yes and No buttons Up to two minutes; returns yes, no, or null

Use the exact value yes_or_no, not yesno or yes/no. A notification needs a logged-in interactive Windows user. The task manages that session context; do not add ssh, inputs or runas to it.

Send a question#

yaml
- task: notification
  name: maintenance_question
  agent: 'ATLAS-DESK'
  type: yes_or_no
  message: |
    Approved updates are ready to install.
    Is now a good time to start maintenance?
  continue_on_error: false

The message is limited to 4,096 characters. Multiline messages are supported. A long large-window message uses a scrollable read-only body. Normal notifications follow Windows' presentation rules and may show less text.

The prompt has separate Yes and No buttons. An explicit Yes returns "yes"; an explicit No returns "no". Closing or expiring without a response returns JSON null. The helper binds Enter to Yes and Escape to No. Do not interpret displayed/accepted as consent.

Response contract#

json
{
  "displayed": true,
  "type": "yes_or_no",
  "response": "yes",
  "messageLength": 88
}

This is an illustrative shape; messageLength depends on the actual message. Use =maintenance_question.response in later steps. With continue_on_error: false, a launch failure prevents dependent steps from continuing. A null reply is a possible completed task outcome and still needs an explicit workflow decision.

Continue only after an explicit Yes#

This complete example asks permission before a software inventory scan. It does not install updates just because its message mentions maintenance.

yaml
- timeout: 300
- task: notification
  name: consent
  agent: 'ATLAS-DESK'
  type: yes_or_no
  message: 'May I collect the installed software inventory now?'
  continue_on_error: false
- task: inline_powershell
  name: decision
  inputs:
    answer: '=consent.response'
    script: |
      return @{ stop = ($answer -ne 'yes') }
- task: stop
  name: stop_without_consent
  condition: '=decision.stop'
- task: RemoteOpsSoftware
  name: scan_software
  agent: 'ATLAS-DESK'
  continue_on_error: false
  inputs:
    Operation: scan
    Scope: machine
- task: notification
  name: finished
  agent: 'ATLAS-DESK'
  type: large
  message: 'The software inventory scan has finished. Your workstation is ready to use.'

inline_powershell performs the response comparison on the Orchestrator. RemoteOpsSoftware performs the device operation on ATLAS-DESK. The stop task ends the package successfully when its condition is true. A stopped package is not evidence that the later operation ran: inspect its task trace.

Decision table#

Result Decision Later operation
yes Continue Eligible task is attempted
no Stop Not attempted
null Stop Not attempted
Notification launch error Fail prerequisite Not attempted

Build the message from earlier output#

yaml
- task: inline_powershell
  name: prepare_notice
  inputs:
    script: |
      return @{ message = 'Maintenance is complete. Your workstation is ready to use.' }
- task: notification
  name: show_notice
  agent: 'ATLAS-DESK'
  type: large
  message: '=prepare_notice.message'

Use a named task and supported output references rather than inserting unescaped JSON or assuming the notification expands arbitrary template syntax. group can disambiguate identical device names. Message, type and agent can use supported resolved output references, whose types are validated when the task is reached.

Doorbell questions and other uses#

Questions do not create a general approval system, record a signed agreement or authorise arbitrary later actions. Keep the prompt's wording specific to what the package actually does. See Camera streams, Notifications and Job History.

Diagnose a missing reply#

Check that the target is online with a logged-in interactive user. Check the exact type, task name, output reference, message size and package timeout. A package timeout shorter than the response window can interrupt the helper. No active interactive session produces a launch failure rather than an invisible approval. Re-sending a question can create another prompt, so inspect the previous job before retrying.

Product screenshot