Documentation ¶
Index ¶
- Constants
- Variables
- func ContactQueryEscaping(s string) string
- func Context(env envs.Environment, contextable Contextable) types.XValue
- func ContextFunc(env envs.Environment, fn func(envs.Environment) map[string]types.XValue) *types.XObject
- func NewAssetsEnvironment(e envs.Environment, la *LocationAssets) envs.Environment
- func NewSessionEnvironment(s Session) envs.Environment
- func ValidateURN(fl validator.FieldLevel) bool
- func ValidateURNScheme(fl validator.FieldLevel) bool
- type Action
- type ActionUUID
- type AirtimeService
- type AirtimeTransfer
- type AirtimeTransferStatus
- type AirtimeTransferUUID
- type BaseMsg
- func (m *BaseMsg) Attachments() []utils.Attachment
- func (m *BaseMsg) Channel() *assets.ChannelReference
- func (m *BaseMsg) ID() MsgID
- func (m *BaseMsg) SetID(id MsgID)
- func (m *BaseMsg) SetURN(urn urns.URN)
- func (m *BaseMsg) Text() string
- func (m *BaseMsg) URN() urns.URN
- func (m *BaseMsg) UUID() MsgUUID
- type BroadcastTranslations
- type Call
- type CallStatus
- type Category
- type CategoryUUID
- type Channel
- func (c *Channel) Asset() assets.Channel
- func (c *Channel) Context(env envs.Environment) map[string]types.XValue
- func (c *Channel) HasFeature(feat assets.ChannelFeature) bool
- func (c *Channel) HasRole(role assets.ChannelRole) bool
- func (c *Channel) Reference() *assets.ChannelReference
- func (c *Channel) String() string
- func (c *Channel) SupportsScheme(scheme string) bool
- type ChannelAssets
- type Classification
- type ClassificationService
- type Classifier
- type ClassifierAssets
- type Contact
- func NewContact(sa SessionAssets, uuid ContactUUID, id ContactID, name string, ...) (*Contact, error)
- func NewEmptyContact(sa SessionAssets, name string, language i18n.Language, timezone *time.Location) *Contact
- func ReadContact(sa SessionAssets, data json.RawMessage, missing assets.MissingCallback) (*Contact, error)
- func (c *Contact) AddURN(urn urns.URN, channel *Channel) bool
- func (c *Contact) ClearURNs() bool
- func (c *Contact) Clone() *Contact
- func (c *Contact) Context(env envs.Environment) map[string]types.XValue
- func (c *Contact) Country() i18n.Country
- func (c *Contact) CreatedOn() time.Time
- func (c *Contact) Equal(other *Contact) bool
- func (c *Contact) Fields() FieldValues
- func (c *Contact) Format(env envs.Environment) string
- func (c *Contact) Groups() *GroupList
- func (c *Contact) HasURN(urn urns.URN) bool
- func (c *Contact) ID() ContactID
- func (c *Contact) Language() i18n.Language
- func (c *Contact) LastSeenOn() *time.Time
- func (c *Contact) Locale(env envs.Environment) i18n.Locale
- func (c *Contact) MarshalJSON() ([]byte, error)
- func (c *Contact) Name() string
- func (c *Contact) PreferredChannel() *Channel
- func (c *Contact) PreferredURN() *ContactURN
- func (c *Contact) QueryProperty(env envs.Environment, key string, propType contactql.PropertyType) []any
- func (c *Contact) ReevaluateQueryBasedGroups(env envs.Environment) ([]*Group, []*Group)
- func (c *Contact) Reference() *ContactReference
- func (c *Contact) RemoveURN(urn urns.URN) bool
- func (c *Contact) ResolveDestinations(all bool) []Destination
- func (c *Contact) SetLanguage(lang i18n.Language)
- func (c *Contact) SetLastSeenOn(t time.Time)
- func (c *Contact) SetName(name string)
- func (c *Contact) SetStatus(status ContactStatus)
- func (c *Contact) SetTicket(t *Ticket)
- func (c *Contact) SetTimezone(tz *time.Location)
- func (c *Contact) Status() ContactStatus
- func (c *Contact) Ticket() *Ticket
- func (c *Contact) Timezone() *time.Location
- func (c *Contact) URNs() URNList
- func (c *Contact) UUID() ContactUUID
- func (c *Contact) UpdatePreferredChannel(channel *Channel) bool
- type ContactID
- type ContactReference
- type ContactStatus
- type ContactURN
- type ContactUUID
- type Contextable
- type Dependency
- type Destination
- type Dial
- type DialStatus
- type EmailService
- type Engine
- type EngineOptions
- type Event
- type EventCallback
- type Exit
- type ExitUUID
- type ExtractedEntity
- type ExtractedIntent
- type ExtractedReference
- type ExtractedResult
- type ExtractedTemplate
- type Field
- type FieldAssets
- func (s *FieldAssets) All() []*Field
- func (s *FieldAssets) FirstOfType(valueType assets.FieldType) *Field
- func (s *FieldAssets) Get(key string) *Field
- func (s *FieldAssets) ResolveField(key string) assets.Field
- func (s *FieldAssets) ResolveFlow(name string) assets.Flow
- func (s *FieldAssets) ResolveGroup(name string) assets.Group
- type FieldValue
- type FieldValues
- type Flow
- type FlowAssets
- type FlowType
- type FlowTypeRestricted
- type Global
- type GlobalAssets
- type Group
- type GroupAssets
- type GroupList
- func (l *GroupList) Add(group *Group) bool
- func (l *GroupList) All() []*Group
- func (l *GroupList) Clear()
- func (l *GroupList) Count() int
- func (l *GroupList) FindByUUID(uuid assets.GroupUUID) *Group
- func (l *GroupList) Remove(group *Group) bool
- func (l GroupList) ToXValue(env envs.Environment) types.XValue
- type HTTPLog
- type HTTPLogCallback
- type HTTPLogStatusResolver
- type HTTPLogWithoutTime
- type HTTPLogger
- type Hint
- type Input
- type InputUUID
- type Inspection
- type Issue
- type Label
- type LabelAssets
- type LegacyExtraContributor
- type Localizable
- type Localization
- type LocationAssets
- type Modifier
- type ModifierCallback
- type MsgContent
- type MsgID
- type MsgIn
- type MsgOut
- type MsgTemplating
- type MsgTopic
- type MsgUUID
- type Node
- type NodeUUID
- type OptIn
- type OptInAssets
- type Resthook
- type ResthookAssets
- type Result
- type ResultInfo
- type ResultSpec
- type Results
- type Resume
- type Router
- type Run
- type RunStatus
- type RunSummary
- type RunUUID
- type Segment
- type Services
- type Session
- type SessionAssets
- type SessionHistory
- type SessionStatus
- type SessionUUID
- type Sprint
- type Step
- type StepUUID
- type Template
- type TemplateAssets
- type TemplateEnumerator
- type TemplateTranslation
- type TemplatingComponent
- type TemplatingVariable
- type Ticket
- type TicketService
- type TicketUUID
- type Timeout
- type Topic
- type TopicAssets
- type Trigger
- type TriggerWithRun
- type URNList
- type UnsendableReason
- type User
- type UserAssets
- type Value
- type Wait
- type WebhookCall
- type WebhookService
Constants ¶
const ( LocationLevelState = envs.LocationLevel(1) LocationLevelDistrict = envs.LocationLevel(2) LocationLevelWard = envs.LocationLevel(3) )
location levels which can be field types
const NilMsgID = MsgID(0)
NilMsgID is our constant for nil message ids
const RedactionMask = "****************"
RedactionMask is the redaction mask for HTTP service logs
Variables ¶
var EmptyHistory = &SessionHistory{}
EmptyHistory is used for a session which has no history
var RunContextTopLevels = []string{
"child",
"contact",
"fields",
"globals",
"input",
"legacy_extra",
"node",
"parent",
"results",
"resume",
"run",
"ticket",
"trigger",
"urns",
"webhook",
}
RunContextTopLevels are the allowed top-level variables for expression evaluations
Functions ¶
func ContactQueryEscaping ¶ added in v0.55.0
ContactQueryEscaping is the escaping function used for expressions in contact queries
func Context ¶
func Context(env envs.Environment, contextable Contextable) types.XValue
Context generates a lazy object for use in expressions
func ContextFunc ¶ added in v0.33.8
func ContextFunc(env envs.Environment, fn func(envs.Environment) map[string]types.XValue) *types.XObject
ContextFunc generates a lazy object for use in expressions
func NewAssetsEnvironment ¶ added in v0.190.1
func NewAssetsEnvironment(e envs.Environment, la *LocationAssets) envs.Environment
NewAssetsEnvironment creates a new environment from a base environment and adds support for location resolving using location assets.
func NewSessionEnvironment ¶ added in v0.190.1
func NewSessionEnvironment(s Session) envs.Environment
NewSessionEnvironment creates a new environment from a session's base environment that merges some properties with those from the contact.
func ValidateURN ¶ added in v0.4.0
func ValidateURN(fl validator.FieldLevel) bool
ValidateURN validates whether the field value is a valid URN
func ValidateURNScheme ¶ added in v0.4.0
func ValidateURNScheme(fl validator.FieldLevel) bool
ValidateURNScheme validates whether the field value is a valid URN scheme
Types ¶
type Action ¶
type Action interface { utils.Typed Localizable FlowTypeRestricted UUID() ActionUUID Execute(Run, Step, ModifierCallback, EventCallback) error Validate() error }
Action is an action within a flow node
type AirtimeService ¶ added in v0.48.0
type AirtimeService interface { // Transfer transfers airtime to the given URN Transfer(sender urns.URN, recipient urns.URN, amounts map[string]decimal.Decimal, logHTTP HTTPLogCallback) (*AirtimeTransfer, error) }
AirtimeService provides airtime functionality to the engine
type AirtimeTransfer ¶ added in v0.48.0
type AirtimeTransfer struct { UUID AirtimeTransferUUID ExternalID string Sender urns.URN Recipient urns.URN Currency string Amount decimal.Decimal }
AirtimeTransfer is the result of an attempted airtime transfer
type AirtimeTransferStatus ¶ added in v0.48.0
type AirtimeTransferStatus string
AirtimeTransferStatus is a status of a airtime transfer
const ( AirtimeTransferStatusSuccess AirtimeTransferStatus = "success" AirtimeTransferStatusFailed AirtimeTransferStatus = "failed" )
possible values for airtime transfer statuses
type AirtimeTransferUUID ¶ added in v0.216.1
AirtimeTransferUUID is the UUID of a airtime transfer
type BaseMsg ¶ added in v0.6.0
type BaseMsg struct { UUID_ MsgUUID `json:"uuid"` ID_ MsgID `json:"id,omitempty"` URN_ urns.URN `json:"urn,omitempty" validate:"omitempty,urn"` Channel_ *assets.ChannelReference `json:"channel,omitempty"` Text_ string `json:"text"` Attachments_ []utils.Attachment `json:"attachments,omitempty"` }
BaseMsg represents a incoming or outgoing message with the session contact
func (*BaseMsg) Attachments ¶ added in v0.6.0
func (m *BaseMsg) Attachments() []utils.Attachment
Attachments returns the attachments of this message
func (*BaseMsg) Channel ¶ added in v0.6.0
func (m *BaseMsg) Channel() *assets.ChannelReference
Channel returns the channel of this message
type BroadcastTranslations ¶ added in v0.184.0
type BroadcastTranslations map[i18n.Language]*MsgContent
func (BroadcastTranslations) ForContact ¶ added in v0.184.0
func (b BroadcastTranslations) ForContact(e envs.Environment, c *Contact, baseLanguage i18n.Language) (*MsgContent, i18n.Locale)
ForContact is a utility to help callers get the message content for a contact
type Call ¶ added in v0.171.0
type Call struct {
// contains filtered or unexported fields
}
Call represents a call over a specific channel and URN
func NewCall ¶ added in v0.171.0
func NewCall(channel *assets.ChannelReference, urn urns.URN) *Call
NewCall creates a new call
func (*Call) Channel ¶ added in v0.171.0
func (c *Call) Channel() *assets.ChannelReference
Channel returns a reference to the channel
func (*Call) MarshalJSON ¶ added in v0.171.0
MarshalJSON marshals this call into JSON
func (*Call) UnmarshalJSON ¶ added in v0.171.0
UnmarshalJSON unmarshals a call from JSON
type CallStatus ¶ added in v0.51.0
type CallStatus string
CallStatus represents the status of a call to an external service
const ( // CallStatusSuccess represents that the webhook was successful CallStatusSuccess CallStatus = "success" // CallStatusConnectionError represents that the webhook had a connection error CallStatusConnectionError CallStatus = "connection_error" // CallStatusResponseError represents that the webhook response had a non 2xx status code CallStatusResponseError CallStatus = "response_error" // CallStatusSubscriberGone represents a special state of resthook responses which indicate the caller must remove that subscriber CallStatusSubscriberGone CallStatus = "subscriber_gone" )
func HTTPStatusFromCode ¶ added in v0.53.0
func HTTPStatusFromCode(t *httpx.Trace) CallStatus
HTTPStatusFromCode uses the status code to determine status of an HTTP log
type Category ¶ added in v0.79.0
type Category interface { Localizable UUID() CategoryUUID Name() string ExitUUID() ExitUUID }
Category is how routers map results to exits
type CategoryUUID ¶ added in v0.30.2
CategoryUUID is the UUID of a node category
type Channel ¶
Channel represents a means for sending and receiving input during a flow run
func NewChannel ¶ added in v0.6.0
NewChannel creates a new channenl
func (*Channel) Context ¶ added in v0.33.8
Context returns the properties available in expressions
__default__:text -> the name uuid:text -> the UUID of the channel name:text -> the name of the channel address:text -> the address of the channel
@context channel
func (*Channel) HasFeature ¶ added in v0.195.0
func (c *Channel) HasFeature(feat assets.ChannelFeature) bool
HasFeature returns whether this channel has the given feature
func (*Channel) HasRole ¶ added in v0.6.0
func (c *Channel) HasRole(role assets.ChannelRole) bool
HasRole returns whether this channel has the given role
func (*Channel) Reference ¶ added in v0.5.0
func (c *Channel) Reference() *assets.ChannelReference
Reference returns a reference to this channel
func (*Channel) SupportsScheme ¶ added in v0.6.0
SupportsScheme returns whether this channel supports the given URN scheme
type ChannelAssets ¶ added in v0.15.0
type ChannelAssets struct {
// contains filtered or unexported fields
}
ChannelAssets provides access to all channel assets
func NewChannelAssets ¶ added in v0.15.0
func NewChannelAssets(channels []assets.Channel) *ChannelAssets
NewChannelAssets creates a new set of channel assets
func (*ChannelAssets) Get ¶ added in v0.15.0
func (s *ChannelAssets) Get(uuid assets.ChannelUUID) *Channel
Get returns the channel with the given UUID
func (*ChannelAssets) GetForURN ¶ added in v0.15.0
func (s *ChannelAssets) GetForURN(urn *ContactURN, role assets.ChannelRole) *Channel
GetForURN returns the best channel for the given URN
type Classification ¶ added in v0.51.0
type Classification struct { Intents []ExtractedIntent `json:"intents,omitempty"` Entities map[string][]ExtractedEntity `json:"entities,omitempty"` }
Classification is the result of an NLU classification
type ClassificationService ¶ added in v0.51.0
type ClassificationService interface {
Classify(env envs.Environment, input string, logHTTP HTTPLogCallback) (*Classification, error)
}
ClassificationService provides NLU functionality to the engine
type Classifier ¶ added in v0.51.0
type Classifier struct {
assets.Classifier
}
Classifier represents an NLU classifier.
func NewClassifier ¶ added in v0.51.0
func NewClassifier(asset assets.Classifier) *Classifier
NewClassifier returns a new classifier object from the given classifier asset
func (*Classifier) Asset ¶ added in v0.51.0
func (c *Classifier) Asset() assets.Classifier
Asset returns the underlying asset
func (*Classifier) Reference ¶ added in v0.51.0
func (c *Classifier) Reference() *assets.ClassifierReference
Reference returns a reference to this classifier
type ClassifierAssets ¶ added in v0.51.0
type ClassifierAssets struct {
// contains filtered or unexported fields
}
ClassifierAssets provides access to all classifier assets
func NewClassifierAssets ¶ added in v0.51.0
func NewClassifierAssets(classifiers []assets.Classifier) *ClassifierAssets
NewClassifierAssets creates a new set of classifier assets
func (*ClassifierAssets) Get ¶ added in v0.51.0
func (s *ClassifierAssets) Get(uuid assets.ClassifierUUID) *Classifier
Get returns the classifier with the given UUID
type Contact ¶
type Contact struct {
// contains filtered or unexported fields
}
Contact represents a person who is interacting with the flow
func NewContact ¶ added in v0.5.1
func NewContact( sa SessionAssets, uuid ContactUUID, id ContactID, name string, language i18n.Language, status ContactStatus, timezone *time.Location, createdOn time.Time, lastSeenOn *time.Time, urns []urns.URN, groups []*assets.GroupReference, fields map[string]*Value, ticket *Ticket, missing assets.MissingCallback) (*Contact, error)
NewContact creates a new contact with the passed in attributes
func NewEmptyContact ¶ added in v0.14.7
func NewEmptyContact(sa SessionAssets, name string, language i18n.Language, timezone *time.Location) *Contact
NewEmptyContact creates a new empy contact with the passed in name, language and location
func ReadContact ¶
func ReadContact(sa SessionAssets, data json.RawMessage, missing assets.MissingCallback) (*Contact, error)
ReadContact decodes a contact from the passed in JSON
func (*Contact) Context ¶ added in v0.33.8
Context returns the properties available in expressions
__default__:text -> the name or URN uuid:text -> the UUID of the contact id:text -> the numeric ID of the contact first_name:text -> the first name of the contact name:text -> the name of the contact language:text -> the language of the contact as 3-letter ISO code status:text -> the status of the contact created_on:datetime -> the creation date of the contact last_seen_on:any -> the last seen date of the contact urns:[]text -> the URNs belonging to the contact urn:text -> the preferred URN of the contact groups:[]group -> the groups the contact belongs to fields:fields -> the custom field values of the contact channel:channel -> the preferred channel of the contact
@context contact
func (*Contact) Country ¶ added in v0.89.0
Country gets the country for this contact..
TODO: currently this is derived from their preferred channel or any tel URNs but probably should become an explicit field at some point
func (*Contact) Equal ¶ added in v0.20.0
Equal returns true if this instance is equal to the given instance
func (*Contact) Fields ¶
func (c *Contact) Fields() FieldValues
Fields returns this contact's field values
func (*Contact) Format ¶ added in v0.10.18
func (c *Contact) Format(env envs.Environment) string
Format returns a friendly string version of this contact depending on what fields are set
func (*Contact) LastSeenOn ¶ added in v0.100.0
LastSeenOn returns the last seen on time of this contact
func (*Contact) Locale ¶ added in v0.89.0
func (c *Contact) Locale(env envs.Environment) i18n.Locale
Locale gets the locale for this contact, using the environment country if contact doesn't have one
func (*Contact) MarshalJSON ¶
MarshalJSON marshals this contact into JSON
func (*Contact) PreferredChannel ¶ added in v0.11.0
PreferredChannel gets the preferred channel for this contact, i.e. the channel we would use for sending
func (*Contact) PreferredURN ¶ added in v0.27.5
func (c *Contact) PreferredURN() *ContactURN
PreferredURN gets the preferred URN for this contact, i.e. the URN we would use for sending
func (*Contact) QueryProperty ¶ added in v0.45.1
func (c *Contact) QueryProperty(env envs.Environment, key string, propType contactql.PropertyType) []any
QueryProperty resolves a contact query search key for this contact
Note that this method excludes id, group and flow search attributes as those are disallowed query based groups.
func (*Contact) ReevaluateQueryBasedGroups ¶ added in v0.103.0
func (c *Contact) ReevaluateQueryBasedGroups(env envs.Environment) ([]*Group, []*Group)
ReevaluateQueryBasedGroups reevaluates membership of all query based groups for this contact
func (*Contact) Reference ¶ added in v0.4.0
func (c *Contact) Reference() *ContactReference
Reference returns a reference to this contact
func (*Contact) ResolveDestinations ¶ added in v0.27.5
func (c *Contact) ResolveDestinations(all bool) []Destination
ResolveDestinations resolves possible URN/channel destinations
func (*Contact) SetLanguage ¶
SetLanguage sets the language for this contact
func (*Contact) SetLastSeenOn ¶ added in v0.100.0
SetLastSeenOn sets the last seen on time of this contact
func (*Contact) SetStatus ¶ added in v0.84.0
func (c *Contact) SetStatus(status ContactStatus)
SetStatus sets the status of this contact (blocked, stopped or active)
func (*Contact) SetTimezone ¶
SetTimezone sets the timezone of this contact
func (*Contact) Status ¶ added in v0.84.0
func (c *Contact) Status() ContactStatus
Status returns the contact status
func (*Contact) Ticket ¶ added in v0.185.0
Tickets returns the open ticket for this contact if they have one
func (*Contact) UpdatePreferredChannel ¶ added in v0.6.0
UpdatePreferredChannel updates the preferred channel and returns whether any change was made
type ContactReference ¶
type ContactReference struct { UUID ContactUUID `json:"uuid" validate:"required,uuid4"` Name string `json:"name"` }
ContactReference is used to reference a contact
func NewContactReference ¶ added in v0.4.0
func NewContactReference(uuid ContactUUID, name string) *ContactReference
NewContactReference creates a new contact reference with the given UUID and name
func (*ContactReference) Identity ¶ added in v0.29.0
func (r *ContactReference) Identity() string
Identity returns the unique identity of the asset
func (*ContactReference) String ¶ added in v0.29.0
func (r *ContactReference) String() string
func (*ContactReference) Type ¶ added in v0.29.0
func (r *ContactReference) Type() string
Type returns the name of the asset type
func (*ContactReference) Variable ¶ added in v0.29.0
func (r *ContactReference) Variable() bool
Variable returns whether this a variable (vs concrete) reference
type ContactStatus ¶ added in v0.84.0
type ContactStatus string
ContactStatus is status in which a contact is in
const ( // ContactStatusActive is the contact status of active ContactStatusActive ContactStatus = "active" // ContactStatusBlocked is the contact status of blocked ContactStatusBlocked ContactStatus = "blocked" // ContactStatusStopped is the contact status of stopped ContactStatusStopped ContactStatus = "stopped" // ContactStatusArchived is the contact status of archived ContactStatusArchived ContactStatus = "archived" )
type ContactURN ¶ added in v0.6.0
type ContactURN struct {
// contains filtered or unexported fields
}
ContactURN represents a destination for an outgoing message or a source of an incoming message. It is string composed of 3 components: scheme, path, and display (optional). For example:
- _tel:+16303524567_
- _twitterid:54784326227#nyaruka_
- _telegram:34642632786#bobby_
func NewContactURN ¶ added in v0.6.0
func NewContactURN(urn urns.URN, channel *Channel) *ContactURN
NewContactURN creates a new contact URN with associated channel
func ParseRawURN ¶ added in v0.23.0
func ParseRawURN(ca *ChannelAssets, rawURN urns.URN, missing assets.MissingCallback) (*ContactURN, error)
ParseRawURN converts a raw URN to a ContactURN by extracting it's channel reference
func (*ContactURN) Channel ¶ added in v0.6.0
func (u *ContactURN) Channel() *Channel
Channel gets the channel associated with this URN
func (*ContactURN) Equal ¶ added in v0.23.0
func (u *ContactURN) Equal(other *ContactURN) bool
Equal determines if this URN is equal to another
func (*ContactURN) SetChannel ¶ added in v0.6.0
func (u *ContactURN) SetChannel(channel *Channel)
SetChannel sets the channel associated with this URN
func (*ContactURN) String ¶ added in v0.6.0
func (u *ContactURN) String() string
func (*ContactURN) ToXValue ¶ added in v0.32.0
func (u *ContactURN) ToXValue(env envs.Environment) types.XValue
ToXValue returns a representation of this object for use in expressions
func (*ContactURN) URN ¶ added in v0.23.0
func (u *ContactURN) URN() urns.URN
URN gets the underlying URN
type Contextable ¶ added in v0.33.8
type Contextable interface {
Context(env envs.Environment) map[string]types.XValue
}
Contextable is an object that can accessed in expressions as a object with properties
type Dependency ¶ added in v0.68.0
type Destination ¶ added in v0.27.5
type Destination struct { Channel *Channel URN *ContactURN }
Destination is a sendable channel and URN pair
type Dial ¶ added in v0.112.0
type Dial struct { Status DialStatus `json:"status" validate:"required,dial_status"` Duration int `json:"duration"` }
Dial represents a dialed call or attempt to dial a phone number
func NewDial ¶ added in v0.112.0
func NewDial(status DialStatus, duration int) *Dial
NewDial creates a new dial
type DialStatus ¶ added in v0.112.0
type DialStatus string
DialStatus is the type for different dial statuses
const ( DialStatusAnswered DialStatus = "answered" DialStatusNoAnswer DialStatus = "no_answer" DialStatusBusy DialStatus = "busy" DialStatusFailed DialStatus = "failed" )
possible dial status values
type EmailService ¶ added in v0.61.0
EmailService provides email functionality to the engine
type Engine ¶ added in v0.27.4
type Engine interface { NewSession(SessionAssets, Trigger) (Session, Sprint, error) ReadSession(SessionAssets, json.RawMessage, assets.MissingCallback) (Session, error) Evaluator() *excellent.Evaluator Services() Services Options() *EngineOptions }
Engine provides callers with session starting and resuming
type EngineOptions ¶ added in v0.190.0
type Event ¶
type Event interface { utils.Typed CreatedOn() time.Time StepUUID() StepUUID SetStepUUID(StepUUID) }
Event describes a state change
type EventCallback ¶ added in v0.26.0
type EventCallback func(Event)
EventCallback is a callback invoked when an event has been generated
type ExtractedEntity ¶ added in v0.51.0
type ExtractedEntity struct { Value string `json:"value"` Confidence decimal.Decimal `json:"confidence"` }
ExtractedEntity models an entity match
type ExtractedIntent ¶ added in v0.51.0
type ExtractedIntent struct { Name string `json:"name"` Confidence decimal.Decimal `json:"confidence"` }
ExtractedIntent models an intent match
type ExtractedReference ¶ added in v0.71.2
type ExtractedReference struct { Reference assets.Reference // contains filtered or unexported fields }
ExtractedReference is a reference and its location in a flow
func NewExtractedReference ¶ added in v0.74.0
func NewExtractedReference(n Node, a Action, r Router, l i18n.Language, ref assets.Reference) ExtractedReference
NewExtractedReference creates a new extracted reference
type ExtractedResult ¶ added in v0.71.3
type ExtractedResult struct { Node Node Action Action Router Router Info *ResultInfo }
type ExtractedTemplate ¶ added in v0.74.0
type ExtractedTemplate struct { Template string // contains filtered or unexported fields }
ExtractedTemplate is a template and its location in a flow
func NewExtractedTemplate ¶ added in v0.74.0
NewExtractedTemplate creates a new extracted template
type Field ¶
Field represents a contact field
func (*Field) Reference ¶ added in v0.24.0
func (f *Field) Reference() *assets.FieldReference
Reference returns a reference to this field
type FieldAssets ¶ added in v0.15.0
type FieldAssets struct {
// contains filtered or unexported fields
}
FieldAssets provides access to all field assets
func NewFieldAssets ¶ added in v0.15.0
func NewFieldAssets(fields []assets.Field) *FieldAssets
NewFieldAssets creates a new set of field assets
func (*FieldAssets) All ¶ added in v0.15.0
func (s *FieldAssets) All() []*Field
All returns all the fields in this set
func (*FieldAssets) FirstOfType ¶ added in v0.15.0
func (s *FieldAssets) FirstOfType(valueType assets.FieldType) *Field
FirstOfType returns the first field in this set with the given value type
func (*FieldAssets) Get ¶ added in v0.15.0
func (s *FieldAssets) Get(key string) *Field
Get returns the contact field with the given key
func (*FieldAssets) ResolveField ¶ added in v0.78.0
func (s *FieldAssets) ResolveField(key string) assets.Field
func (*FieldAssets) ResolveFlow ¶ added in v0.151.0
func (s *FieldAssets) ResolveFlow(name string) assets.Flow
func (*FieldAssets) ResolveGroup ¶ added in v0.78.0
func (s *FieldAssets) ResolveGroup(name string) assets.Group
type FieldValue ¶ added in v0.4.0
type FieldValue struct { *Value // contains filtered or unexported fields }
FieldValue represents a field and a set of values for that field
func NewFieldValue ¶ added in v0.4.0
func NewFieldValue(field *Field, value *Value) *FieldValue
NewFieldValue creates a new field value
func (*FieldValue) QueryValue ¶ added in v0.32.0
func (v *FieldValue) QueryValue() any
QueryValue returns the value for use in contact queries
func (*FieldValue) ToXValue ¶ added in v0.32.0
func (v *FieldValue) ToXValue(env envs.Environment) types.XValue
ToXValue returns a representation of this object for use in expressions
type FieldValues ¶ added in v0.4.0
type FieldValues map[string]*FieldValue
FieldValues is the set of all field values for a contact
func NewFieldValues ¶ added in v0.15.2
func NewFieldValues(a SessionAssets, values map[string]*Value, missing assets.MissingCallback) FieldValues
NewFieldValues creates a new field value map
func (FieldValues) Context ¶ added in v0.30.4
func (f FieldValues) Context(env envs.Environment) map[string]types.XValue
Context returns the properties available in expressions
func (FieldValues) Get ¶ added in v0.19.2
func (f FieldValues) Get(field *Field) *Value
Get gets the value set for the given field
func (FieldValues) Parse ¶ added in v0.24.0
func (f FieldValues) Parse(env envs.Environment, fields *FieldAssets, field *Field, rawValue string) *Value
Parse parses a raw string field value into the different possible types
func (FieldValues) Set ¶ added in v0.19.2
func (f FieldValues) Set(field *Field, value *Value)
Set sets the value for the given field (can be null to clear it)
type Flow ¶
type Flow interface { Contextable // spec properties UUID() assets.FlowUUID Name() string Revision() int Language() i18n.Language Type() FlowType ExpireAfterMinutes() int Localization() Localization UI() json.RawMessage Nodes() []Node GetNode(uuid NodeUUID) Node Asset() assets.Flow Reference(bool) *assets.FlowReference Inspect(sa SessionAssets) *Inspection ExtractTemplates() []string ExtractLocalizables() []string ChangeLanguage(i18n.Language) (Flow, error) }
Flow describes the ordered logic of actions and routers
type FlowAssets ¶ added in v0.15.0
FlowAssets provides access to flow assets
type FlowType ¶ added in v0.14.0
type FlowType string
FlowType represents the different types of flows
const ( // FlowTypeMessaging is a flow that is run over a messaging channel FlowTypeMessaging FlowType = "messaging" // FlowTypeMessagingBackground is a non-interactive messaging flow (i.e. never waits for input) FlowTypeMessagingBackground FlowType = "messaging_background" // FlowTypeMessagingOffline is a flow which is run over an offline messaging client like Surveyor FlowTypeMessagingOffline FlowType = "messaging_offline" // FlowTypeVoice is a flow which is run over IVR FlowTypeVoice FlowType = "voice" )
func (FlowType) Allows ¶ added in v0.107.0
func (t FlowType) Allows(r FlowTypeRestricted) bool
Allows returns whether this flow type allows the given item
type FlowTypeRestricted ¶ added in v0.107.0
type FlowTypeRestricted interface {
AllowedFlowTypes() []FlowType
}
FlowTypeRestricted is a part of a flow which can be restricted to certain flow types
type Global ¶ added in v0.57.0
Global represents a constant value available in expressions.
func (*Global) Reference ¶ added in v0.57.0
func (g *Global) Reference() *assets.GlobalReference
Reference returns a reference to this global
type GlobalAssets ¶ added in v0.57.0
type GlobalAssets struct {
// contains filtered or unexported fields
}
GlobalAssets provides access to all global assets
func NewGlobalAssets ¶ added in v0.57.0
func NewGlobalAssets(globals []assets.Global) *GlobalAssets
NewGlobalAssets creates a new set of global assets
func (*GlobalAssets) Context ¶ added in v0.57.0
func (s *GlobalAssets) Context(env envs.Environment) map[string]types.XValue
Context returns the properties available in expressions
func (*GlobalAssets) Get ¶ added in v0.57.0
func (s *GlobalAssets) Get(key string) *Global
Get returns the global with the given key
type Group ¶
Group adds some functionality to group assets.
func NewGroup ¶
func NewGroup(env envs.Environment, fields *FieldAssets, asset assets.Group) (*Group, error)
NewGroup returns a new group object from the given group asset
func (*Group) CheckQueryBasedMembership ¶ added in v0.103.0
func (g *Group) CheckQueryBasedMembership(env envs.Environment, contact *Contact) bool
CheckQueryBasedMembership returns whether the given contact belongs in a query based group
func (*Group) Reference ¶ added in v0.4.0
func (g *Group) Reference() *assets.GroupReference
Reference returns a reference to this group
type GroupAssets ¶ added in v0.15.0
type GroupAssets struct {
// contains filtered or unexported fields
}
GroupAssets provides access to all group assets
func NewGroupAssets ¶ added in v0.15.0
func NewGroupAssets(env envs.Environment, fields *FieldAssets, groups []assets.Group) (*GroupAssets, []assets.Group)
NewGroupAssets creates a new set of group assets
func (*GroupAssets) All ¶ added in v0.15.0
func (s *GroupAssets) All() []*Group
All returns all the groups
func (*GroupAssets) FindByName ¶ added in v0.15.0
func (s *GroupAssets) FindByName(name string) *Group
FindByName looks for a group with the given name (case-insensitive)
type GroupList ¶
type GroupList struct {
// contains filtered or unexported fields
}
GroupList defines a contact's list of groups
func NewGroupList ¶ added in v0.4.0
func NewGroupList(a SessionAssets, refs []*assets.GroupReference, missing assets.MissingCallback) *GroupList
NewGroupList creates a new group list
func (*GroupList) Clear ¶ added in v0.150.1
func (l *GroupList) Clear()
Clear clears this group list
func (*GroupList) FindByUUID ¶ added in v0.4.0
FindByUUID returns the group with the passed in UUID or nil if not found
type HTTPLog ¶ added in v0.53.0
type HTTPLog struct { *HTTPLogWithoutTime CreatedOn time.Time `json:"created_on" validate:"required"` }
HTTPLog describes an HTTP request/response
func NewHTTPLog ¶ added in v0.53.0
func NewHTTPLog(trace *httpx.Trace, statusFn HTTPLogStatusResolver, redact stringsx.Redactor) *HTTPLog
NewHTTPLog creates a new HTTP log from a trace
type HTTPLogCallback ¶ added in v0.53.0
type HTTPLogCallback func(*HTTPLog)
HTTPLogCallback is a function that handles an HTTP log
type HTTPLogStatusResolver ¶ added in v0.136.0
type HTTPLogStatusResolver func(t *httpx.Trace) CallStatus
HTTPLogStatusResolver is a function that determines the status of an HTTP log from the response
type HTTPLogWithoutTime ¶ added in v0.168.0
type HTTPLogWithoutTime struct { *httpx.LogWithoutTime Status CallStatus `json:"status" validate:"required"` }
HTTPLogWithoutTime is an HTTP log no time and status added - used for webhook events which already encode the time
func NewHTTPLogWithoutTime ¶ added in v0.168.0
func NewHTTPLogWithoutTime(trace *httpx.Trace, status CallStatus, redact stringsx.Redactor) *HTTPLogWithoutTime
NewHTTPLogWithoutTime creates a new HTTP log from a trace
type HTTPLogger ¶ added in v0.53.0
type HTTPLogger struct {
Logs []*HTTPLog
}
HTTPLogger logs HTTP logs
func (*HTTPLogger) Log ¶ added in v0.53.0
func (l *HTTPLogger) Log(h *HTTPLog)
Log logs the given HTTP log
type Input ¶
type Input interface { utils.Typed Contextable UUID() InputUUID CreatedOn() time.Time Channel() *Channel }
Input describes input from the contact and currently we only support one type of input: `msg`
type Inspection ¶ added in v0.74.0
type Inspection struct { Dependencies []Dependency `json:"dependencies"` Issues []Issue `json:"issues"` Results []*ResultSpec `json:"results"` WaitingExits []ExitUUID `json:"waiting_exits"` ParentRefs []string `json:"parent_refs"` }
Inspection contains the results of flow inspection
type Issue ¶ added in v0.72.0
type Issue interface { utils.Typed NodeUUID() NodeUUID ActionUUID() ActionUUID Language() i18n.Language Description() string }
Issue is a problem found during flow inspection
type Label ¶
Label represents a message label
func (*Label) Reference ¶ added in v0.4.0
func (l *Label) Reference() *assets.LabelReference
Reference returns a reference to this label
type LabelAssets ¶ added in v0.15.0
type LabelAssets struct {
// contains filtered or unexported fields
}
LabelAssets provides access to all label assets
func NewLabelAssets ¶ added in v0.15.0
func NewLabelAssets(labels []assets.Label) *LabelAssets
NewLabelAssets creates a new set of label assets
func (*LabelAssets) All ¶ added in v0.15.0
func (s *LabelAssets) All() []*Label
All returns all the labels
func (*LabelAssets) FindByName ¶ added in v0.15.0
func (s *LabelAssets) FindByName(name string) *Label
FindByName looks for a label with the given name (case-insensitive)
type LegacyExtraContributor ¶ added in v0.21.3
type LegacyExtraContributor interface {
LegacyExtra() Results
}
LegacyExtraContributor is something which contributes results for constructing @legacy_extra
type Localizable ¶ added in v0.29.0
Localizable is anything in the flow definition which can be localized and therefore needs a UUID
type Localization ¶ added in v0.6.2
type Localization interface { GetItemTranslation(i18n.Language, uuids.UUID, string) []string SetItemTranslation(i18n.Language, uuids.UUID, string, []string) Languages() []i18n.Language }
Localization provide a way to get the translations for a specific language
type LocationAssets ¶ added in v0.15.0
type LocationAssets struct {
// contains filtered or unexported fields
}
LocationAssets provides access to location assets
func NewLocationAssets ¶ added in v0.15.0
func NewLocationAssets(hierarchies []assets.LocationHierarchy) *LocationAssets
NewLocationAssets creates a new set of location assets
func (*LocationAssets) Hierarchies ¶ added in v0.15.0
func (s *LocationAssets) Hierarchies() []assets.LocationHierarchy
Hierarchies returns all hierarchies
type Modifier ¶ added in v0.24.0
type Modifier interface { utils.Typed Apply(Engine, envs.Environment, SessionAssets, *Contact, EventCallback) bool }
Modifier is something which can modify a contact
type ModifierCallback ¶ added in v0.26.0
type ModifierCallback func(Modifier)
ModifierCallback is a callback invoked when a modifier has been generated
type MsgContent ¶ added in v0.218.0
type MsgContent struct { Text string `json:"text"` Attachments []utils.Attachment `json:"attachments,omitempty"` QuickReplies []string `json:"quick_replies,omitempty"` }
MsgContent is message content in a particular language
func (*MsgContent) Empty ¶ added in v0.218.3
func (c *MsgContent) Empty() bool
type MsgIn ¶
MsgIn represents a incoming message from the session contact
func NewMsgIn ¶ added in v0.6.0
func NewMsgIn(uuid MsgUUID, urn urns.URN, channel *assets.ChannelReference, text string, attachments []utils.Attachment) *MsgIn
NewMsgIn creates a new incoming message
func (*MsgIn) ExternalID ¶ added in v0.24.0
ExternalID returns the optional external ID of this incoming message
func (*MsgIn) SetExternalID ¶ added in v0.24.0
SetExternalID sets the external ID of this message
type MsgOut ¶
type MsgOut struct { BaseMsg QuickReplies_ []string `json:"quick_replies,omitempty"` Templating_ *MsgTemplating `json:"templating,omitempty"` Topic_ MsgTopic `json:"topic,omitempty"` Locale_ i18n.Locale `json:"locale,omitempty"` UnsendableReason_ UnsendableReason `json:"unsendable_reason,omitempty"` }
MsgOut represents a outgoing message to the session contact
func NewIVRMsgOut ¶ added in v0.80.0
func NewIVRMsgOut(urn urns.URN, channel *assets.ChannelReference, text string, audioURL string, locale i18n.Locale) *MsgOut
NewIVRMsgOut creates a new outgoing message for IVR
func NewMsgOut ¶ added in v0.6.0
func NewMsgOut(urn urns.URN, channel *assets.ChannelReference, content *MsgContent, templating *MsgTemplating, topic MsgTopic, locale i18n.Locale, reason UnsendableReason) *MsgOut
NewMsgOut creates a new outgoing message
func (*MsgOut) QuickReplies ¶ added in v0.6.0
QuickReplies returns the quick replies of this outgoing message
func (*MsgOut) Templating ¶ added in v0.32.0
func (m *MsgOut) Templating() *MsgTemplating
Templating returns the templating to use to send this message (if any)
func (*MsgOut) Topic ¶ added in v0.60.0
Topic returns the topic to use to send this message (if any)
func (*MsgOut) UnsendableReason ¶ added in v0.170.0
func (m *MsgOut) UnsendableReason() UnsendableReason
UnsendableReason returns the reason this message can't be sent (if any)
type MsgTemplating ¶ added in v0.32.0
type MsgTemplating struct { Template *assets.TemplateReference `json:"template"` Components []*TemplatingComponent `json:"components,omitempty"` Variables []*TemplatingVariable `json:"variables,omitempty"` }
MsgTemplating represents any substituted message template that should be applied when sending this message
func NewMsgTemplating ¶ added in v0.32.0
func NewMsgTemplating(template *assets.TemplateReference, components []*TemplatingComponent, variables []*TemplatingVariable) *MsgTemplating
NewMsgTemplating creates and returns a new msg template
type MsgTopic ¶ added in v0.60.0
type MsgTopic string
MsgTopic is the topic, as required by some channel types
type Node ¶
type Node interface { UUID() NodeUUID Actions() []Action Router() Router Exits() []Exit Validate(Flow, map[uuids.UUID]bool) error EnumerateTemplates(Localization, func(Action, Router, i18n.Language, string)) EnumerateDependencies(Localization, func(Action, Router, i18n.Language, assets.Reference)) EnumerateResults(func(Action, Router, *ResultInfo)) EnumerateLocalizables(func(uuids.UUID, string, []string, func([]string))) }
Node is a single node in a flow
type OptIn ¶ added in v0.195.0
OptIn adds some functionality to optin assets.
func (*OptIn) Context ¶ added in v0.195.0
Context returns the properties available in expressions
uuid:text -> the UUID of the optin name:text -> the name of the optin
@context optin
func (*OptIn) Reference ¶ added in v0.195.0
func (o *OptIn) Reference() *assets.OptInReference
Reference returns a reference to this optin
type OptInAssets ¶ added in v0.195.0
type OptInAssets struct {
// contains filtered or unexported fields
}
OptInAssets provides access to all optin assets
func NewOptInAssets ¶ added in v0.195.0
func NewOptInAssets(optins []assets.OptIn) *OptInAssets
NewOptInAssets creates a new set of optin assets
type Resthook ¶ added in v0.10.20
Resthook represents a named event and a set of subscribers
func NewResthook ¶ added in v0.10.20
NewResthook returns a new resthook object
type ResthookAssets ¶ added in v0.15.0
type ResthookAssets struct {
// contains filtered or unexported fields
}
ResthookAssets provides access to all resthook assets
func NewResthookAssets ¶ added in v0.15.0
func NewResthookAssets(resthooks []assets.Resthook) *ResthookAssets
NewResthookAssets creates a new set of resthook assets
func (*ResthookAssets) FindBySlug ¶ added in v0.15.0
func (s *ResthookAssets) FindBySlug(slug string) *Resthook
FindBySlug finds the group with the given UUID
type Result ¶
type Result struct { Name string `json:"name" validate:"required"` // TODO add result_name validation when we're sure sessions no longer have invalid result names Value string `json:"value"` Category string `json:"category,omitempty"` CategoryLocalized string `json:"category_localized,omitempty"` NodeUUID NodeUUID `json:"node_uuid"` Input string `json:"input,omitempty"` // should be called operand but too late now Extra json.RawMessage `json:"extra,omitempty"` CreatedOn time.Time `json:"created_on" validate:"required"` }
Result describes a value captured during a run's execution. It might have been implicitly created by a router, or explicitly created by a [set_run_result](#action:set_run_result) action.
func NewResult ¶ added in v0.21.1
func NewResult(name string, value string, category string, categoryLocalized string, nodeUUID NodeUUID, input string, extra json.RawMessage, createdOn time.Time) *Result
NewResult creates a new result
func (*Result) Context ¶ added in v0.33.8
Context returns the properties available in expressions
__default__:text -> the value name:text -> the name of the result value:text -> the value of the result category:text -> the category of the result category_localized:text -> the localized category of the result input:text -> the input of the result extra:any -> the optional extra data of the result node_uuid:text -> the UUID of the node in the flow that generated the result created_on:datetime -> the creation date of the result
@context result
type ResultInfo ¶ added in v0.40.0
type ResultInfo struct { Key string `json:"key"` Name string `json:"name"` Categories []string `json:"categories"` }
ResultInfo is possible result that a flow might generate
func NewResultInfo ¶ added in v0.40.0
func NewResultInfo(name string, categories []string) *ResultInfo
NewResultInfo creates a new result spec
func (*ResultInfo) String ¶ added in v0.40.0
func (r *ResultInfo) String() string
type ResultSpec ¶ added in v0.30.2
type ResultSpec struct { ResultInfo NodeUUIDs []string `json:"node_uuids"` }
func NewResultSpecs ¶ added in v0.71.3
func NewResultSpecs(results []ExtractedResult) []*ResultSpec
NewResultSpecs merges extracted results based on key
type Results ¶
Results is our wrapper around a map of snakified result names to result objects
func (Results) Save ¶
Save saves a new result in our map using the snakified name as the key. Returns the old result if it existed.
func (*Results) UnmarshalJSON ¶
type Resume ¶ added in v0.20.0
type Resume interface { utils.Typed Contextable Apply(Run, EventCallback) Environment() envs.Environment Contact() *Contact ResumedOn() time.Time }
Resume represents something which can resume a session with the flow engine
type Router ¶
type Router interface { utils.Typed Wait() Wait Categories() []Category ResultName() string Validate(Flow, []Exit) error AllowTimeout() bool Route(Run, Step, EventCallback) (ExitUUID, string, error) RouteTimeout(Run, Step, EventCallback) (ExitUUID, error) EnumerateTemplates(Localization, func(i18n.Language, string)) EnumerateDependencies(Localization, func(i18n.Language, assets.Reference)) EnumerateResults(func(*ResultInfo)) EnumerateLocalizables(func(uuids.UUID, string, []string, func([]string))) }
Router is a router on a note which can pick an exit
type Run ¶ added in v0.146.0
type Run interface { Contextable RunSummary FlowReference() *assets.FlowReference Session() Session SaveResult(*Result) (*Result, bool) SetStatus(RunStatus) Webhook() *WebhookCall SetWebhook(*WebhookCall) CreateStep(Node) Step Path() []Step PathLocation() (Step, Node, error) LogEvent(Step, Event) Events() []Event ReceivedInput() bool EvaluateTemplateValue(string, EventCallback) (types.XValue, bool) EvaluateTemplateText(string, excellent.Escaping, bool, EventCallback) (string, bool) EvaluateTemplate(string, EventCallback) (string, bool) RootContext(envs.Environment) map[string]types.XValue GetText(uuids.UUID, string, string) (string, i18n.Language) GetTextArray(uuids.UUID, string, []string, []i18n.Language) ([]string, i18n.Language) Snapshot() RunSummary Parent() RunSummary ParentInSession() Run Ancestors() []Run CreatedOn() time.Time ModifiedOn() time.Time ExitedOn() *time.Time Exit(RunStatus) }
Run is a single contact's journey through a flow. It records the path they have taken, and the results that have been collected.
type RunStatus ¶
type RunStatus string
RunStatus represents the current status of the flow run
const ( // RunStatusActive represents a run that is still active RunStatusActive RunStatus = "active" // RunStatusCompleted represents a run that has run to completion RunStatusCompleted RunStatus = "completed" // RunStatusWaiting represents a run which is waiting for something from the caller RunStatusWaiting RunStatus = "waiting" // RunStatusFailed represents a run that encountered an unrecoverable error RunStatusFailed RunStatus = "failed" // RunStatusExpired represents a run that expired due to inactivity RunStatusExpired RunStatus = "expired" )
type RunSummary ¶ added in v0.4.0
type RunSummary interface { UUID() RunUUID Contact() *Contact Flow() Flow Status() RunStatus Results() Results }
RunSummary represents the minimum information available about all runs (current or related) and is the representation of runs made accessible to router tests.
type Segment ¶ added in v0.142.0
type Segment interface { Flow() Flow Node() Node Exit() Exit Operand() string Destination() Node Time() time.Time }
Segment is a movement on the flow graph from an exit to another node
type Services ¶ added in v0.48.0
type Services interface { Email(SessionAssets) (EmailService, error) Webhook(SessionAssets) (WebhookService, error) Classification(*Classifier) (ClassificationService, error) Airtime(SessionAssets) (AirtimeService, error) }
Services groups together interfaces for several services whose implementation is provided outside of the flow engine.
type Session ¶
type Session interface { Assets() SessionAssets UUID() SessionUUID Type() FlowType SetType(FlowType) Environment() envs.Environment SetEnvironment(envs.Environment) MergedEnvironment() envs.Environment Contact() *Contact SetContact(*Contact) Input() Input SetInput(Input) Status() SessionStatus Trigger() Trigger CurrentResume() Resume BatchStart() bool PushFlow(Flow, Run, bool) Resume(Resume) (Sprint, error) Runs() []Run GetRun(RunUUID) (Run, error) FindStep(uuid StepUUID) (Run, Step) GetCurrentChild(Run) Run ParentRun() RunSummary CurrentContext() *types.XObject History() *SessionHistory Engine() Engine }
Session represents the session of a flow run which may contain many runs
type SessionAssets ¶ added in v0.4.0
type SessionAssets interface { contactql.Resolver Source() assets.Source Channels() *ChannelAssets Classifiers() *ClassifierAssets Fields() *FieldAssets Flows() FlowAssets Globals() *GlobalAssets Groups() *GroupAssets Labels() *LabelAssets Locations() *LocationAssets OptIns() *OptInAssets Resthooks() *ResthookAssets Templates() *TemplateAssets Topics() *TopicAssets Users() *UserAssets }
SessionAssets is the assets available to a session
type SessionHistory ¶ added in v0.96.0
type SessionHistory struct { ParentUUID SessionUUID `json:"parent_uuid"` Ancestors int `json:"ancestors"` AncestorsSinceInput int `json:"ancestors_since_input"` }
SessionHistory provides information about the sessions that caused this session
func NewChildHistory ¶ added in v0.96.0
func NewChildHistory(parent Session) *SessionHistory
NewChildHistory creates a new history for a child of the given session
func (*SessionHistory) Advance ¶ added in v0.96.0
func (h *SessionHistory) Advance(newParent SessionUUID, receivedInput bool) *SessionHistory
Advance moves history forward to a new parent
type SessionStatus ¶ added in v0.4.0
type SessionStatus string
SessionStatus represents the current status of the engine session
const ( // SessionStatusActive represents a session that is still active SessionStatusActive SessionStatus = "active" // SessionStatusCompleted represents a session that has run to completion SessionStatusCompleted SessionStatus = "completed" // SessionStatusWaiting represents a session which is waiting for something from the caller SessionStatusWaiting SessionStatus = "waiting" // SessionStatusFailed represents a session that encountered an unrecoverable error SessionStatusFailed SessionStatus = "failed" )
type SessionUUID ¶ added in v0.44.0
SessionUUID is the UUID of a session
type Sprint ¶ added in v0.24.0
Sprint is an interaction with the engine - i.e. a start or resume of a session
type Step ¶
type Step interface { Contextable UUID() StepUUID NodeUUID() NodeUUID ExitUUID() ExitUUID ArrivedOn() time.Time Leave(ExitUUID) }
Step is a single step in the path thru a flow
type Template ¶ added in v0.32.0
Template represents messaging templates used by channels types such as WhatsApp
func NewTemplate ¶ added in v0.32.0
NewTemplate returns a new template objects based on the passed in asset
func (*Template) FindTranslation ¶ added in v0.32.0
func (t *Template) FindTranslation(channel *Channel, locales []i18n.Locale) *TemplateTranslation
FindTranslation finds the matching translation for the passed in channel and languages (in priority order)
func (*Template) Reference ¶ added in v0.38.1
func (t *Template) Reference() *assets.TemplateReference
Reference returns the reference for this template
func (*Template) Templating ¶ added in v0.218.2
func (t *Template) Templating(tt *TemplateTranslation, vars []string) *MsgTemplating
Templating generates a templating object for the passed in translation and variables
type TemplateAssets ¶ added in v0.32.0
type TemplateAssets struct {
// contains filtered or unexported fields
}
TemplateAssets is our type for all the templates in an environment
func NewTemplateAssets ¶ added in v0.32.0
func NewTemplateAssets(ts []assets.Template) *TemplateAssets
NewTemplateAssets creates a new template list
func (*TemplateAssets) Get ¶ added in v0.38.1
func (a *TemplateAssets) Get(uuid assets.TemplateUUID) *Template
Get returns the template with the passed in UUID if any
type TemplateEnumerator ¶ added in v0.200.1
type TemplateEnumerator interface {
EnumerateTemplates(Localization, func(i18n.Language, string))
}
type TemplateTranslation ¶ added in v0.32.0
type TemplateTranslation struct {
assets.TemplateTranslation
}
TemplateTranslation represents a single translation for a template
func NewTemplateTranslation ¶ added in v0.32.0
func NewTemplateTranslation(t assets.TemplateTranslation) *TemplateTranslation
NewTemplateTranslation returns a new TemplateTranslation for the passed in asset
func (*TemplateTranslation) Asset ¶ added in v0.32.0
func (t *TemplateTranslation) Asset() assets.TemplateTranslation
Asset returns the underlying asset
func (*TemplateTranslation) Preview ¶ added in v0.201.0
func (t *TemplateTranslation) Preview(vars []*TemplatingVariable) *MsgContent
Preview returns message content which will act as a preview of a message sent with this template
type TemplatingComponent ¶ added in v0.207.0
type TemplatingVariable ¶ added in v0.209.0
type Ticket ¶ added in v0.86.0
type Ticket struct {
// contains filtered or unexported fields
}
Ticket is a ticket in a ticketing system
func NewTicket ¶ added in v0.86.0
func NewTicket(uuid TicketUUID, topic *Topic, assignee *User) *Ticket
NewTicket creates a new ticket
func OpenTicket ¶ added in v0.122.0
OpenTicket creates a new ticket. Used by ticketing services to open a new ticket.
func ReadTicket ¶ added in v0.122.0
func ReadTicket(sa SessionAssets, data []byte, missing assets.MissingCallback) (*Ticket, error)
ReadTicket decodes a contact from the passed in JSON. If the topic or assigned user can't be found in the assets, we report the missing asset and return ticket without those.
func (*Ticket) Context ¶ added in v0.118.2
Context returns the properties available in expressions
uuid:text -> the UUID of the ticket topic:any -> the topic of the ticket assignee:any -> the assignee of the ticket
@context ticket
func (*Ticket) MarshalJSON ¶ added in v0.122.0
MarshalJSON marshals this ticket into JSON
func (*Ticket) UUID ¶ added in v0.86.0
func (t *Ticket) UUID() TicketUUID
type TicketService ¶ added in v0.86.0
type TicketService interface { // Open tries to open a new ticket Open(env envs.Environment, contact *Contact, topic *Topic, body string, assignee *User, logHTTP HTTPLogCallback) (*Ticket, error) }
TicketService provides ticketing functionality to the engine
type Timeout ¶ added in v0.33.0
type Timeout interface { Seconds() int CategoryUUID() CategoryUUID }
Timeout is a way to skip a wait after X amount of time
type Topic ¶ added in v0.132.0
Topic represents a ticket topic
func (*Topic) Context ¶ added in v0.133.0
Context returns the properties available in expressions
__default__:text -> the name uuid:text -> the UUID of the topic name:text -> the name of the topic
@context topic
func (*Topic) Reference ¶ added in v0.132.0
func (t *Topic) Reference() *assets.TopicReference
Reference returns a reference to this topic
type TopicAssets ¶ added in v0.132.0
type TopicAssets struct {
// contains filtered or unexported fields
}
TopicAssets provides access to all topic assets
func NewTopicAssets ¶ added in v0.132.0
func NewTopicAssets(topics []assets.Topic) *TopicAssets
NewTopicAssets creates a new set of topic assets
func (*TopicAssets) FindByName ¶ added in v0.133.0
func (s *TopicAssets) FindByName(name string) *Topic
FindByName looks for a topic with the given name (case-insensitive)
type Trigger ¶ added in v0.4.0
type Trigger interface { utils.Typed Contextable Initialize(Session, EventCallback) error InitializeRun(Run, EventCallback) error Environment() envs.Environment Flow() *assets.FlowReference Contact() *Contact Call() *Call Batch() bool Params() *types.XObject History() *SessionHistory TriggeredOn() time.Time }
Trigger represents something which can initiate a session with the flow engine
type TriggerWithRun ¶ added in v0.24.0
type TriggerWithRun interface { Trigger RunSummary() json.RawMessage }
TriggerWithRun is special case of trigger that provides a parent run to the session
type URNList ¶
type URNList []*ContactURN
URNList is the list of a contact's URNs
func ReadURNList ¶ added in v0.6.0
func ReadURNList(a SessionAssets, rawURNs []urns.URN, missing assets.MissingCallback) (URNList, error)
ReadURNList parses contact URN list from the given list of raw URNs
func (URNList) MapContext ¶ added in v0.31.0
MapContext returns a map of the highest priority URN for each scheme - exposed in expressions as @urns
func (URNList) ToXValue ¶ added in v0.32.0
func (l URNList) ToXValue(env envs.Environment) types.XValue
ToXValue returns a representation of this object for use in expressions
func (URNList) WithScheme ¶ added in v0.4.4
WithScheme returns a new URN list containing of only URNs of the given schemes
type UnsendableReason ¶ added in v0.170.0
type UnsendableReason string
const ( // max length of a message attachment (type:url) MaxAttachmentLength = 2048 // max length of a quick reply MaxQuickReplyLength = 64 NilUnsendableReason UnsendableReason = "" UnsendableReasonNoDestination UnsendableReason = "no_destination" // no sendable channel+URN pair UnsendableReasonContactStatus UnsendableReason = "contact_status" // contact is blocked or stopped or archived )
type User ¶ added in v0.124.0
User adds some functionality to user assets.
func (*User) Context ¶ added in v0.124.0
Context returns the properties available in expressions
__default__:text -> the name or email email:text -> the email address of the user name:text -> the name of the user first_name:text -> the first name of the user
@context user
func (*User) Format ¶ added in v0.124.4
Format returns a friendly string version of this user depending on what fields are set
func (*User) Reference ¶ added in v0.124.0
func (u *User) Reference() *assets.UserReference
Reference returns a reference to this user
type UserAssets ¶ added in v0.124.0
type UserAssets struct {
// contains filtered or unexported fields
}
UserAssets provides access to all user assets
func NewUserAssets ¶ added in v0.124.0
func NewUserAssets(users []assets.User) *UserAssets
NewUserAssets creates a new set of user assets
func (*UserAssets) Get ¶ added in v0.124.0
func (s *UserAssets) Get(email string) *User
Get returns the user with the given email
type Value ¶ added in v0.15.2
type Value struct { Text *types.XText `json:"text" validate:"required"` Datetime *types.XDateTime `json:"datetime,omitempty"` Number *types.XNumber `json:"number,omitempty"` State envs.LocationPath `json:"state,omitempty"` District envs.LocationPath `json:"district,omitempty"` Ward envs.LocationPath `json:"ward,omitempty"` }
Value represents a value in each of the field types
func NewValue ¶ added in v0.15.2
func NewValue(text *types.XText, datetime *types.XDateTime, number *types.XNumber, state envs.LocationPath, district envs.LocationPath, ward envs.LocationPath) *Value
NewValue creates an empty value
type Wait ¶
type Wait interface { utils.Typed FlowTypeRestricted Timeout() Timeout Begin(Run, EventCallback) bool Accepts(Resume) bool }
Wait tells the engine that the session requires input from the user
type WebhookCall ¶ added in v0.8.0
type WebhookCall struct { *httpx.Trace ResponseJSON []byte ResponseCleaned bool // whether response had to be cleaned to make it valid JSON Recreated bool // whether the call was recreated from a result }
WebhookCall is the result of a webhook call
func (*WebhookCall) Context ¶ added in v0.204.0
func (w *WebhookCall) Context(env envs.Environment) map[string]types.XValue
Context returns the properties available in expressions
__default__:text -> the method and URL status:number -> the response status code headers:any -> the response headers json:any -> the response body if valid JSON
@context webhook
func (*WebhookCall) MarshalJSON ¶ added in v0.8.0
func (w *WebhookCall) MarshalJSON() ([]byte, error)
type WebhookService ¶ added in v0.49.0
type WebhookService interface {
Call(request *http.Request) (*WebhookCall, error)
}
WebhookService provides webhook functionality to the engine