Text
A paragraph, title, subtitle, or status message.
SDK responses may contain more than plain text. A reply can include speech, display items, event metadata, or policy information.
Build clients so they can read the normalized response first, then inspect richer fields when the app needs them.
| Output | Use it for |
|---|---|
text |
The collected answer text, which can contain SSML. |
display_text |
Answer text with markup removed for visual display. |
display_items() |
Text, choices, tables, images, and attachments. |
events |
The collected events, including their name, data, and context. |
handled, ok, and failure_event |
Whether the request completed and any recorded runtime failure. |
These are Python names. Node uses displayText, displayItems(), and failureEvent; its events array exposes the same event concepts. There is no shared speech, raw_event, or policy_denied reply property. See the language’s SDK page for its exact API.
Use SDK constants when a language exposes them. The underlying event names stay stable across SDKs.
| Event | Meaning |
|---|---|
recognizer_loop:utterance |
A client sends a user utterance. |
speak |
The hub returns speech or reply text. |
ovos.intent.unmatched |
A request matched no skill (current OVOS name). |
complete_intent_failure |
A request matched no skill (legacy Mycroft name; still emitted by older runtimes). |
hive.policy.denied |
Access policy blocked the request. |
mycroft.skill.handler.start |
A skill handler started. |
mycroft.skill.handler.complete |
A skill handler finished. |
Display items let apps show structured results without reverse-engineering the text.
Text
A paragraph, title, subtitle, or status message.
Choice
A selectable option that can map back to send_action.
Table
Rows and columns for comparison, status, or inventory style output.
Image
A URL or attachment reference that the client can render.
from thalovant import ThalovantClient
with ThalovantClient.from_identity_file("_identity.json") as client: reply = client.ask("Show the next maintenance steps.")
print(reply.display_text)
for item in reply.display_items(): print(item.kind, item.text, item.data, item.url)For a choices item, item.data contains the choices. Each choice can carry a title and a string payload that the app passes to send_action. Render only the item kinds your app supports.
| Case | Recommended handling |
|---|---|
| Answer text is present | Show display_text in a visual client; handle text or utterances according to your voice renderer’s SSML support. |
display_items() returns items |
Render the items the client understands and ignore unknown kinds. |
A hive.policy.denied event arrives |
Show a safe denied message and keep the request ID for troubleshooting. |
| A request raises a runtime error | Handle it as a failed request; some failures are raised before a reply object exists. Intent inventory also has a typed policy error. |
| A reply has no useful output | Check handled, failure_event, and event names before presenting it as an answer. Redact event data before logging diagnostics. |
Last reviewed: September 9, 2026. Review this page when reply models, display item helpers, event names, or policy-error behavior changes.