Skip to main content

Deny by default

The Code Step validator rejects any function or method call that is not on the allow-list below. Validation runs before execution, so disallowed calls never run. This page covers the Code Step inside a call script. The Code step in an automation pipeline is a separate sandbox with its own list of functions — see Steps.

Built-in Functions

print(...) writes a user-facing system note for Code Step diagnostics. It supports multiple values plus sep and end; multi-line output is split into separate system notes. range accepts range(stop), range(start, stop), and range(start, stop, step).

Allowed Methods

Most allowed methods are string methods. get is allow-listed for dictionary-style values, and append is allow-listed for list-building.

Flow Helpers

  • coalesce(value, default) — returns default when value is None or ""
  • is_empty(value) — true for None, "", [], or {}
  • is_not_empty(value) — the inverse of is_empty
  • map_value(key, mapping, default) — lowercases and strips string keys before lookup

Type Helpers

is_number returns true for int or float, but false for bool.

Object and Path Helpers

Prefer {{...}} placeholder syntax for normal variable access. Use these helpers when working with dynamic dictionaries inside the code.
  • commit_contact_timezone(iana, state, city) — validates an Australian IANA timezone, updates the current contact’s timezone and location, refreshes runtime calendar timezone state, and writes the canonical {{contact.*}} and {{timezone.*}} result variables. With no arguments it reads {{timezone.resolved_iana}}, {{timezone.resolved_state}}, and {{timezone.resolved_city}}.
  • commit_composite_outputs() — inside a sub-flow, commits declared parent composite output variables before the sub-flow returns, and returns the sorted output ids it mapped. Outside a composite context it returns an empty list.

Date Helpers

parse_datetime uses Python ISO parsing:
timezone_offset(iana, at) returns the UTC offset for an IANA timezone at a specific datetime. If at is omitted it uses the current datetime; if at has no offset it is treated as local wall time in the supplied timezone. Invalid input returns "".

Random Helpers

  • random_int(min_value, max_value) — an integer between the bounds, inclusive
  • random_choice(values) — one item from a non-empty list, or None when empty
  • random_shuffle(values) — a shuffled copy of the list; the original is not mutated

Voice Helper

Switches the voice the assistant speaks with, part-way through the call. Everything said after the Code Step uses the new voice. There is no pause and no reconnection — the change happens between one line and the next. voice_id is the identifier of a voice in the Voice Library. It is not the voice’s name.
  • Returns True when the voice was accepted, so you can branch on it.
  • Returns False when the value is not a valid voice identifier. The call keeps the voice it already had, and a note is recorded on the call so you can see it happened. It never stops the Code Step.
  • The switch is applied as soon as run() finishes, before the flow moves to the next step.
The Voice Library shows names, accents and samples rather than identifiers, so there is no screen for looking a voice identifier up — speak to the Voxworks team for further custom configuration.

Regex Helper

JSON Helpers

Parse a JSON string into Python data:
Serialize Python data into a JSON string:

Not Allowed

  • import or from ... import ...
  • Filesystem, network, shell, or subprocess access
  • Reflection and dynamic execution — eval, exec, compile, open, __import__
  • Dunder names or dunder attributes
  • Lambdas, nested functions, classes
  • Any unlisted function or method

Next Steps