Help us shape the future of Go! Take the 2026 Go Developer Survey

goflow

module
v0.302.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2026 License: AGPL-3.0, AGPL-3.0-or-later

README

Goflow

Build Status

Specification

See here for the complete specification docs.

Basic Usage

import (
    "github.com/nyaruka/goflow/assets/static"
    "github.com/nyaruka/goflow/flows"
    "github.com/nyaruka/goflow/flows/engine"
    "github.com/nyaruka/goflow/utils"
)

env := envs.NewBuilder().Build()
source, _ := static.LoadSource("myassets.json")
assets, _ := engine.NewSessionAssets(env, source, nil)
contact := flows.NewContact(assets, ...)
trigger := triggers.NewBuilder(env, flow.Reference()).Manual().Build()
eng := engine.NewBuilder().Build()
session, sprint, err := eng.NewSession(ctx, assets, contact, trigger, nil)

Sessions can be persisted between sprints by calling json.Marshal on the Session instance to marshal it as JSON.

Utilities

Flow Runner

Provides a command line interface for stepping through a given flow.

% go install github.com/nyaruka/goflow/cmd/flowrunner
% $GOPATH/bin/flowrunner test/testdata/runner/two_questions.json 615b8a0f-588c-4d20-a05f-363b0b4ce6f4
Starting flow 'U-Report Registration Flow'....
---------------------------------------
💬 "Hi Ben Haggerty! What is your favorite color? (red/blue) Your number is (206) 555-0100"
⏳ waiting for message....

By default it will use a manual trigger to create a session, but the -msg flag can be used to start the session with a message trigger:

% $GOPATH/bin/flowrunner -msg "hi there" cmd/flowrunner/testdata/two_questions.json 615b8a0f-588c-4d20-a05f-363b0b4ce6f4

If the -repro flag is set, it will dump the triggers and resumes it used which can be used to reproduce the session in a test:

% $GOPATH/bin/flowrunner -repro cmd/flowrunner/testdata/two_questions.json 615b8a0f-588c-4d20-a05f-363b0b4ce6f4

Flow Migrator

Takes a legacy flow definition as piped input and outputs the migrated definition:

% go install github.com/nyaruka/goflow/cmd/flowmigrate
% cat legacy_flow.json | $GOPATH/bin/flowmigrate
% cat legacy_export.json | jq '.flows[0]' | $GOPATH/bin/flowmigrate

Directories

Path Synopsis
static
Package static is an implementation of Source which loads assets from a static JSON file.
Package static is an implementation of Source which loads assets from a static JSON file.
cmd
docgen command
flowmigrate command
flowrunner command
es
parse
Package parse implements parsing of ContactQL queries using the ANTLR generated parser.
Package parse implements parsing of ContactQL queries using the ANTLR generated parser.
budget
Package budget provides a cost allowance for a single expression evaluation.
Package budget provides a cost allowance for a single expression evaluation.
services

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL