triggers

package
v0.0.0-...-a2de6b1 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2024 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const TypeCampaign string = "campaign"

TypeCampaign is the type for sessions triggered by campaign events

View Source
const TypeChannel string = "channel"

TypeChannel is the type for sessions triggered by channel events

View Source
const TypeFlowAction string = "flow_action"

TypeFlowAction is a constant for sessions triggered by flow actions in other sessions

View Source
const TypeManual string = "manual"

TypeManual is the type for manually triggered sessions

View Source
const TypeMsg string = "msg"

TypeMsg is the type for message triggered sessions

View Source
const TypeTicket string = "ticket"

TypeTicket is the type for sessions triggered by ticket events

Variables

This section is empty.

Functions

func ReadTrigger

func ReadTrigger(sessionAssets flows.SessionAssets, data json.RawMessage, missing assets.MissingCallback) (flows.Trigger, error)

ReadTrigger reads a trigger from the given JSON

func RegisteredTypes

func RegisteredTypes() map[string]ReadFunc

RegisteredTypes gets the registered types of trigger

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

Builder is a builder for triggers

func NewBuilder

func NewBuilder(env envs.Environment, flow *assets.FlowReference, contact *flows.Contact) *Builder

NewBuilder creates a new trigger builder

func (*Builder) Campaign

func (b *Builder) Campaign(campaign *CampaignReference, eventUUID CampaignEventUUID) *CampaignBuilder

Campaign returns a campaign trigger builder

func (*Builder) Channel

func (b *Builder) Channel(channel *assets.ChannelReference, eventType ChannelEventType) *ChannelBuilder

Channel returns a channel trigger builder

func (*Builder) FlowAction

func (b *Builder) FlowAction(history *flows.SessionHistory, runSummary json.RawMessage) *FlowActionBuilder

FlowAction returns a flow action trigger builder

func (*Builder) Manual

func (b *Builder) Manual() *ManualBuilder

Manual returns a manual trigger builder

func (*Builder) Msg

func (b *Builder) Msg(msg *flows.MsgIn) *MsgBuilder

Msg returns a msg trigger builder

func (*Builder) Ticket

func (b *Builder) Ticket(ticket *flows.Ticket, eventType TicketEventType) *TicketBuilder

Ticket returns a ticket trigger builder

type CampaignBuilder

type CampaignBuilder struct {
	// contains filtered or unexported fields
}

CampaignBuilder is a builder for campaign type triggers

func (*CampaignBuilder) Build

func (b *CampaignBuilder) Build() *CampaignTrigger

Build builds the trigger

type CampaignEvent

type CampaignEvent struct {
	UUID     CampaignEventUUID  `json:"uuid" validate:"required,uuid4"`
	Campaign *CampaignReference `json:"campaign" validate:"required,dive"`
}

CampaignEvent describes the specific event in the campaign that triggered the session

type CampaignEventUUID

type CampaignEventUUID uuids.UUID

CampaignEventUUID is the type for campaign event UUIDs

type CampaignReference

type CampaignReference struct {
	UUID CampaignUUID `json:"uuid" validate:"required,uuid4"`
	Name string       `json:"name" validate:"required"`
}

CampaignReference is a reference to the campaign that triggered the session

func NewCampaignReference

func NewCampaignReference(uuid CampaignUUID, name string) *CampaignReference

NewCampaignReference creates a new campaign reference

func (*CampaignReference) Context

func (c *CampaignReference) Context(env envs.Environment) map[string]types.XValue

type CampaignTrigger

type CampaignTrigger struct {
	// contains filtered or unexported fields
}

CampaignTrigger is used when a session was triggered by a campaign event

