Documentation ¶
Index ¶
- Constants
- func ReadEvent(data json.RawMessage) (flows.Event, error)
- func RegisterType(name string, initFunc func() flows.Event)
- type BaseEvent
- type BroadcastCreatedEvent
- type BroadcastTranslation
- type ContactFieldChangedEvent
- type ContactGroupsChangedEvent
- type ContactLanguageChangedEvent
- type ContactNameChangedEvent
- type ContactRefreshedEvent
- type ContactTimezoneChangedEvent
- type ContactURNsChangedEvent
- type EmailCreatedEvent
- type EnvironmentRefreshedEvent
- type ErrorEvent
- type FlowEnteredEvent
- type IVRCreatedEvent
- type InputLabelsAddedEvent
- type MsgCreatedEvent
- type MsgReceivedEvent
- type MsgWaitEvent
- type RunExpiredEvent
- type RunResultChangedEvent
- type SessionTriggeredEvent
- type WaitTimedOutEvent
- type WebhookCalledEvent
Constants ¶
const TypeBroadcastCreated string = "broadcast_created"
TypeBroadcastCreated is a constant for outgoing message events
const TypeContactFieldChanged string = "contact_field_changed"
TypeContactFieldChanged is the type of our save to contact event
const TypeContactGroupsChanged string = "contact_groups_changed"
TypeContactGroupsChanged is the type of our groups changed event
const TypeContactLanguageChanged string = "contact_language_changed"
TypeContactLanguageChanged is the type of our contact language changed event
const TypeContactNameChanged string = "contact_name_changed"
TypeContactNameChanged is the type of our contact name changed event
const TypeContactRefreshed string = "contact_refreshed"
TypeContactRefreshed is the type of our contact refreshed event
const TypeContactTimezoneChanged string = "contact_timezone_changed"
TypeContactTimezoneChanged is the type of our contact timezone changed event
const TypeContactURNsChanged string = "contact_urns_changed"
TypeContactURNsChanged is the type of our URNs changed event
const TypeEmailCreated string = "email_created"
TypeEmailCreated is our type for the email event
const TypeEnvironmentRefreshed string = "environment_refreshed"
TypeEnvironmentRefreshed is the type of our environment changed event
const TypeError string = "error"
TypeError is the type of our error events
const TypeFlowEntered string = "flow_entered"
TypeFlowEntered is the type of our flow entered event
const TypeIVRCreated string = "ivr_created"
TypeIVRCreated is a constant for IVR created events
const TypeInputLabelsAdded string = "input_labels_added"
TypeInputLabelsAdded is the type of our add label action
const TypeMsgCreated string = "msg_created"
TypeMsgCreated is a constant for incoming messages
const TypeMsgReceived string = "msg_received"
TypeMsgReceived is a constant for incoming messages
const TypeMsgWait string = "msg_wait"
TypeMsgWait is the type of our msg wait event
const TypeRunExpired string = "run_expired"
TypeRunExpired is the type of our flow expired event
const TypeRunResultChanged string = "run_result_changed"
TypeRunResultChanged is the type of our run result event
const TypeSessionTriggered string = "session_triggered"
TypeSessionTriggered is the type of our session triggered event
const TypeWaitTimedOut string = "wait_timed_out"
TypeWaitTimedOut is the type of our wait timed out events
const TypeWebhookCalled string = "webhook_called"
TypeWebhookCalled is the type for our webhook events
Variables ¶
This section is empty.
Functions ¶
func ReadEvent ¶ added in v0.11.0
func ReadEvent(data json.RawMessage) (flows.Event, error)
ReadEvent reads a single event from the given JSON
func RegisterType ¶ added in v0.11.0
RegisterType registers a new type of router
Types ¶
type BaseEvent ¶
type BaseEvent struct { Type_ string `json:"type" validate:"required"` CreatedOn_ time.Time `json:"created_on" validate:"required"` StepUUID_ flows.StepUUID `json:"step_uuid,omitempty" validate:"omitempty,uuid4"` }
BaseEvent is the base of all event types
func NewBaseEvent ¶ added in v0.4.0
NewBaseEvent creates a new base event
func (*BaseEvent) SetStepUUID ¶ added in v0.11.0
SetStepUUID sets the UUID of the step in the path where this event occured
type BroadcastCreatedEvent ¶ added in v0.5.0
type BroadcastCreatedEvent struct { BaseEvent Translations map[utils.Language]*BroadcastTranslation `json:"translations,min=1" validate:"dive"` BaseLanguage utils.Language `json:"base_language" validate:"required"` URNs []urns.URN `json:"urns,omitempty" validate:"dive,urn"` Contacts []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"` Groups []*assets.GroupReference `json:"groups,omitempty" validate:"dive"` }
BroadcastCreatedEvent events are created when an action wants to send a message to other contacts.
{ "type": "broadcast_created", "created_on": "2006-01-02T15:04:05Z", "translations": { "eng": { "text": "hi, what's up", "attachments": [], "quick_replies": ["All good", "Got 99 problems"] }, "spa": { "text": "Que pasa", "attachments": [], "quick_replies": ["Todo bien", "Tengo 99 problemas"] } }, "base_language": "eng", "urns": ["tel:+12065551212"], "contacts": [{"uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Bob"}] }
@event broadcast_created
func NewBroadcastCreatedEvent ¶ added in v0.5.0
func NewBroadcastCreatedEvent(translations map[utils.Language]*BroadcastTranslation, baseLanguage utils.Language, urns []urns.URN, contacts []*flows.ContactReference, groups []*assets.GroupReference) *BroadcastCreatedEvent
NewBroadcastCreatedEvent creates a new outgoing msg event for the given recipients
type BroadcastTranslation ¶ added in v0.6.1
type BroadcastTranslation struct { Text string `json:"text"` Attachments []flows.Attachment `json:"attachments,omitempty"` QuickReplies []string `json:"quick_replies,omitempty"` }
BroadcastTranslation is the broadcast content in a particular language
type ContactFieldChangedEvent ¶ added in v0.5.0
type ContactFieldChangedEvent struct { BaseEvent Field *assets.FieldReference `json:"field" validate:"required"` Value *flows.Value `json:"value"` }
ContactFieldChangedEvent events are created when a custom field value of the contact has been changed. A null values indicates that the field value has been cleared.
{ "type": "contact_field_changed", "created_on": "2006-01-02T15:04:05Z", "field": {"key": "gender", "name": "Gender"}, "value": {"text": "Male"} }
@event contact_field_changed
func NewContactFieldChangedEvent ¶ added in v0.5.0
func NewContactFieldChangedEvent(field *flows.Field, value *flows.Value) *ContactFieldChangedEvent
NewContactFieldChangedEvent returns a new save to contact event
type ContactGroupsChangedEvent ¶ added in v0.18.0
type ContactGroupsChangedEvent struct { BaseEvent GroupsAdded []*assets.GroupReference `json:"groups_added,omitempty" validate:"omitempty,dive"` GroupsRemoved []*assets.GroupReference `json:"groups_removed,omitempty" validate:"omitempty,dive"` }
ContactGroupsChangedEvent events are created when a contact is added or removed to/from one or more groups.
{ "type": "contact_groups_changed", "created_on": "2006-01-02T15:04:05Z", "groups_added": [{"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Reporters"}], "groups_removed": [{"uuid": "1e1ce1e1-9288-4504-869e-022d1003c72a", "name": "Customers"}] }
@event contact_groups_changed
func NewContactGroupsChangedEvent ¶ added in v0.18.0
func NewContactGroupsChangedEvent(added []*flows.Group, removed []*flows.Group) *ContactGroupsChangedEvent
NewContactGroupsChangedEvent returns a new contact_groups_changed event
type ContactLanguageChangedEvent ¶ added in v0.10.0
ContactLanguageChangedEvent events are created when the language of the contact has been changed.
{ "type": "contact_language_changed", "created_on": "2006-01-02T15:04:05Z", "language": "eng" }
@event contact_language_changed
func NewContactLanguageChangedEvent ¶ added in v0.10.0
func NewContactLanguageChangedEvent(language utils.Language) *ContactLanguageChangedEvent
NewContactLanguageChangedEvent returns a new contact language changed event
type ContactNameChangedEvent ¶ added in v0.10.0
ContactNameChangedEvent events are created when the name of the contact has been changed.
{ "type": "contact_name_changed", "created_on": "2006-01-02T15:04:05Z", "name": "Bob Smith" }
@event contact_name_changed
func NewContactNameChangedEvent ¶ added in v0.10.0
func NewContactNameChangedEvent(name string) *ContactNameChangedEvent
NewContactNameChangedEvent returns a new contact name changed event
type ContactRefreshedEvent ¶ added in v0.24.0
type ContactRefreshedEvent struct { BaseEvent Contact json.RawMessage `json:"contact"` }
ContactRefreshedEvent events are generated when the resume has a contact with differences to the current session contact.
{ "type": "contact_refreshed", "created_on": "2006-01-02T15:04:05Z", "contact": { "uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Bob", "urns": ["tel:+11231234567"] } }
@event contact_refreshed
func NewContactRefreshedEvent ¶ added in v0.24.0
func NewContactRefreshedEvent(contact *flows.Contact) *ContactRefreshedEvent
NewContactRefreshedEvent creates a new contact changed event
type ContactTimezoneChangedEvent ¶ added in v0.10.0
ContactTimezoneChangedEvent events are created when the timezone of the contact has been changed.
{ "type": "contact_timezone_changed", "created_on": "2006-01-02T15:04:05Z", "timezone": "Africa/Kigali" }
@event contact_timezone_changed
func NewContactTimezoneChangedEvent ¶ added in v0.10.0
func NewContactTimezoneChangedEvent(timezone *time.Location) *ContactTimezoneChangedEvent
NewContactTimezoneChangedEvent returns a new contact timezone changed event
type ContactURNsChangedEvent ¶ added in v0.23.0
ContactURNsChangedEvent events are created when a contact's URNs have changed.
{ "type": "contact_urns_changed", "created_on": "2006-01-02T15:04:05Z", "urns": [ "tel:+12345678900", "twitter:bob" ] }
@event contact_urns_changed
func NewContactURNsChangedEvent ¶ added in v0.23.0
func NewContactURNsChangedEvent(urns []urns.URN) *ContactURNsChangedEvent
NewContactURNsChangedEvent returns a new add URN event
type EmailCreatedEvent ¶ added in v0.5.0
type EmailCreatedEvent struct { BaseEvent Addresses []string `json:"addresses" validate:"required,min=1"` Subject string `json:"subject" validate:"required"` Body string `json:"body"` }
EmailCreatedEvent events are created when an action wants to send an email.
{ "type": "email_created", "created_on": "2006-01-02T15:04:05Z", "addresses": ["foo@bar.com"], "subject": "Your activation token", "body": "Your activation token is AAFFKKEE" }
@event email_created
func NewEmailCreatedEvent ¶ added in v0.5.0
func NewEmailCreatedEvent(addresses []string, subject string, body string) *EmailCreatedEvent
NewEmailCreatedEvent returns a new email event with the passed in subject, body and emails
type EnvironmentRefreshedEvent ¶ added in v0.24.0
type EnvironmentRefreshedEvent struct { BaseEvent Environment json.RawMessage `json:"environment"` }
EnvironmentRefreshedEvent events are sent by the caller to tell the engine to update the session environment.
{ "type": "environment_refreshed", "created_on": "2006-01-02T15:04:05Z", "environment": { "date_format": "YYYY-MM-DD", "time_format": "hh:mm", "timezone": "Africa/Kigali", "default_language": "eng", "allowed_languages": ["eng", "fra"] } }
@event environment_refreshed
func NewEnvironmentRefreshedEvent ¶ added in v0.24.0
func NewEnvironmentRefreshedEvent(env utils.Environment) *EnvironmentRefreshedEvent
NewEnvironmentRefreshedEvent creates a new environment changed event
type ErrorEvent ¶
type ErrorEvent struct { BaseEvent Text string `json:"text" validate:"required"` Fatal bool `json:"fatal"` }
ErrorEvent events are created when an error occurs during flow execution.
{ "type": "error", "created_on": "2006-01-02T15:04:05Z", "text": "invalid date format: '12th of October'" }
@event error
func NewErrorEvent ¶
func NewErrorEvent(err error) *ErrorEvent
NewErrorEvent returns a new error event for the passed in error
func NewErrorEventf ¶ added in v0.24.0
func NewErrorEventf(format string, a ...interface{}) *ErrorEvent
NewErrorEventf returns a new error event for the passed in format string and args
func NewFatalErrorEvent ¶ added in v0.4.0
func NewFatalErrorEvent(err error) *ErrorEvent
NewFatalErrorEvent returns a new fatal error event for the passed in error
type FlowEnteredEvent ¶
type FlowEnteredEvent struct { BaseEvent Flow *assets.FlowReference `json:"flow" validate:"required"` ParentRunUUID flows.RunUUID `json:"parent_run_uuid" validate:"omitempty,uuid4"` Terminal bool `json:"terminal"` }
FlowEnteredEvent events are created when an action has entered a sub-flow.
{ "type": "flow_entered", "created_on": "2006-01-02T15:04:05Z", "flow": {"uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Registration"}, "parent_run_uuid": "95eb96df-461b-4668-b168-727f8ceb13dd", "terminal": false }
@event flow_entered
func NewFlowEnteredEvent ¶ added in v0.25.0
func NewFlowEnteredEvent(flow *assets.FlowReference, parentRunUUID flows.RunUUID, terminal bool) *FlowEnteredEvent
NewFlowEnteredEvent returns a new flow entered event for the passed in flow and parent run
type IVRCreatedEvent ¶ added in v0.25.0
IVRCreatedEvent events are created when an action wants to send an IVR response to the current contact.
{ "type": "ivr_created", "created_on": "2006-01-02T15:04:05Z", "msg": { "uuid": "2d611e17-fb22-457f-b802-b8f7ec5cda5b", "channel": {"uuid": "61602f3e-f603-4c70-8a8f-c477505bf4bf", "name": "Twilio"}, "urn": "tel:+12065551212", "text": "hi there", "attachments": ["audio:https://s3.amazon.com/mybucket/attachment.m4a"] } }
@event ivr_created
func NewIVRCreatedEvent ¶ added in v0.25.0
func NewIVRCreatedEvent(msg *flows.MsgOut) *IVRCreatedEvent
NewIVRCreatedEvent creates a new IVR created event
type InputLabelsAddedEvent ¶ added in v0.5.0
type InputLabelsAddedEvent struct { BaseEvent InputUUID flows.InputUUID `json:"input_uuid" validate:"required,uuid4"` Labels []*assets.LabelReference `json:"labels" validate:"required,min=1,dive"` }
InputLabelsAddedEvent events are created when an action wants to add labels to the current input.
{ "type": "input_labels_added", "created_on": "2006-01-02T15:04:05Z", "input_uuid": "4aef4050-1895-4c80-999a-70368317a4f5", "labels": [{"uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "name": "Spam"}] }
@event input_labels_added
func NewInputLabelsAddedEvent ¶ added in v0.5.0
func NewInputLabelsAddedEvent(inputUUID flows.InputUUID, labels []*flows.Label) *InputLabelsAddedEvent
NewInputLabelsAddedEvent returns a new labels added event
type MsgCreatedEvent ¶ added in v0.6.0
MsgCreatedEvent events are created when an action wants to send a reply to the current contact.
{ "type": "msg_created", "created_on": "2006-01-02T15:04:05Z", "msg": { "uuid": "2d611e17-fb22-457f-b802-b8f7ec5cda5b", "channel": {"uuid": "61602f3e-f603-4c70-8a8f-c477505bf4bf", "name": "Twilio"}, "urn": "tel:+12065551212", "text": "hi there", "attachments": ["image/jpeg:https://s3.amazon.com/mybucket/attachment.jpg"] } }
@event msg_created
func NewMsgCreatedEvent ¶ added in v0.5.0
func NewMsgCreatedEvent(msg *flows.MsgOut) *MsgCreatedEvent
NewMsgCreatedEvent creates a new outgoing msg event to a single contact
type MsgReceivedEvent ¶
MsgReceivedEvent events are sent by the caller to tell the engine that a message was received from the contact and that it should try to resume the session.
{ "type": "msg_received", "created_on": "2006-01-02T15:04:05Z", "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"] } }
@event msg_received
func NewMsgReceivedEvent ¶
func NewMsgReceivedEvent(msg *flows.MsgIn) *MsgReceivedEvent
NewMsgReceivedEvent creates a new incoming msg event for the passed in channel, URN and text
type MsgWaitEvent ¶
MsgWaitEvent events are created when a flow pauses waiting for a response from a contact. If a timeout is set, then the caller should resume the flow after the number of seconds in the timeout to resume it.
{ "type": "msg_wait", "created_on": "2006-01-02T15:04:05Z", "timeout": 300 }
@event msg_wait
func NewMsgWait ¶
func NewMsgWait(timeoutOn *time.Time) *MsgWaitEvent
NewMsgWait returns a new msg wait with the passed in timeout
type RunExpiredEvent ¶ added in v0.4.0
type RunExpiredEvent struct { BaseEvent RunUUID flows.RunUUID `json:"run_uuid" validate:"required,uuid4"` }
RunExpiredEvent events are sent by the caller to tell the engine that a run has expired.
{ "type": "run_expired", "created_on": "2006-01-02T15:04:05Z", "run_uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a" }
@event run_expired
func NewRunExpiredEvent ¶ added in v0.20.0
func NewRunExpiredEvent(run flows.FlowRun) *RunExpiredEvent
NewRunExpiredEvent creates a new run expired event
type RunResultChangedEvent ¶ added in v0.5.0
type RunResultChangedEvent struct { BaseEvent Name string `json:"name" validate:"required"` Value string `json:"value"` Category string `json:"category"` CategoryLocalized string `json:"category_localized,omitempty"` Input *string `json:"input,omitempty"` Extra json.RawMessage `json:"extra,omitempty"` }
RunResultChangedEvent events are created when a run result is saved. They contain not only the name, value and category of the result, but also the UUID of the node where the result was generated.
{ "type": "run_result_changed", "created_on": "2006-01-02T15:04:05Z", "name": "Gender", "value": "m", "category": "Male", "category_localized": "Homme", "node_uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "input": "M" }
@event run_result_changed
func NewRunResultChangedEvent ¶ added in v0.5.0
func NewRunResultChangedEvent(result *flows.Result) *RunResultChangedEvent
NewRunResultChangedEvent returns a new save result event for the passed in values
type SessionTriggeredEvent ¶ added in v0.4.0
type SessionTriggeredEvent struct { BaseEvent Flow *assets.FlowReference `json:"flow" validate:"required"` URNs []urns.URN `json:"urns,omitempty" validate:"dive,urn"` Contacts []*flows.ContactReference `json:"contacts,omitempty" validate:"dive"` Groups []*assets.GroupReference `json:"groups,omitempty" validate:"dive"` CreateContact bool `json:"create_contact,omitempty"` RunSummary json.RawMessage `json:"run_summary"` }
SessionTriggeredEvent events are created when an action wants to start other people in a flow.
{ "type": "session_triggered", "created_on": "2006-01-02T15:04:05Z", "flow": {"uuid": "0e06f977-cbb7-475f-9d0b-a0c4aaec7f6a", "name": "Registration"}, "groups": [ {"uuid": "8f8e2cae-3c8d-4dce-9c4b-19514437e427", "name": "New contacts"} ], "run_summary": { "uuid": "b7cf0d83-f1c9-411c-96fd-c511a4cfa86d", "flow": {"uuid": "93c554a1-b90d-4892-b029-a2a87dec9b87", "name": "Other Flow"}, "contact": { "uuid": "c59b0033-e748-4240-9d4c-e85eb6800151", "name": "Bob", "fields": {"state": {"value": "Azuay", "created_on": "2000-01-01T00:00:00.000000000-00:00"}} }, "results": { "age": { "name": "Age", "value": "33", "node_uuid": "cd2be8c4-59bc-453c-8777-dec9a80043b8", "created_on": "2000-01-01T00:00:00.000000000-00:00" } } } }
@event session_triggered
func NewSessionTriggeredEvent ¶ added in v0.4.0
func NewSessionTriggeredEvent(flow *assets.FlowReference, urns []urns.URN, contacts []*flows.ContactReference, groups []*assets.GroupReference, createContact bool, runSummary json.RawMessage) *SessionTriggeredEvent
NewSessionTriggeredEvent returns a new session triggered event
type WaitTimedOutEvent ¶ added in v0.9.10
type WaitTimedOutEvent struct {
BaseEvent
}
WaitTimedOutEvent events are sent by the caller when a wait has timed out - i.e. they are sent instead of the item that the wait was waiting for.
{ "type": "wait_timed_out", "created_on": "2006-01-02T15:04:05Z" }
@event wait_timed_out
func NewWaitTimedOutEvent ¶ added in v0.9.10
func NewWaitTimedOutEvent() *WaitTimedOutEvent
NewWaitTimedOutEvent creates a new wait timed out event
type WebhookCalledEvent ¶
type WebhookCalledEvent struct { BaseEvent URL string `json:"url" validate:"required"` Resthook string `json:"resthook,omitempty"` Status flows.WebhookStatus `json:"status" validate:"required"` ElapsedMS int `json:"elapsed_ms"` Request string `json:"request" validate:"required"` Response string `json:"response"` }
WebhookCalledEvent events are created when a webhook is called. The event contains the URL and the status of the response, as well as a full dump of the request and response.
{ "type": "webhook_called", "created_on": "2006-01-02T15:04:05Z", "url": "http://localhost:49998/?cmd=success", "status": "success", "elapsed_ms": 123, "request": "GET /?format=json HTTP/1.1", "response": "HTTP/1.1 200 OK\r\n\r\n{\"ip\":\"190.154.48.130\"}" }
@event webhook_called
func NewWebhookCalledEvent ¶ added in v0.4.0
func NewWebhookCalledEvent(webhook *flows.WebhookCall) *WebhookCalledEvent
NewWebhookCalledEvent returns a new webhook called event
Source Files ¶
- base.go
- broadcast_created.go
- contact_field_changed.go
- contact_groups_changed.go
- contact_language_changed.go
- contact_name_changed.go
- contact_refreshed.go
- contact_timezone_changed.go
- contact_urns_changed.go
- email_created.go
- environment_refreshed.go
- error.go
- flow_entered.go
- input_labels_added.go
- ivr_created.go
- msg_created.go
- msg_received.go
- msg_wait.go
- run_expired.go
- run_result_changed.go
- session_triggered.go
- wait_timed_out.go
- webhook_called.go