Flow Runner implements the Flow Content Interop spec v1.0.0-rc2 as documented at https://floip.gitbook.io/flow-specification/. It provides the means to Run a flow defined in the specification and interact with some user.
This Flow Runnner only supports the TEXT, RICH_MESSAGING modes.
Layer | Block | Implemented? | Notes |
---|---|---|---|
1 | Core.Log | Yes | |
1 | Core.Case | Yes | |
1 | Core.RunFlow | Yes | |
1 | Core.SetContactProperty | Yes | |
1 | Core.SetGroupMembership | Yes | |
2 | ConsoleIO.Print | No | This is not useful for us. |
2 | ConsoleIO.Read | No | This is not useful for us. |
3 | MessagePrimitives.Message | Yes | |
3 | MessagePrimitives.SelectOneResponse | Yes | |
3 | MessagePrimitives.SelectManyResponses | No | WhatsApp does not support this. |
3 | MessagePrimitives.NumericResponse | Yes | |
3 | MessagePrimitives.OpenResponse | Yes | |
4 | SmartDevices.LocationResponse | No | TBD |
4 | SmartDevices.PhotoResponse | No | TBD |
-
FlowRunner.Compiler parses and compiles JSON flows according to the content spec into an internal representation that can be Run.
-
FlowRunner.Run takes a compiled flow, a state and a context and returns new state and user IO.
-
FlowRunner.Context is a struct that contains context for a run. It contains the channel, contact and .
If available in Hex, the package can be installed
by adding flow_runner
to your list of dependencies in mix.exs
:
def deps do
[
{:flow_runner, "~> 5.17.1"}
]
end
Use the Github UI to create a new release and publish it. Make sure to update the
mix.exs
and README.md
version references before publishing otherwise hex.pm
will complain and prevent you from publishing over an already existing released
version.
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/flow_runner.