{
  "type": "campaign",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "event": {
      "uuid": "34d16dbd-476d-4b77-bac3-9f3d597848cc",
      "campaign": {"uuid": "58e9b092-fe42-4173-876c-ff45a14a24fe", "name": "New Mothers"}
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger campaign

func (*CampaignTrigger) Batch

func (t *CampaignTrigger) Batch() bool

func (*CampaignTrigger) Connection

func (t *CampaignTrigger) Connection() *flows.Connection

func (*CampaignTrigger) Contact

func (t *CampaignTrigger) Contact() *flows.Contact

func (*CampaignTrigger) Context

func (t *CampaignTrigger) Context(env envs.Environment) map[string]types.XValue

Context for manual triggers always has non-nil params

func (*CampaignTrigger) Environment

func (t *CampaignTrigger) Environment() envs.Environment

func (*CampaignTrigger) Flow

func (t *CampaignTrigger) Flow() *assets.FlowReference

func (*CampaignTrigger) History

func (t *CampaignTrigger) History() *flows.SessionHistory

func (*CampaignTrigger) Initialize

func (t *CampaignTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*CampaignTrigger) InitializeRun

func (t *CampaignTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we create our first run

func (*CampaignTrigger) MarshalJSON

func (t *CampaignTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*CampaignTrigger) Params

func (t *CampaignTrigger) Params() *types.XObject

func (*CampaignTrigger) TriggeredOn

func (t *CampaignTrigger) TriggeredOn() time.Time

func (*CampaignTrigger) Type

func (t *CampaignTrigger) Type() string

Type returns the type of this trigger

type CampaignUUID

type CampaignUUID uuids.UUID

CampaignUUID is the type for campaign UUIDs

type ChannelBuilder

type ChannelBuilder struct {
	// contains filtered or unexported fields
}

ChannelBuilder is a builder for channel type triggers

func (*ChannelBuilder) Build

func (b *ChannelBuilder) Build() *ChannelTrigger

Build builds the trigger

func (*ChannelBuilder) WithConnection

func (b *ChannelBuilder) WithConnection(urn urns.URN) *ChannelBuilder

WithConnection sets the channel connection for the trigger

func (*ChannelBuilder) WithParams

func (b *ChannelBuilder) WithParams(params *types.XObject) *ChannelBuilder

WithParams sets the params for the trigger

type ChannelEvent

type ChannelEvent struct {
	Type    ChannelEventType         `json:"type" validate:"required"`
	Channel *assets.ChannelReference `json:"channel" validate:"required,dive"`
}

ChannelEvent describes the specific event on the channel that triggered the session

type ChannelEventType

type ChannelEventType string

ChannelEventType is the type of event that occurred on the channel

const (
	ChannelEventTypeIncomingCall    ChannelEventType = "incoming_call"
	ChannelEventTypeMissedCall      ChannelEventType = "missed_call"
	ChannelEventTypeNewConversation ChannelEventType = "new_conversation"
	ChannelEventTypeReferral        ChannelEventType = "referral"
)

different channel event types

type ChannelTrigger

type ChannelTrigger struct {
	// contains filtered or unexported fields
}

ChannelTrigger is used when a session was triggered by a channel event

{
  "type": "channel",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "event": {
      "type": "new_conversation",
      "channel": {"uuid": "58e9b092-fe42-4173-876c-ff45a14a24fe", "name": "Facebook"}
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger channel

func (*ChannelTrigger) Batch

func (t *ChannelTrigger) Batch() bool

func (*ChannelTrigger) Connection

func (t *ChannelTrigger) Connection() *flows.Connection

func (*ChannelTrigger) Contact

func (t *ChannelTrigger) Contact() *flows.Contact

func (*ChannelTrigger) Context

func (t *ChannelTrigger) Context(env envs.Environment) map[string]types.XValue

Context returns the properties available in expressions

type:text -> the type of trigger that started this session
params:any -> the parameters passed to the trigger
keyword:text -> the keyword match if this is a keyword trigger
user:user -> the user who started this session if this is a manual trigger
origin:text -> the origin of this session if this is a manual trigger
ticket:ticket -> the ticket if this is a ticket trigger

@context trigger

func (*ChannelTrigger) Environment

func (t *ChannelTrigger) Environment() envs.Environment

func (*ChannelTrigger) Flow

func (t *ChannelTrigger) Flow() *assets.FlowReference

func (*ChannelTrigger) History

func (t *ChannelTrigger) History() *flows.SessionHistory

func (*ChannelTrigger) Initialize

func (t *ChannelTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*ChannelTrigger) InitializeRun

func (t *ChannelTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we create our first run

func (*ChannelTrigger) MarshalJSON

func (t *ChannelTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*ChannelTrigger) Params

func (t *ChannelTrigger) Params() *types.XObject

func (*ChannelTrigger) TriggeredOn

func (t *ChannelTrigger) TriggeredOn() time.Time

func (*ChannelTrigger) Type

func (t *ChannelTrigger) Type() string

Type returns the type of this trigger

type Context

type Context struct {
	// contains filtered or unexported fields
}

Context is the schema of trigger objects in the context, across all types

type FlowActionBuilder

type FlowActionBuilder struct {
	// contains filtered or unexported fields
}

FlowActionBuilder is a builder for flow action type triggers

func (*FlowActionBuilder) AsBatch

func (b *FlowActionBuilder) AsBatch() *FlowActionBuilder

AsBatch sets batch mode on for the trigger

func (*FlowActionBuilder) Build

Build builds the trigger

func (*FlowActionBuilder) WithConnection

func (b *FlowActionBuilder) WithConnection(channel *assets.ChannelReference, urn urns.URN) *FlowActionBuilder

WithConnection sets the channel connection for the trigger

type FlowActionTrigger

type FlowActionTrigger struct {
	// contains filtered or unexported fields
}

FlowActionTrigger is used when another session triggered this run using a trigger_flow action.

{
  "type": "flow_action",
  "flow": {"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Collect Age"},
  "history": {
    "parent_uuid": "a5b25fb0-75fd-4898-a34f-5ff14fc19078",
    "ancestors": 3,
    "ancestors_since_input": 1
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00",
  "run_summary": {
    "uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d",
    "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
    "contact": {
      "uuid": "c59b0033-e748-4240-9d4c-e85eb6800151",
      "name": "Bob",
      "fields": {"gender": {"text": "Male"}},
      "created_on": "2018-01-01T12:00:00.000000000-00:00"
    },
    "status": "active",
    "results": {
      "age": {
        "result_name": "Age",
        "value": "33",
        "node": "cd2be8c4-59bc-453c-8777-dec9a80043b8",
        "created_on": "2018-01-01T12:00:00.000000000-00:00"
      }
    }
  }
}

@trigger flow_action

func (*FlowActionTrigger) Batch

func (t *FlowActionTrigger) Batch() bool

func (*FlowActionTrigger) Connection

func (t *FlowActionTrigger) Connection() *flows.Connection

func (*FlowActionTrigger) Contact

func (t *FlowActionTrigger) Contact() *flows.Contact

func (*FlowActionTrigger) Context

func (t *FlowActionTrigger) Context(env envs.Environment) map[string]types.XValue

Context returns the properties available in expressions

type:text -> the type of trigger that started this session
params:any -> the parameters passed to the trigger
keyword:text -> the keyword match if this is a keyword trigger
user:user -> the user who started this session if this is a manual trigger
origin:text -> the origin of this session if this is a manual trigger
ticket:ticket -> the ticket if this is a ticket trigger

@context trigger

func (*FlowActionTrigger) Environment

func (t *FlowActionTrigger) Environment() envs.Environment

func (*FlowActionTrigger) Flow

func (t *FlowActionTrigger) Flow() *assets.FlowReference

func (*FlowActionTrigger) History

func (t *FlowActionTrigger) History() *flows.SessionHistory

func (*FlowActionTrigger) Initialize

func (t *FlowActionTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*FlowActionTrigger) InitializeRun

func (t *FlowActionTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we create our first run

func (*FlowActionTrigger) MarshalJSON

func (t *FlowActionTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*FlowActionTrigger) Params

func (t *FlowActionTrigger) Params() *types.XObject

func (*FlowActionTrigger) RunSummary

func (t *FlowActionTrigger) RunSummary() json.RawMessage

RunSummary returns the summary of the run that triggered this session

func (*FlowActionTrigger) TriggeredOn

func (t *FlowActionTrigger) TriggeredOn() time.Time

func (*FlowActionTrigger) Type

func (t *FlowActionTrigger) Type() string

Type returns the type of this trigger

type KeywordMatch

type KeywordMatch struct {
	Type    KeywordMatchType `json:"type" validate:"required"`
	Keyword string           `json:"keyword" validate:"required"`
}

KeywordMatch describes why the message triggered a session

func NewKeywordMatch

func NewKeywordMatch(typeName KeywordMatchType, keyword string) *KeywordMatch

NewKeywordMatch creates a new keyword match

type KeywordMatchType

type KeywordMatchType string

KeywordMatchType describes how the message matched a keyword

const (
	KeywordMatchTypeFirstWord KeywordMatchType = "first_word"
	KeywordMatchTypeOnlyWord  KeywordMatchType = "only_word"
)

the different types of keyword match

type ManualBuilder

type ManualBuilder struct {
	// contains filtered or unexported fields
}

ManualBuilder is a builder for manual type triggers

func (*ManualBuilder) AsBatch

func (b *ManualBuilder) AsBatch() *ManualBuilder

AsBatch sets batch mode on for the trigger

func (*ManualBuilder) Build

func (b *ManualBuilder) Build() *ManualTrigger

Build builds the trigger

func (*ManualBuilder) WithConnection

func (b *ManualBuilder) WithConnection(channel *assets.ChannelReference, urn urns.URN) *ManualBuilder

WithConnection sets the channel connection for the trigger

func (*ManualBuilder) WithOrigin

func (b *ManualBuilder) WithOrigin(origin string) *ManualBuilder

WithOrigin sets the origin (e.g. ui, api) for the trigger

func (*ManualBuilder) WithParams

func (b *ManualBuilder) WithParams(params *types.XObject) *ManualBuilder

WithParams sets the params for the trigger

func (*ManualBuilder) WithUser

func (b *ManualBuilder) WithUser(user *flows.User) *ManualBuilder

WithUser sets the user (e.g. an email address, login) for the trigger

type ManualTrigger

type ManualTrigger struct {
	// contains filtered or unexported fields
}

ManualTrigger is used when a session was triggered manually by a user

{
  "type": "manual",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "user": {"email": "bob@nyaruka.com", "name": "Bob"},
  "origin": "ui",
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger manual

func (*ManualTrigger) Batch

func (t *ManualTrigger) Batch() bool

func (*ManualTrigger) Connection

func (t *ManualTrigger) Connection() *flows.Connection

func (*ManualTrigger) Contact

func (t *ManualTrigger) Contact() *flows.Contact

func (*ManualTrigger) Context

func (t *ManualTrigger) Context(env envs.Environment) map[string]types.XValue

Context for manual triggers always has non-nil params

func (*ManualTrigger) Environment

func (t *ManualTrigger) Environment() envs.Environment

func (*ManualTrigger) Flow

func (t *ManualTrigger) Flow() *assets.FlowReference

func (*ManualTrigger) History

func (t *ManualTrigger) History() *flows.SessionHistory

func (*ManualTrigger) Initialize

func (t *ManualTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*ManualTrigger) InitializeRun

func (t *ManualTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we create our first run

func (*ManualTrigger) MarshalJSON

func (t *ManualTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*ManualTrigger) Params

func (t *ManualTrigger) Params() *types.XObject

func (*ManualTrigger) TriggeredOn

func (t *ManualTrigger) TriggeredOn() time.Time

func (*ManualTrigger) Type

func (t *ManualTrigger) Type() string

Type returns the type of this trigger

type MsgBuilder

type MsgBuilder struct {
	// contains filtered or unexported fields
}

MsgBuilder is a builder for msg type triggers

func (*MsgBuilder) Build

func (b *MsgBuilder) Build() *MsgTrigger

Build builds the trigger

func (*MsgBuilder) WithConnection

func (b *MsgBuilder) WithConnection(channel *assets.ChannelReference, urn urns.URN) *MsgBuilder

WithConnection sets the channel connection for the trigger

func (*MsgBuilder) WithMatch

func (b *MsgBuilder) WithMatch(match *KeywordMatch) *MsgBuilder

WithMatch sets the keyword match for the trigger

type MsgTrigger

type MsgTrigger struct {
	// contains filtered or unexported fields
}

MsgTrigger is used when a session was triggered by a message being received by the caller

{
  "type": "msg",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "msg": {
    "uuid": "2d611e17-fb22-457f-b802-b8f7ec5cda5b",
    "channel": {"uuid": "61602f3e-f603-4c70-8a8f-c477505bf4bf", "name": "Twilio"},
    "urn": "tel:+12065551212",
    "text": "hi there",
    "attachments": ["https://s3.amazon.com/mybucket/attachment.jpg"]
  },
  "keyword_match": {
    "type": "first_word",
    "keyword": "start"
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger msg

func (*MsgTrigger) Batch

func (t *MsgTrigger) Batch() bool

func (*MsgTrigger) Connection

func (t *MsgTrigger) Connection() *flows.Connection

func (*MsgTrigger) Contact

func (t *MsgTrigger) Contact() *flows.Contact

func (*MsgTrigger) Context

func (t *MsgTrigger) Context(env envs.Environment) map[string]types.XValue

Context for msg triggers additionally exposes the keyword match

func (*MsgTrigger) Environment

func (t *MsgTrigger) Environment() envs.Environment

func (*MsgTrigger) Flow

func (t *MsgTrigger) Flow() *assets.FlowReference

func (*MsgTrigger) History

func (t *MsgTrigger) History() *flows.SessionHistory

func (*MsgTrigger) Initialize

func (t *MsgTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*MsgTrigger) InitializeRun

func (t *MsgTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we visit our first node

func (*MsgTrigger) MarshalJSON

func (t *MsgTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*MsgTrigger) Params

func (t *MsgTrigger) Params() *types.XObject

func (*MsgTrigger) TriggeredOn

func (t *MsgTrigger) TriggeredOn() time.Time

func (*MsgTrigger) Type

func (t *MsgTrigger) Type() string

Type returns the type of this trigger

type ReadFunc

ReadFunc is a function that can read a trigger from JSON

type TicketBuilder

type TicketBuilder struct {
	// contains filtered or unexported fields
}

TicketBuilder is a builder for ticket type triggers

func (*TicketBuilder) Build

func (b *TicketBuilder) Build() *TicketTrigger

Build builds the trigger

type TicketEvent

type TicketEvent struct {
	// contains filtered or unexported fields
}

TicketEvent describes the specific event on the ticket that triggered the session

type TicketEventType

type TicketEventType string

TicketEventType is the type of event that occurred on the ticket

const (
	TicketEventTypeClosed TicketEventType = "closed"
)

different ticket event types

type TicketTrigger

type TicketTrigger struct {
	// contains filtered or unexported fields
}

TicketTrigger is used when a session was triggered by a ticket event

{
  "type": "ticket",
  "flow": {"uuid": "50c3706e-fedb-42c0-8eab-dda3335714b7", "name": "Registration"},
  "contact": {
    "uuid": "9f7ede93-4b16-4692-80ad-b7dc54a1cd81",
    "name": "Bob",
    "created_on": "2018-01-01T12:00:00.000000Z"
  },
  "event": {
      "type": "closed",
      "ticket": {
          "uuid": "58e9b092-fe42-4173-876c-ff45a14a24fe",
          "ticketer": {"uuid": "19dc6346-9623-4fe4-be80-538d493ecdf5", "name": "Support Tickets"},
          "topic": {"uuid": "472a7a73-96cb-4736-b567-056d987cc5b4", "name": "Weather"},
          "body": "Where are my shoes?"
      }
  },
  "triggered_on": "2000-01-01T00:00:00.000000000-00:00"
}

@trigger ticket

func (*TicketTrigger) Batch

func (t *TicketTrigger) Batch() bool

func (*TicketTrigger) Connection

func (t *TicketTrigger) Connection() *flows.Connection

func (*TicketTrigger) Contact

func (t *TicketTrigger) Contact() *flows.Contact

func (*TicketTrigger) Context

func (t *TicketTrigger) Context(env envs.Environment) map[string]types.XValue

Context for ticket triggers includes the ticket

func (*TicketTrigger) Environment

func (t *TicketTrigger) Environment() envs.Environment

func (*TicketTrigger) Flow

func (t *TicketTrigger) Flow() *assets.FlowReference

func (*TicketTrigger) History

func (t *TicketTrigger) History() *flows.SessionHistory

func (*TicketTrigger) Initialize

func (t *TicketTrigger) Initialize(session flows.Session, logEvent flows.EventCallback) error

Initialize initializes the session

func (*TicketTrigger) InitializeRun

func (t *TicketTrigger) InitializeRun(run flows.Run, logEvent flows.EventCallback) error

InitializeRun performs additional initialization when we create our first run

func (*TicketTrigger) MarshalJSON

func (t *TicketTrigger) MarshalJSON() ([]byte, error)

MarshalJSON marshals this trigger into JSON

func (*TicketTrigger) Params

func (t *TicketTrigger) Params() *types.XObject

func (*TicketTrigger) TriggeredOn

func (t *TicketTrigger) TriggeredOn() time.Time

func (*TicketTrigger) Type

func (t *TicketTrigger) Type() string

Type returns the type of this trigger

Jump to

Keyboard shortcuts

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