Documentation
¶
Index ¶
- Constants
- Variables
- func FromEndpointID(id string) (tech string, resource string, err error)
- type Application
- type ApplicationData
- type ApplicationEvent
- type ApplicationHandle
- func (ah *ApplicationHandle) Data() (ad ApplicationData, err error)
- func (ah *ApplicationHandle) ID() string
- func (ah *ApplicationHandle) Match(evt Event) bool
- func (ah *ApplicationHandle) Subscribe(eventSource string) (err error)
- func (ah *ApplicationHandle) Unsubscribe(eventSource string) (err error)
- type ApplicationReplaced
- type Asterisk
- type AsteriskInfo
- type Bridge
- type BridgeAttendedTransfer
- type BridgeBlindTransfer
- type BridgeCreated
- type BridgeData
- type BridgeDestroyed
- type BridgeEvent
- type BridgeHandle
- func (bh *BridgeHandle) AddChannel(channelID string) (err error)
- func (bh *BridgeHandle) Data() (bd BridgeData, err error)
- func (bh *BridgeHandle) Delete(channelID string) (err error)
- func (bh *BridgeHandle) ID() string
- func (bh *BridgeHandle) Match(e Event) bool
- func (bh *BridgeHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
- func (bh *BridgeHandle) Playback() Playback
- func (bh *BridgeHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
- func (bh *BridgeHandle) RemoveChannel(channelID string) (err error)
- func (bh *BridgeHandle) Subscribe(n ...string) Subscription
- type BridgeMerged
- type BuildInfo
- type Bus
- type CallerID
- type Channel
- type ChannelCallerID
- type ChannelConnectedLine
- type ChannelCreated
- type ChannelData
- type ChannelDestroyed
- type ChannelDialplan
- type ChannelDtmfReceived
- type ChannelEnteredBridge
- type ChannelEvent
- type ChannelHandle
- func (ch *ChannelHandle) Answer() error
- func (ch *ChannelHandle) Busy() error
- func (ch *ChannelHandle) Congestion() error
- func (ch *ChannelHandle) Continue(context, extension string, priority int) error
- func (ch *ChannelHandle) Data() (ChannelData, error)
- func (ch *ChannelHandle) Dial(caller string, timeout time.Duration) error
- func (ch *ChannelHandle) Hangup() error
- func (ch *ChannelHandle) Hold() error
- func (ch *ChannelHandle) ID() string
- func (ch *ChannelHandle) IsAnswered() (bool, error)
- func (ch *ChannelHandle) MOH(mohClass string) error
- func (ch *ChannelHandle) Match(e Event) bool
- func (ch *ChannelHandle) Mute(dir string) (err error)
- func (ch *ChannelHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
- func (ch *ChannelHandle) Playback() Playback
- func (ch *ChannelHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
- func (ch *ChannelHandle) Ring() error
- func (ch *ChannelHandle) SendDTMF(dtmf string, opts *DTMFOptions) error
- func (ch *ChannelHandle) Silence() error
- func (ch *ChannelHandle) Snoop(snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error)
- func (ch *ChannelHandle) StopHold() error
- func (ch *ChannelHandle) StopMOH() error
- func (ch *ChannelHandle) StopRing() error
- func (ch *ChannelHandle) StopSilence() error
- func (ch *ChannelHandle) Subscribe(n ...string) Subscription
- func (ch *ChannelHandle) Unmute(dir string) (err error)
- type ChannelHangupRequest
- type ChannelHold
- type ChannelLeftBridge
- type ChannelStateChange
- type ChannelTalkingFinished
- type ChannelTalkingStarted
- type ChannelUnhold
- type ChannelUserevent
- type ChannelVarset
- type Client
- type Config
- type ConfigData
- type ConfigHandle
- type ConfigInfo
- type ConfigTuple
- type ContactInfo
- type ContactStatusChange
- type DTMFOptions
- type DTMFSender
- type DateTime
- type DeviceState
- type DeviceStateChanged
- type DeviceStateData
- type DeviceStateHandle
- type Dial
- type DialplanCEP
- type DurationSec
- type Endpoint
- type EndpointData
- type EndpointEvent
- type EndpointHandle
- type EndpointStateChange
- type Event
- type EventData
- type EventTypes
- type FormatLangPair
- type LiveRecording
- type LiveRecordingData
- type LiveRecordingHandle
- func (s *LiveRecordingHandle) Data() (d LiveRecordingData, err error)
- func (s *LiveRecordingHandle) Delete() (err error)
- func (s *LiveRecordingHandle) ID() string
- func (s *LiveRecordingHandle) Match(e Event) bool
- func (s *LiveRecordingHandle) Mute() (err error)
- func (s *LiveRecordingHandle) Pause() (err error)
- func (s *LiveRecordingHandle) Resume() (err error)
- func (s *LiveRecordingHandle) Scrap() (err error)
- func (s *LiveRecordingHandle) Unmute() (err error)
- type LogData
- type Logging
- type Mailbox
- type MailboxData
- type MailboxHandle
- type Matcher
- type Message
- type MessageRawer
- type MissingParams
- type ModuleData
- type ModuleHandle
- type Modules
- type OriginateRequest
- type Peer
- type PeerStatusChange
- type Playback
- type PlaybackContinuing
- type PlaybackData
- type PlaybackEvent
- type PlaybackFinished
- type PlaybackHandle
- func (ph *PlaybackHandle) Control(op string) (err error)
- func (ph *PlaybackHandle) Data() (pd PlaybackData, err error)
- func (ph *PlaybackHandle) ID() string
- func (ph *PlaybackHandle) Match(e Event) bool
- func (ph *PlaybackHandle) Stop() (err error)
- func (ph *PlaybackHandle) Subscribe(n ...string) Subscription
- type PlaybackStarted
- type Playbacker
- type RawMessage
- type Recording
- type RecordingEvent
- type RecordingFailed
- type RecordingFinished
- type RecordingOptions
- type RecordingStarted
- type Sender
- type SetID
- type SnoopOptions
- type Sound
- type SoundData
- type SoundHandle
- type StasisEnd
- type StasisStart
- type StatusInfo
- type StoredRecording
- type StoredRecordingData
- type StoredRecordingHandle
- type Subscriber
- type Subscription
- type SystemInfo
- type TextMessage
- type TextMessageData
- type TextMessageReceived
- type TextMessageVariable
- type Variables
Constants ¶
const DateFormat = "2006-01-02T15:04:05.000-0700"
DateFormat is the date format that ARI returns in the JSON bodies
const EndpointIDSeparator = "|" //TODO: confirm separator isn't terrible
EndpointIDSeparator seperates the ID components of the endpoint ID
Variables ¶
var Logger = log15.New()
Logger defaults to a discard handler (null output). If you wish to enable logging, you can set your own handler like so:
ari.Logger.SetHandler(log15.StderrHandler)
Functions ¶
Types ¶
type Application ¶
type Application interface {
// List returns the list of applications in Asterisk
List() ([]*ApplicationHandle, error)
// Get returns a handle to the application for further interaction
Get(name string) *ApplicationHandle
// Data returns the applications data
Data(name string) (ApplicationData, error)
// Subscribe subscribes the given application to an event source
// event source may be one of:
// - channel:<channelId>
// - bridge:<bridgeId>
// - endpoint:<tech>/<resource> (e.g. SIP/102)
// - deviceState:<deviceName>
Subscribe(name string, eventSource string) error
// Unsubscribe unsubscribes (removes a subscription to) a given
// ARI application from the provided event source
// Equivalent to DELETE /applications/{applicationName}/subscription
Unsubscribe(name string, eventSource string) error
}
Application represents a communication path interacting with an Asterisk server for application-level resources
type ApplicationData ¶
type ApplicationData struct {
BridgeIDs []string `json:"bridge_ids"` // Subscribed BridgeIds
ChannelIDs []string `json:"channel_ids"` // Subscribed ChannelIds
DeviceNames []string `json:"device_names"` // Subscribed Device names
EndpointIDs []string `json:"endpoint_ids"` // Subscribed Endpoints (tech/resource format)
Name string `json:"name"` // Name of the application
}
ApplicationData describes the data for a Stasis (Ari) application
type ApplicationEvent ¶
type ApplicationEvent interface {
GetApplication() string
}
An ApplicationEvent is an event with an application (which is every event actually)
type ApplicationHandle ¶
type ApplicationHandle struct {
// contains filtered or unexported fields
}
ApplicationHandle provides a wrapper to an Application interface for operations on a specific application
func NewApplicationHandle ¶
func NewApplicationHandle(name string, app Application) *ApplicationHandle
NewApplicationHandle creates a new handle to the application name
func (*ApplicationHandle) Data ¶
func (ah *ApplicationHandle) Data() (ad ApplicationData, err error)
Data retrives the data for the application
func (*ApplicationHandle) ID ¶
func (ah *ApplicationHandle) ID() string
ID returns the identifier for the application
func (*ApplicationHandle) Match ¶
func (ah *ApplicationHandle) Match(evt Event) bool
Match returns true fo the event matches the application
func (*ApplicationHandle) Subscribe ¶
func (ah *ApplicationHandle) Subscribe(eventSource string) (err error)
Subscribe subscribes the application to an event source event source may be one of:
- channel:<channelId>
- bridge:<bridgeId>
- endpoint:<tech>/<resource> (e.g. SIP/102)
- deviceState:<deviceName>
func (*ApplicationHandle) Unsubscribe ¶
func (ah *ApplicationHandle) Unsubscribe(eventSource string) (err error)
Unsubscribe unsubscribes (removes a subscription to) a given ARI application from the provided event source Equivalent to DELETE /applications/{applicationName}/subscription
type ApplicationReplaced ¶
type ApplicationReplaced struct {
EventData
}
ApplicationReplaced - "Notification that another WebSocket has taken over for an application.An application may only be subscribed to by a single WebSocket at a time. If multiple WebSockets attempt to subscribe to the same application, the newer WebSocket wins, and the older one receives this event."
type Asterisk ¶
type Asterisk interface {
// Info gets data about the asterisk system
Info(only string) (*AsteriskInfo, error)
// Variables returns the global asterisk variables
Variables() Variables
// Logging returns the interface for working with asterisk logs
Logging() Logging
// Modules returns the interface for working with asterisk modules
Modules() Modules
// Config returns the interface for working with dynamic configuration
Config() Config
// ReloadModule tells asterisk to load the given module
ReloadModule(name string) error
}
Asterisk represents a communication path for the Asterisk server for system-level resources
type AsteriskInfo ¶
type AsteriskInfo struct {
BuildInfo BuildInfo `json:"build"`
ConfigInfo ConfigInfo `json:"config"`
StatusInfo StatusInfo `json:"status"`
SystemInfo SystemInfo `json:"system"`
}
AsteriskInfo describes a running asterisk system
type Bridge ¶
type Bridge interface {
// Create creates a bridge
Create(id string, btype string, name string) (*BridgeHandle, error)
// Get gets the BridgeHandle
Get(id string) *BridgeHandle
// Lists returns the lists of bridges in asterisk
List() ([]*BridgeHandle, error)
// Data gets the bridge data
Data(id string) (BridgeData, error)
// AddChannel adds a channel to the bridge
AddChannel(bridgeID string, channelID string) error
// RemoveChannel removes a channel from the bridge
RemoveChannel(bridgeID string, channelID string) error
// Delete deletes the bridge
Delete(id string) error
// Play plays the media URI to the bridge
Play(id string, playbackID string, mediaURI string) (*PlaybackHandle, error)
// Record records the bridge
Record(id string, name string, opts *RecordingOptions) (*LiveRecordingHandle, error)
// Subscribe subscribes the given bridge events events
Subscribe(id string, n ...string) Subscription
}
Bridge represents a communication path to an Asterisk server for working with bridge resources
type BridgeAttendedTransfer ¶
type BridgeAttendedTransfer struct {
EventData
DestinationApplication string `json:"destination_application"` // Application that has been transferred into
DestinationBridge string `json:"destination_bridge"` // Bridge that survived the merge result
DestinationLinkFirstLeg ChannelData `json:"destination_link_first_leg"` // First leg of a link transfer result
DestinationLinkSecondLeg ChannelData `json:"destination_link_second_leg"` // Second leg of a link transfer result
DestinationThreewayBridge BridgeData `json:"destination_threeway_bridge"` // Bridge that survived the threeway result
DestinationThreewayChannel ChannelData `json:"destination_threeway_channel"` // Transferer channel that survived the threeway result
DestinationType string `json:"destination_type"` // How the transfer was accomplished
IsExternal bool `json:"is_external"` // Whether the transfer was externally initiated or not
ReplaceChannel ChannelData `json:"replace_channel,omitempty"` // The channel that is replacing transferer_first_leg in the swap
Result string `json:"result"` // The result of the transfer attempt
TransferTarget ChannelData `json:"transfer_target,omitempty"` // The channel that is being transferred to
Transferee ChannelData `json:"transferee,omitempty"` // The channel that is being transferred
TransfererFirstLeg ChannelData `json:"transferer_first_leg"` // First leg of the transferer
TransfererFirstLegBridge BridgeData `json:"transferer_first_leg_bridge"` // Bridge the transferer first leg is in
TransfererSecondLeg ChannelData `json:"transferer_second_leg"` // Second leg of the transferer
TransfererSecondLegBridge BridgeData `json:"transferer_second_leg_bridge"` // Bridge the transferer second leg is in
}
BridgeAttendedTransfer - "Notification that an attended transfer has occurred."
func (*BridgeAttendedTransfer) GetBridgeIDs ¶
func (evt *BridgeAttendedTransfer) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*BridgeAttendedTransfer) GetChannelIDs ¶
func (evt *BridgeAttendedTransfer) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type BridgeBlindTransfer ¶
type BridgeBlindTransfer struct {
EventData
Bridge BridgeData `json:"bridge"` // The bridge being transferred
Channel ChannelData `json:"channel"` // The channel performing the blind transfer
Context string `json:"context"` // The context transferred to
Exten string `json:"exten"` // The extension transferred to
IsExternal bool `json:"is_external"` // Whether the transfer was externally initiated or not
ReplaceChannel ChannelData `json:"replace_channel,omitempty"` // The channel that is replacing transferer when the transferee(s) can not be transferred directly
Result string `json:"result"` // The result of the transfer attempt
Transferee ChannelData `json:"transferee,omitempty"` // The channel that is being transferred
}
BridgeBlindTransfer - "Notification that a blind transfer has occurred."
func (*BridgeBlindTransfer) GetBridgeIDs ¶
func (evt *BridgeBlindTransfer) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*BridgeBlindTransfer) GetChannelIDs ¶
func (evt *BridgeBlindTransfer) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type BridgeCreated ¶
type BridgeCreated struct {
EventData
Bridge BridgeData `json:"bridge"`
}
BridgeCreated - "Notification that a bridge has been created."
func (*BridgeCreated) GetBridgeIDs ¶
func (evt *BridgeCreated) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BridgeData ¶
type BridgeData struct {
ID string `json:"id"` // Unique Id for this bridge
Class string `json:"bridge"` // Class of the bridge (TODO: huh?)
Type string `json:"bridge_type"` // Type of bridge (mixing, holding, dtmf_events, proxy_media)
ChannelIDs []string `json:"channels"` // List of pariticipating channel ids
Creator string `json:"creator"` // Creating entity of the bridge
Name string `json:"name"` // The name of the bridge
Technology string `json:"technology"` // Name of the bridging technology
}
BridgeData describes an Asterisk Bridge, the entity which merges media from one or more channels into a common audio output
type BridgeDestroyed ¶
type BridgeDestroyed struct {
EventData
Bridge BridgeData `json:"bridge"`
}
BridgeDestroyed - "Notification that a bridge has been destroyed."
func (*BridgeDestroyed) GetBridgeIDs ¶
func (evt *BridgeDestroyed) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BridgeEvent ¶
type BridgeEvent interface {
GetBridgeIDs() []string
}
A BridgeEvent is an event with one or more Bridge IDs
type BridgeHandle ¶
type BridgeHandle struct {
// contains filtered or unexported fields
}
BridgeHandle is the handle to a bridge for performing operations
func NewBridgeHandle ¶
func NewBridgeHandle(id string, b Bridge) *BridgeHandle
NewBridgeHandle creates a new bridge handle
func (*BridgeHandle) AddChannel ¶
func (bh *BridgeHandle) AddChannel(channelID string) (err error)
AddChannel adds a channel to the bridge
func (*BridgeHandle) Data ¶
func (bh *BridgeHandle) Data() (bd BridgeData, err error)
Data gets the bridge data
func (*BridgeHandle) Delete ¶
func (bh *BridgeHandle) Delete(channelID string) (err error)
Delete deletes the bridge
func (*BridgeHandle) ID ¶
func (bh *BridgeHandle) ID() string
ID returns the identifier for the bridge
func (*BridgeHandle) Match ¶
func (bh *BridgeHandle) Match(e Event) bool
Match returns true if the event matches the bridge
func (*BridgeHandle) Play ¶
func (bh *BridgeHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
Play initiates playback of the specified media uri to the bridge, returning the Playback handle
func (*BridgeHandle) Playback ¶
func (bh *BridgeHandle) Playback() Playback
Playback returns the playback transport
func (*BridgeHandle) Record ¶
func (bh *BridgeHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
Record records the bridge to the given filename
func (*BridgeHandle) RemoveChannel ¶
func (bh *BridgeHandle) RemoveChannel(channelID string) (err error)
RemoveChannel removes a channel from the bridge
func (*BridgeHandle) Subscribe ¶
func (bh *BridgeHandle) Subscribe(n ...string) Subscription
Subscribe creates a subscription to the list of events
type BridgeMerged ¶
type BridgeMerged struct {
EventData
Bridge BridgeData `json:"bridge"`
BridgeFrom BridgeData `json:"bridge_from"`
}
BridgeMerged - "Notification that one bridge has merged into another."
func (*BridgeMerged) GetBridgeIDs ¶
func (evt *BridgeMerged) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
type BuildInfo ¶
type BuildInfo struct {
Date string `json:"date"`
Kernel string `json:"kernel"`
Machine string `json:"machine"`
Options string `json:"options"`
Os string `json:"os"`
User string `json:"user"`
}
BuildInfo describes information about how Asterisk was built
type Bus ¶
type Bus interface {
Sender
Subscriber
}
Bus is an event bus for ARI events. It receives and redistributes events based on a subscription model.
type CallerID ¶
CallerID describes the name and number which identifies the caller to other endpoints
func CallerIDFromString ¶
CallerIDFromString interprets the provided string as a CallerID. Usually, this string will be of the following forms:
- "Name" <number>
- <number>
- "Name" number
type Channel ¶
type Channel interface {
// Get returns a handle to a channel for further interaction
Get(id string) *ChannelHandle
// List lists the channels in asterisk
List() ([]*ChannelHandle, error)
// Create creates a new channel, returning a handle to it or an
// error, if the creation failed
Create(OriginateRequest) (*ChannelHandle, error)
// Data returns the channel data for a given channel
Data(id string) (ChannelData, error)
// Continue tells Asterisk to return a channel to the dialplan
Continue(id, context, extension string, priority int) error
// Busy hangs up the channel with the "busy" cause code
Busy(id string) error
// Congestion hangs up the channel with the "congestion" cause code
Congestion(id string) error
// Answer answers the channel
Answer(id string) error
// Hangup hangs up the given channel
Hangup(id string, reason string) error
// Ring indicates ringing to the channel
Ring(id string) error
// StopRing stops ringing on the channel
StopRing(id string) error
// SendDTMF sends DTMF to the channel
SendDTMF(id string, dtmf string, opts *DTMFOptions) error
// Hold puts the channel on hold
Hold(id string) error
// StopHold retrieves the channel from hold
StopHold(id string) error
// Mute mutes a channel in the given direction (in,out,both)
Mute(id string, dir string) error
// Unmute unmutes a channel in the given direction (in,out,both)
Unmute(id string, dir string) error
// MOH plays music on hold
MOH(id string, moh string) error
// StopMOH stops music on hold
StopMOH(id string) error
// Silence plays silence to the channel
Silence(id string) error
// StopSilence stops the silence on the channel
StopSilence(id string) error
// Play plays the media URI to the channel
Play(id string, playbackID string, mediaURI string) (*PlaybackHandle, error)
// Record records the channel
Record(id string, name string, opts *RecordingOptions) (*LiveRecordingHandle, error)
// Dial dials a created channel
Dial(id string, caller string, timeout time.Duration) error
// Snoop spies on a specific channel, creating a new snooping channel
Snoop(id string, snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error)
// Subscribe subscribes on the channel events
Subscribe(id string, n ...string) Subscription
}
Channel represents a communication path interacting with an Asterisk server.
type ChannelCallerID ¶
type ChannelCallerID struct {
EventData
CallerPresentation int `json:"caller_presentation"` // The integer representation of the Caller Presentation value.
CallerPresentationTxt string `json:"caller_presentation_txt"` // The text representation of the Caller Presentation value.
Channel ChannelData `json:"channel"` // The channel that changed Caller ID.
}
ChannelCallerID - "Channel changed Caller ID."
func (*ChannelCallerID) GetChannelIDs ¶
func (evt *ChannelCallerID) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelConnectedLine ¶
type ChannelConnectedLine struct {
EventData
Channel ChannelData `json:"channel"` // The channel whose connected line has changed.
}
ChannelConnectedLine - "Channel changed Connected Line."
type ChannelCreated ¶
type ChannelCreated struct {
EventData
Channel ChannelData `json:"channel"`
}
ChannelCreated - "Notification that a channel has been created."
func (*ChannelCreated) GetChannelIDs ¶
func (evt *ChannelCreated) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelData ¶
type ChannelData struct {
ID string `json:"id"` // Unique id for this channel (same as for AMI)
Name string `json:"name"` // Name of this channel (tech/name-id format)
State string `json:"state"` // State of the channel
Accountcode string `json:"accountcode"`
Caller CallerID `json:"caller"` // CallerId of the calling endpoint
Connected CallerID `json:"connected"` // CallerId of the connected line
Creationtime DateTime `json:"creationtime"`
Dialplan DialplanCEP `json:"dialplan"` // Current location in the dialplan
}
ChannelData is the data for a specific channel
type ChannelDestroyed ¶
type ChannelDestroyed struct {
EventData
Cause int `json:"cause"` // Integer representation of the cause of the hangup
CauseTxt string `json:"cause_txt"` // Text representation of the cause of the hangup
Channel ChannelData `json:"channel"`
}
ChannelDestroyed - "Notification that a channel has been destroyed."
type ChannelDialplan ¶
type ChannelDialplan struct {
EventData
Channel ChannelData `json:"channel"` // The channel that changed dialplan location.
DialplanApp string `json:"dialplan_app"` // The application about to be executed.
DialplanAppData string `json:"dialplan_app_data"` // The data to be passed to the application.
}
ChannelDialplan - "Channel changed location in the dialplan."
func (*ChannelDialplan) GetChannelIDs ¶
func (evt *ChannelDialplan) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelDtmfReceived ¶
type ChannelDtmfReceived struct {
EventData
Channel ChannelData `json:"channel"` // The channel on which DTMF was received
Digit string `json:"digit"` // DTMF digit received (0-9, A-E, # or *)
DurationMs int `json:"duration_ms"` // Number of milliseconds DTMF was received
}
ChannelDtmfReceived - "DTMF received on a channel.This event is sent when the DTMF ends. There is no notification about the start of DTMF"
func (*ChannelDtmfReceived) GetChannelIDs ¶
func (evt *ChannelDtmfReceived) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelEnteredBridge ¶
type ChannelEnteredBridge struct {
EventData
Bridge BridgeData `json:"bridge"`
Channel ChannelData `json:"channel"`
}
ChannelEnteredBridge - "Notification that a channel has entered a bridge."
func (*ChannelEnteredBridge) GetBridgeIDs ¶
func (evt *ChannelEnteredBridge) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelEnteredBridge) GetChannelIDs ¶
func (evt *ChannelEnteredBridge) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelEvent ¶
type ChannelEvent interface {
GetChannelIDs() []string
}
A ChannelEvent is an event with one or more channel IDs
type ChannelHandle ¶
type ChannelHandle struct {
// contains filtered or unexported fields
}
ChannelHandle provides a wrapper to a Channel interface for operations on a particular channel ID
func NewChannelHandle ¶
func NewChannelHandle(id string, c Channel) *ChannelHandle
NewChannelHandle returns a handle to the given ARI channel
func (*ChannelHandle) Busy ¶
func (ch *ChannelHandle) Busy() error
Busy hangs up the channel with the "busy" cause code
func (*ChannelHandle) Congestion ¶
func (ch *ChannelHandle) Congestion() error
Congestion hangs up the channel with the congestion cause code
func (*ChannelHandle) Continue ¶
func (ch *ChannelHandle) Continue(context, extension string, priority int) error
Continue tells Asterisk to return the channel to the dialplan
func (*ChannelHandle) Data ¶
func (ch *ChannelHandle) Data() (ChannelData, error)
Data returns the channel's data
func (*ChannelHandle) Dial ¶
func (ch *ChannelHandle) Dial(caller string, timeout time.Duration) error
Dial dials a created channel
func (*ChannelHandle) Hangup ¶
func (ch *ChannelHandle) Hangup() error
Hangup hangs up the channel with the normal cause code
func (*ChannelHandle) ID ¶
func (ch *ChannelHandle) ID() string
ID returns the identifier for the channel handle
func (*ChannelHandle) IsAnswered ¶
func (ch *ChannelHandle) IsAnswered() (bool, error)
IsAnswered checks the current state of the channel to see if it is "Up"
func (*ChannelHandle) MOH ¶
func (ch *ChannelHandle) MOH(mohClass string) error
MOH plays music on hold of the given class to the channel
func (*ChannelHandle) Match ¶
func (ch *ChannelHandle) Match(e Event) bool
Match returns true if the event matches the channel
func (*ChannelHandle) Mute ¶
func (ch *ChannelHandle) Mute(dir string) (err error)
Mute mutes the channel in the given direction (in, out, both)
func (*ChannelHandle) Play ¶
func (ch *ChannelHandle) Play(id string, mediaURI string) (ph *PlaybackHandle, err error)
Play initiates playback of the specified media uri to the channel, returning the Playback handle
func (*ChannelHandle) Playback ¶
func (ch *ChannelHandle) Playback() Playback
Playback returns the playback transport
func (*ChannelHandle) Record ¶
func (ch *ChannelHandle) Record(name string, opts *RecordingOptions) (rh *LiveRecordingHandle, err error)
Record records the channel to the given filename
func (*ChannelHandle) Ring ¶
func (ch *ChannelHandle) Ring() error
Ring indicates ringing to the channel
func (*ChannelHandle) SendDTMF ¶
func (ch *ChannelHandle) SendDTMF(dtmf string, opts *DTMFOptions) error
SendDTMF sends the DTMF information to the server
func (*ChannelHandle) Silence ¶
func (ch *ChannelHandle) Silence() error
Silence plays silence to the channel
func (*ChannelHandle) Snoop ¶
func (ch *ChannelHandle) Snoop(snoopID string, app string, opts *SnoopOptions) (*ChannelHandle, error)
Snoop spies on a specific channel, creating a new snooping channel placed into the given app
func (*ChannelHandle) StopHold ¶
func (ch *ChannelHandle) StopHold() error
StopHold retrieves the channel from hold
func (*ChannelHandle) StopMOH ¶
func (ch *ChannelHandle) StopMOH() error
StopMOH stops playing of music on hold to the channel
func (*ChannelHandle) StopRing ¶
func (ch *ChannelHandle) StopRing() error
StopRing stops ringing on the channel
func (*ChannelHandle) StopSilence ¶
func (ch *ChannelHandle) StopSilence() error
StopSilence stops silence to the channel
func (*ChannelHandle) Subscribe ¶
func (ch *ChannelHandle) Subscribe(n ...string) Subscription
Subscribe subscribes the list of channel events
func (*ChannelHandle) Unmute ¶
func (ch *ChannelHandle) Unmute(dir string) (err error)
Unmute unmutes the channel in the given direction (in, out, both)
type ChannelHangupRequest ¶
type ChannelHangupRequest struct {
EventData
Cause int `json:"cause"` // Integer representation of the cause of the hangup.
Channel ChannelData `json:"channel"` // The channel on which the hangup was requested.
Soft bool `json:"soft"` // Whether the hangup request was a soft hangup request.
}
ChannelHangupRequest - "A hangup was requested on the channel."
func (*ChannelHangupRequest) GetChannelIDs ¶
func (evt *ChannelHangupRequest) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelHold ¶
type ChannelHold struct {
EventData
Channel ChannelData `json:"channel"` // The channel that initiated the hold event.
Musicclass string `json:"musicclass,omitempty"` // The music on hold class that the initiator requested.
}
ChannelHold - "A channel initiated a media hold."
func (*ChannelHold) GetChannelIDs ¶
func (evt *ChannelHold) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelLeftBridge ¶
type ChannelLeftBridge struct {
EventData
Bridge BridgeData `json:"bridge"`
Channel ChannelData `json:"channel"`
}
ChannelLeftBridge - "Notification that a channel has left a bridge."
func (*ChannelLeftBridge) GetBridgeIDs ¶
func (evt *ChannelLeftBridge) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelLeftBridge) GetChannelIDs ¶
func (evt *ChannelLeftBridge) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelStateChange ¶
type ChannelStateChange struct {
EventData
Channel ChannelData `json:"channel"`
}
ChannelStateChange - "Notification of a channel's state change."
func (*ChannelStateChange) GetChannelIDs ¶
func (evt *ChannelStateChange) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelTalkingFinished ¶
type ChannelTalkingFinished struct {
EventData
Channel ChannelData `json:"channel"` // The channel on which talking completed.
Duration int `json:"duration"` // The length of time, in milliseconds, that talking was detected on the channel
}
ChannelTalkingFinished - "Talking is no longer detected on the channel."
type ChannelTalkingStarted ¶
type ChannelTalkingStarted struct {
EventData
Channel ChannelData `json:"channel"` // The channel on which talking started.
}
ChannelTalkingStarted - "Talking was detected on the channel."
func (*ChannelTalkingStarted) GetChannelIDs ¶
func (evt *ChannelTalkingStarted) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelUnhold ¶
type ChannelUnhold struct {
EventData
Channel ChannelData `json:"channel"` // The channel that initiated the unhold event.
}
ChannelUnhold - "A channel initiated a media unhold."
func (*ChannelUnhold) GetChannelIDs ¶
func (evt *ChannelUnhold) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type ChannelUserevent ¶
type ChannelUserevent struct {
EventData
Bridge BridgeData `json:"bridge,omitempty"` // A bridge that is signaled with the user event.
Channel ChannelData `json:"channel,omitempty"` // A channel that is signaled with the user event.
Endpoint EndpointData `json:"endpoint,omitempty"` // A endpoint that is signaled with the user event.
Eventname string `json:"eventname"` // The name of the user event.
Userevent interface{} `json:"userevent"` // Custom Userevent data
}
ChannelUserevent - "User-generated event with additional user-defined fields in the object."
func (*ChannelUserevent) GetBridgeIDs ¶
func (evt *ChannelUserevent) GetBridgeIDs() (sx []string)
GetBridgeIDs gets the bridge IDs for the event
func (*ChannelUserevent) GetChannelIDs ¶
func (evt *ChannelUserevent) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
func (*ChannelUserevent) GetEndpointIDs ¶
func (evt *ChannelUserevent) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type ChannelVarset ¶
type ChannelVarset struct {
EventData
Channel ChannelData `json:"channel,omitempty"` // The channel on which the variable was set.If missing, the variable is a global variable.
Value string `json:"value"` // The new value of the variable.
Variable string `json:"variable"` // The variable that changed.
}
ChannelVarset - "Channel variable changed."
func (*ChannelVarset) GetChannelIDs ¶
func (evt *ChannelVarset) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type Client ¶
type Client struct {
// Namespaced Interfaces
Application Application
Asterisk Asterisk
Channel Channel
Bridge Bridge
Playback Playback
Mailbox Mailbox
Endpoint Endpoint
DeviceState DeviceState
TextMessage TextMessage
Sound Sound
Recording *Recording
Bus Bus
Cleanup func() error
}
Client represents a set of operations to interact with an Asterisk ARI server. It is agnostic to transport and implementation.
type Config ¶
type Config interface {
// Get gets the reference to a config object
Get(configClass, objectType, id string) *ConfigHandle
// Data gets the data for the config object
Data(configClass, objectType, id string) (ConfigData, error)
// Update creates or updates the given tuples
Update(configClass, objectType, id string, tuples []ConfigTuple) error
// Delete deletes the dynamic configuration object.
Delete(configClass, objectType, id string) error
}
Config represents a transport to the asterisk config ARI resource.
type ConfigData ¶
type ConfigData struct {
ID string
Class string
Type string
Fields []ConfigTuple
}
ConfigData contains the data for a given configuration object
type ConfigHandle ¶
type ConfigHandle struct {
// contains filtered or unexported fields
}
A ConfigHandle is a reference to a Config object on the asterisk service
func NewConfigHandle ¶
func NewConfigHandle(configClass, objectType, id string, c Config) *ConfigHandle
NewConfigHandle builds a new config handle
func (*ConfigHandle) Data ¶
func (ch *ConfigHandle) Data() (ConfigData, error)
Data gets the current data for the config handle
func (*ConfigHandle) Delete ¶
func (ch *ConfigHandle) Delete() error
Delete deletes the dynamic configuration object
func (*ConfigHandle) ID ¶
func (ch *ConfigHandle) ID() string
ID returns the unique identifier for the config object
func (*ConfigHandle) Update ¶
func (ch *ConfigHandle) Update(tuples []ConfigTuple) error
Update creates or updates the given config tuples
type ConfigInfo ¶
type ConfigInfo struct {
DefaultLanguage string `json:"default_language"`
MaxChannels int `json:"max_channels,omitempty"` //omitempty denotes an optional field, meaning the field may not be present if no value is assigned.
MaxLoad float64 `json:"max_load,omitempty"`
MaxOpenFiles int `json:"max_open_files,omitempty"`
Name string `json:"name"` // Asterisk system name
SetID SetID `json:"setid"` // Effective user/group id under which Asterisk is running
}
ConfigInfo describes information about the Asterisk configuration
type ConfigTuple ¶
ConfigTuple is the key-value pair that defines a configuration entry
type ContactInfo ¶
type ContactInfo struct {
EventData
Aor string `json:"aor"` // The Address of Record this contact belongs to.
ContactStatus string `json:"contact_status"` // The current status of the contact.
RoundtripUsec string `json:"roundtrip_usec,omitempty"` // Current round trip time, in microseconds, for the contact.
Uri string `json:"uri"` // The location of the contact.
}
ContactInfo - "Detailed information about a contact on an endpoint."
type ContactStatusChange ¶
type ContactStatusChange struct {
EventData
ContactInfo ContactInfo `json:"contact_info"`
Endpoint EndpointData `json:"endpoint"`
}
ContactStatusChange - "The state of a contact on an endpoint has changed."
func (*ContactStatusChange) GetEndpointIDs ¶
func (evt *ContactStatusChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type DTMFOptions ¶
type DTMFOptions struct {
Before time.Duration
Between time.Duration
Duration time.Duration
After time.Duration
}
DTMFOptions is the list of pptions for DTMF sending
type DTMFSender ¶
type DTMFSender interface {
SendDTMF(dtmf string, opts *DTMFOptions)
}
DTMFSender is an object which can be send DTMF signals
type DateTime ¶
DateTime is an alias type for attaching a custom asterisk unmarshaller and marshaller for JSON
func (DateTime) MarshalJSON ¶
MarshalJSON converts the given date object to ARIs date format
func (*DateTime) UnmarshalJSON ¶
UnmarshalJSON parses the given date per ARIs date format
type DeviceState ¶
type DeviceState interface {
Get(name string) *DeviceStateHandle
List() ([]*DeviceStateHandle, error)
Data(name string) (DeviceStateData, error)
Update(name string, state string) error
Delete(name string) error
}
DeviceState represents a communication path interacting with an Asterisk server for device state resources
type DeviceStateChanged ¶
type DeviceStateChanged struct {
EventData
DeviceState DeviceStateData `json:"device_state"` // Device state object
}
DeviceStateChanged - "Notification that a device state has changed."
type DeviceStateData ¶
type DeviceStateData string
DeviceStateData is the device state for the device
type DeviceStateHandle ¶
type DeviceStateHandle struct {
// contains filtered or unexported fields
}
DeviceStateHandle is a representation of a device state that can be interacted with
func NewDeviceStateHandle ¶
func NewDeviceStateHandle(name string, d DeviceState) *DeviceStateHandle
NewDeviceStateHandle creates a new deviceState handle
func (*DeviceStateHandle) Data ¶
func (dsh *DeviceStateHandle) Data() (d DeviceStateData, err error)
Data gets the device state
func (*DeviceStateHandle) Delete ¶
func (dsh *DeviceStateHandle) Delete() (err error)
Delete deletes the device state
func (*DeviceStateHandle) ID ¶
func (dsh *DeviceStateHandle) ID() string
ID returns the identifier for the device
func (*DeviceStateHandle) Update ¶
func (dsh *DeviceStateHandle) Update(state string) (err error)
Update updates the device state, implicitly creating it if not exists
type Dial ¶
type Dial struct {
EventData
Caller ChannelData `json:"caller,omitempty"` // The calling channel.
Dialstatus string `json:"dialstatus"` // Current status of the dialing attempt to the peer.
Dialstring string `json:"dialstring,omitempty"` // The dial string for calling the peer channel.
Forward string `json:"forward,omitempty"` // Forwarding target requested by the original dialed channel.
Forwarded ChannelData `json:"forwarded,omitempty"` // Channel that the caller has been forwarded to.
Peer ChannelData `json:"peer"` // The dialed channel.
}
Dial - "Dialing state has changed."
func (*Dial) GetChannelIDs ¶
GetChannelIDs gets the bridge IDs for the event
type DialplanCEP ¶
type DialplanCEP struct {
Context string `json:"context"`
Exten string `json:"exten"`
Priority int64 `json:"priority"` //int64 derived from Java's 'long'
}
DialplanCEP describes a location in the dialplan (context,extension,priority)
type DurationSec ¶
DurationSec is a JSON type for duration in seconds
func (DurationSec) MarshalJSON ¶
func (ds DurationSec) MarshalJSON() ([]byte, error)
MarshalJSON converts the duration into a JSON friendly format
func (*DurationSec) UnmarshalJSON ¶
func (ds *DurationSec) UnmarshalJSON(data []byte) error
UnmarshalJSON parses the data into the duration seconds object
type Endpoint ¶
type Endpoint interface {
// List lists the endpoints
// TODO: associated with the application, or on the entire system?
List() ([]*EndpointHandle, error)
// List available endpoints for a given endpoint technology
ListByTech(tech string) ([]*EndpointHandle, error)
// Get returns a handle to the endpoint for further operations
Get(tech string, resource string) *EndpointHandle
// Data returns the state of the endpoint
Data(tech string, resource string) (EndpointData, error)
}
Endpoint represents a communication path to an Asterisk server for endpoint resources
type EndpointData ¶
type EndpointData struct {
ChannelIDs []string `json:"channel_ids"` // List of channel Ids which are associated with this endpoint
Resource string `json:"resource"` // The endpoint's resource name
State string `json:"state,omitempty"` // The state of the endpoint
Technology string `json:"technology"` // The technology of the endpoint (e.g. SIP, PJSIP, DAHDI, etc)
}
EndpointData describes an external device which may offer or accept calls to or from Asterisk. Devices are defined by a technology/resource pair.
Allowed states: 'unknown', 'offline', 'online'
type EndpointEvent ¶
type EndpointEvent interface {
GetEndpointIDs() []string
}
An EndpointEvent is an event with one or more endpoint IDs
type EndpointHandle ¶
type EndpointHandle struct {
// contains filtered or unexported fields
}
An EndpointHandle is a reference to an endpoint attached to a transport to an asterisk server
func NewEndpointHandle ¶
func NewEndpointHandle(tech string, resource string, e Endpoint) *EndpointHandle
NewEndpointHandle creates a new EndpointHandle
func (*EndpointHandle) Data ¶
func (eh *EndpointHandle) Data() (EndpointData, error)
Data returns the state of the endpoint
func (*EndpointHandle) ID ¶
func (eh *EndpointHandle) ID() string
ID returns the identifier for the endpoint
func (*EndpointHandle) Match ¶
func (eh *EndpointHandle) Match(e Event) bool
Match returns true if the event matches the bridge
type EndpointStateChange ¶
type EndpointStateChange struct {
EventData
Endpoint EndpointData `json:"endpoint"`
}
EndpointStateChange - "Endpoint state changed."
func (*EndpointStateChange) GetEndpointIDs ¶
func (evt *EndpointStateChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type Event ¶
type Event interface {
MessageRawer
ApplicationEvent
GetType() string
}
Event is the top level event interface
type EventData ¶
type EventData struct {
Message
Application string `json:"application"`
Timestamp DateTime `json:"timestamp,omitempty"`
}
EventData is the base struct for all events
func (*EventData) GetApplication ¶
GetApplication gets the application of the event
type EventTypes ¶
type EventTypes struct {
All string
ApplicationReplaced string
BridgeAttendedTransfer string
BridgeBlindTransfer string
BridgeCreated string
BridgeDestroyed string
BridgeMerged string
ChannelCallerID string
ChannelConnectedLine string
ChannelCreated string
ChannelDestroyed string
ChannelDialplan string
ChannelDtmfReceived string
ChannelEnteredBridge string
ChannelHangupRequest string
ChannelHold string
ChannelLeftBridge string
ChannelStateChange string
ChannelTalkingFinished string
ChannelTalkingStarted string
ChannelUnhold string
ChannelUserevent string
ChannelVarset string
ContactInfo string
ContactStatusChange string
DeviceStateChanged string
Dial string
EndpointStateChange string
MissingParams string
Peer string
PeerStatusChange string
PlaybackContinuing string
PlaybackFinished string
PlaybackStarted string
RecordingFailed string
RecordingFinished string
RecordingStarted string
StasisEnd string
StasisStart string
TextMessageReceived string
}
EventTypes enumerates the list of event types
var Events EventTypes
Events is the instance for grabbing event types
func (*EventTypes) Parse ¶
func (ev *EventTypes) Parse(msg *Message) Event
Parse parses the message into the specific eventer
type FormatLangPair ¶
FormatLangPair describes the format and language of a sound file
type LiveRecording ¶
type LiveRecording interface {
// Get gets the Recording by type
Get(name string) *LiveRecordingHandle
// Data gets the data for the live recording
Data(name string) (LiveRecordingData, error)
// Stop stops the live recording
Stop(name string) error
// Pause pauses the live recording
Pause(name string) error
// Resume resumes the live recording
Resume(name string) error
// Mute mutes the live recording
Mute(name string) error
// Unmute unmutes the live recording
Unmute(name string) error
// Delete deletes the live recording
Delete(name string) error
// Scrap Stops and deletes the current LiveRecording
//TODO: reproduce this error in isolation: does not delete. Cannot delete any recording produced by this.
Scrap(name string) error
}
LiveRecording represents a communication path interacting with an Asterisk server for live recording resources
type LiveRecordingData ¶
type LiveRecordingData struct {
Cause string `json:"cause,omitempty"` // If failed, the cause of the failure
Duration DurationSec `json:"duration,omitempty"` // Length of recording in seconds
Format string `json:"format"` // Format of recording (wav, gsm, etc)
Name string `json:"name"` // (base) name for the recording
Silence DurationSec `json:"silence_duration,omitempty"` // If silence was detected in the recording, the duration in seconds of that silence (requires that maxSilenceSeconds be non-zero)
State string `json:"state"` // Current state of the recording
Talking DurationSec `json:"talking_duration,omitempty"` // Duration of talking, in seconds, that has been detected in the recording (requires that maxSilenceSeconds be non-zero)
TargetURI string `json:"target_uri"` // URI for the channel or bridge which is being recorded (TODO: figure out format for this)
}
LiveRecordingData is the data for a stored recording
func (*LiveRecordingData) ID ¶
func (s *LiveRecordingData) ID() string
ID returns the identifier of the live recording
type LiveRecordingHandle ¶
type LiveRecordingHandle struct {
// contains filtered or unexported fields
}
A LiveRecordingHandle is a reference to a stored recording that can be operated on
func NewLiveRecordingHandle ¶
func NewLiveRecordingHandle(name string, s LiveRecording) *LiveRecordingHandle
NewLiveRecordingHandle creates a new stored recording handle
func (*LiveRecordingHandle) Data ¶
func (s *LiveRecordingHandle) Data() (d LiveRecordingData, err error)
Data gets the data for the stored recording
func (*LiveRecordingHandle) Delete ¶
func (s *LiveRecordingHandle) Delete() (err error)
Delete deletes the recording
func (*LiveRecordingHandle) ID ¶
func (s *LiveRecordingHandle) ID() string
ID returns the identifier of the live recording
func (*LiveRecordingHandle) Match ¶
func (s *LiveRecordingHandle) Match(e Event) bool
Match returns true if the event matches the bridge
func (*LiveRecordingHandle) Mute ¶
func (s *LiveRecordingHandle) Mute() (err error)
Mute mutes the recording
func (*LiveRecordingHandle) Pause ¶
func (s *LiveRecordingHandle) Pause() (err error)
Pause pauses the recording
func (*LiveRecordingHandle) Resume ¶
func (s *LiveRecordingHandle) Resume() (err error)
Resume resumes the recording
func (*LiveRecordingHandle) Scrap ¶
func (s *LiveRecordingHandle) Scrap() (err error)
Scrap stops and deletes the recording
func (*LiveRecordingHandle) Unmute ¶
func (s *LiveRecordingHandle) Unmute() (err error)
Unmute mutes the recording
type LogData ¶
type LogData struct {
Name string `json:"channel"`
Configuration string `json:"configuration"`
Type string `json:"type"`
Status string `json:"configuration"`
}
LogData represents the log data
type Logging ¶
type Logging interface {
// Create creates a new log
Create(name string, level string) error
// List the logs
List() ([]LogData, error)
// Rotate rotates the log
Rotate(name string) error
// Delete deletes the log
Delete(name string) error
}
Logging represents a communication path to an Asterisk server for working with logging resources
type Mailbox ¶
type Mailbox interface {
// Get gets a handle to the mailbox for further operations
Get(name string) *MailboxHandle
// List lists the mailboxes in asterisk
List() ([]*MailboxHandle, error)
// Data gets the current state of the mailbox
Data(name string) (MailboxData, error)
// Update updates the state of the mailbox, or creates if does not exist
Update(name string, oldMessages int, newMessages int) error
// Delete deletes the mailbox
Delete(name string) error
}
Mailbox is the communication path to an Asterisk server for operating on mailbox resources
type MailboxData ¶
type MailboxData struct {
Name string `json:"name"`
NewMessages int `json:"new_messages"` // Number of new (unread) messages
OldMessages int `json:"old_messages"` // Number of old (read) messages
}
MailboxData respresents the state of an Asterisk (voice) mailbox
type MailboxHandle ¶
type MailboxHandle struct {
// contains filtered or unexported fields
}
A MailboxHandle is a handle to a mailbox instance attached to an ari transport
func NewMailboxHandle ¶
func NewMailboxHandle(name string, m Mailbox) *MailboxHandle
NewMailboxHandle creates a new mailbox handle given the name and mailbox transport
func (*MailboxHandle) Data ¶
func (mh *MailboxHandle) Data() (MailboxData, error)
Data gets the current state of the mailbox
func (*MailboxHandle) ID ¶
func (mh *MailboxHandle) ID() string
ID returns the identifier for the mailbox handle
type Message ¶
type Message struct {
RawMessage
Type string `json:"type"`
}
Message is the first extension of the RawMessage type, containing only a Type
func NewMessage ¶
NewMessage constructs a Message from a byte slice
type MessageRawer ¶
MessageRawer provides operations to get raw message data
type MissingParams ¶
type MissingParams struct {
EventData
Params []string `json:"params"` // A list of the missing parameters
}
MissingParams - "Error event sent when required params are missing."
type ModuleData ¶
type ModuleData struct {
Name string `json:"name"`
Description string `json:"description"`
SupportLevel string `json:"support_level"`
UseCount int `json:"use_count"`
Status string `json:"status"`
}
ModuleData is the data for an asterisk module
type ModuleHandle ¶
type ModuleHandle struct {
// contains filtered or unexported fields
}
ModuleHandle is the reference to an asterisk module
func NewModuleHandle ¶
func NewModuleHandle(name string, m Modules) *ModuleHandle
NewModuleHandle returns a new module handle
func (*ModuleHandle) Data ¶
func (mh *ModuleHandle) Data() (ModuleData, error)
Data gets the module data
func (*ModuleHandle) ID ¶
func (mh *ModuleHandle) ID() string
ID returns the identifier for the module
type Modules ¶
type Modules interface {
Get(name string) *ModuleHandle
List() ([]*ModuleHandle, error)
Load(name string) error
Reload(name string) error
Unload(name string) error
Data(name string) (ModuleData, error)
}
Modules is the communication path for interacting with the asterisk modules resource
type OriginateRequest ¶
type OriginateRequest struct {
Endpoint string `json:"endpoint"` // Endpoint to use (tech/resource notation)
Timeout int `json:"timeout,omitempty"` // Dial Timeout in seconds (-1 = no limit)
CallerID string `json:"callerId,omitempty"` // CallerID to set for outgoing call
// One set of:
Context string `json:"context,omitempty"` // Drop the channel into the dialplan
Extension string `json:"extension,omitempty"`
Priority int64 `json:"priority,omitempty"`
// OR
App string `json:"app,omitempty"` // Associate channel to Stasis (Ari) application
AppArgs string `json:"appArgs,omitempty"` // Arguments to the application
// Channel ID declarations
ChannelID string `json:"channelId,omitempty"` // Optionally assign channel id
OtherChannelID string `json:"otherChannelId,omitempty"` // Optionally assign second channel's id (only for local channels)
Variables map[string]string `json:"variables,omitempty"` // Channel variables to set
}
OriginateRequest is the basic structure for all channel creation methods
type Peer ¶
type Peer struct {
EventData
Address string `json:"address,omitempty"` // The IP address of the peer.
Cause string `json:"cause,omitempty"` // An optional reason associated with the change in peer_status.
PeerStatus string `json:"peer_status"` // The current state of the peer. Note that the values of the status are dependent on the underlying peer technology.
Port string `json:"port,omitempty"` // The port of the peer.
Time string `json:"time,omitempty"` // The last known time the peer was contacted.
}
Peer - "Detailed information about a remote peer that communicates with Asterisk."
type PeerStatusChange ¶
type PeerStatusChange struct {
EventData
Endpoint EndpointData `json:"endpoint"`
Peer Peer `json:"peer"`
}
PeerStatusChange - "The state of a peer associated with an endpoint has changed."
func (*PeerStatusChange) GetEndpointIDs ¶
func (evt *PeerStatusChange) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type Playback ¶
type Playback interface {
// Get gets the handle to the given playbacl ID
Get(id string) *PlaybackHandle
// Data gets the playback data
Data(id string) (PlaybackData, error)
// Control performs the given operation on the current playback
Control(id string, op string) error
// Stop stops the playback
Stop(id string) error
// Subscribe subscribes on the playback events
Subscribe(id string, n ...string) Subscription
}
Playback represents a communication path for interacting with an Asterisk server for playback resources
type PlaybackContinuing ¶
type PlaybackContinuing struct {
EventData
Playback PlaybackData `json:"playback"` // Playback control object
}
PlaybackContinuing - "Event showing the continuation of a media playback operation from one media URI to the next in the list."
func (*PlaybackContinuing) GetPlaybackIDs ¶
func (evt *PlaybackContinuing) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type PlaybackData ¶
type PlaybackData struct {
ID string `json:"id"` // Unique ID for this playback session
Language string `json:"language,omitempty"`
MediaURI string `json:"media_uri"` // URI for the media which is to be played
State string `json:"state"` // State of the playback operation
TargetURI string `json:"target_uri"` // URI of the channel or bridge on which the media should be played (follows format of 'type':'name')
}
PlaybackData represents the state of a playback
type PlaybackEvent ¶
type PlaybackEvent interface {
GetPlaybackIDs() []string
}
A PlaybackEvent is an event with one or more playback IDs
type PlaybackFinished ¶
type PlaybackFinished struct {
EventData
Playback PlaybackData `json:"playback"` // Playback control object
}
PlaybackFinished - "Event showing the completion of a media playback operation."
func (*PlaybackFinished) Destroyed ¶
func (evt *PlaybackFinished) Destroyed() (playbackID string)
Destroyed returns the playbacK ID that was finished by this event. Used by the proxy to route events to dialogs.
func (*PlaybackFinished) GetPlaybackIDs ¶
func (evt *PlaybackFinished) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type PlaybackHandle ¶
type PlaybackHandle struct {
// contains filtered or unexported fields
}
PlaybackHandle is the handle for performing playback operations
func NewPlaybackHandle ¶
func NewPlaybackHandle(id string, pb Playback) *PlaybackHandle
NewPlaybackHandle builds a handle to the playback id
func (*PlaybackHandle) Control ¶
func (ph *PlaybackHandle) Control(op string) (err error)
Control performs the given operation
func (*PlaybackHandle) Data ¶
func (ph *PlaybackHandle) Data() (pd PlaybackData, err error)
Data gets the playback data
func (*PlaybackHandle) ID ¶
func (ph *PlaybackHandle) ID() string
ID returns the identifier for the playback
func (*PlaybackHandle) Match ¶
func (ph *PlaybackHandle) Match(e Event) bool
Match returns true if the event matches the playback
func (*PlaybackHandle) Subscribe ¶
func (ph *PlaybackHandle) Subscribe(n ...string) Subscription
Subscribe subscribes the list of channel events
type PlaybackStarted ¶
type PlaybackStarted struct {
EventData
Playback PlaybackData `json:"playback"` // Playback control object
}
PlaybackStarted - "Event showing the start of a media playback operation."
func (*PlaybackStarted) Created ¶
func (evt *PlaybackStarted) Created() (playbackID, otherID string)
Created returns the playbacK ID that we created plus the ID that the playback is operating on (a bridge or channel). Used by the proxy to route events to dialogs
func (*PlaybackStarted) GetPlaybackIDs ¶
func (evt *PlaybackStarted) GetPlaybackIDs() (sx []string)
GetPlaybackIDs gets the playback IDs for the event
type Playbacker ¶
type Playbacker interface {
Playback() Playback
}
Playbacker contains a playback transport
type RawMessage ¶
type RawMessage struct {
// contains filtered or unexported fields
}
RawMessage contains the raw bytes
func (*RawMessage) DecodeAs ¶
func (m *RawMessage) DecodeAs(v MessageRawer) error
DecodeAs converts the current message to a new message type
func (*RawMessage) GetRaw ¶
func (m *RawMessage) GetRaw() *[]byte
GetRaw gets the raw value of this RawMessage
func (*RawMessage) SetRaw ¶
func (m *RawMessage) SetRaw(raw *[]byte)
SetRaw sets the raw value of this RawMessage
type Recording ¶
type Recording struct {
Stored StoredRecording
Live LiveRecording
}
Recording is a namespace for the recording types
type RecordingEvent ¶
type RecordingEvent interface {
GetRecordingIDs() []string
}
A RecordingEvent is an event with one or more recording IDs
type RecordingFailed ¶
type RecordingFailed struct {
EventData
Recording LiveRecordingData `json:"recording"` // Recording control object
}
RecordingFailed - "Event showing failure of a recording operation."
func (*RecordingFailed) Destroyed ¶
func (evt *RecordingFailed) Destroyed() string
Destroyed returns the item that gets destroyed by this event
func (*RecordingFailed) GetRecordingIDs ¶
func (evt *RecordingFailed) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type RecordingFinished ¶
type RecordingFinished struct {
EventData
Recording LiveRecordingData `json:"recording"` // Recording control object
}
RecordingFinished - "Event showing the completion of a recording operation."
func (*RecordingFinished) Destroyed ¶
func (evt *RecordingFinished) Destroyed() string
Destroyed returns the item that gets destroyed by this event
func (*RecordingFinished) GetRecordingIDs ¶
func (evt *RecordingFinished) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type RecordingOptions ¶
type RecordingOptions struct {
// Format is the file format/encoding to which the recording should be stored.
// This will usually be one of: slin, ulaw, alaw, wav, gsm.
// If not specified, this will default to slin.
Format string
// MaxDuration is the maximum duration of the recording, after which the recording will
// automatically stop. If not set, there is no maximum.
MaxDuration time.Duration
// MaxSilence is the maximum duration of detected to be found before terminating the recording.
MaxSilence time.Duration
// Exists determines what should happen if the given recording already exists.
// Valid values are: "fail", "overwrite", or "append".
// If not specified, it will default to "fail"
Exists string
// Beep indicates whether a beep should be played to the recorded
// party at the beginning of the recording.
Beep bool
// Terminate indicates whether the recording should be terminated on
// receipt of a DTMF digit.
// valid options are: "none", "any", "*", and "#"
// If not specified, it will default to "none" (never terminate on DTMF).
Terminate string
}
RecordingOptions describes the set of options available when making a recording.
type RecordingStarted ¶
type RecordingStarted struct {
EventData
Recording LiveRecordingData `json:"recording"` // Recording control object
}
RecordingStarted - "Event showing the start of a recording operation."
func (*RecordingStarted) GetRecordingIDs ¶
func (evt *RecordingStarted) GetRecordingIDs() (sx []string)
GetRecordingIDs gets the recording IDs for the event
type Sender ¶
type Sender interface {
Send(m *Message)
}
A Sender is an entity which can send event bus messages
type SetID ¶
type SetID struct {
Group string `json:"group"` // group id (not name? why string?)
User string `json:"user"` // user id (not name? why string?)
}
SetID describes a userid/groupid pair
type SnoopOptions ¶
type SnoopOptions struct {
Direction string // Direction of audio to spy on (in, out, both)
Whisper string // Direction of audio to whisper into (in, out, both)
AppArgs string // The arguments to pass to the new application.
}
SnoopOptions enumerates the non-required arguments for the snoop operation
type Sound ¶
type Sound interface {
// List returns available sounds limited by the provided filters.
// Valid filters are "lang", "format", and nil (no filter)
List(filters map[string]string) ([]*SoundHandle, error)
// Get returns a handle pointer to the sound for further interaction
Get(name string) *SoundHandle
// Data returns the Sound's data
Data(name string) (SoundData, error)
}
Sound represents a communication path to the asterisk server for Sound resources
type SoundData ¶
type SoundData struct {
Formats []FormatLangPair `json:"formats"`
ID string `json:"id"`
Text string `json:"text,omitempty"`
}
SoundData describes a media file which may be played back
type SoundHandle ¶
type SoundHandle struct {
// contains filtered or unexported fields
}
SoundHandle provides a wrapper to a Sound interface for operations on a specific Sound
func NewSoundHandle ¶
func NewSoundHandle(name string, snd Sound) *SoundHandle
NewSoundHandle creates a new handle to the sound name
func (*SoundHandle) Data ¶
func (sh *SoundHandle) Data() (sd SoundData, err error)
Data retrieves the data for the Sound
type StasisEnd ¶
type StasisEnd struct {
EventData
Channel ChannelData `json:"channel"`
}
StasisEnd - "Notification that a channel has left a Stasis application."
func (*StasisEnd) GetChannelIDs ¶
GetChannelIDs gets the channel IDs for the event
type StasisStart ¶
type StasisStart struct {
EventData
Args []string `json:"args"` // Arguments to the application
Channel ChannelData `json:"channel"`
ReplaceChannel ChannelData `json:"replace_channel,omitempty"`
}
StasisStart - "Notification that a channel has entered a Stasis application."
func (*StasisStart) GetChannelIDs ¶
func (evt *StasisStart) GetChannelIDs() (sx []string)
GetChannelIDs gets the channel IDs for the event
type StatusInfo ¶
type StatusInfo struct {
LastReloadTime DateTime `json:"last_reload_time"`
StartupTime DateTime `json:"startup_time"`
}
StatusInfo describes the state of an Asterisk system
type StoredRecording ¶
type StoredRecording interface {
// List lists the recordings
List() ([]*StoredRecordingHandle, error)
// Get gets the Recording by type
Get(name string) *StoredRecordingHandle
// data gets the data for the stored recording
Data(name string) (StoredRecordingData, error)
// Copy copies the recording to the destination name
Copy(name string, dest string) (*StoredRecordingHandle, error)
// Delete deletes the recording
Delete(name string) error
}
StoredRecording represents a communication path interacting with an Asterisk server for stored recording resources
type StoredRecordingData ¶
StoredRecordingData is the data for a stored recording
func (StoredRecordingData) ID ¶
func (d StoredRecordingData) ID() string
ID returns the identifier for the stored recording.
type StoredRecordingHandle ¶
type StoredRecordingHandle struct {
// contains filtered or unexported fields
}
A StoredRecordingHandle is a reference to a stored recording that can be operated on
func NewStoredRecordingHandle ¶
func NewStoredRecordingHandle(name string, s StoredRecording) *StoredRecordingHandle
NewStoredRecordingHandle creates a new stored recording handle
func (*StoredRecordingHandle) Copy ¶
func (s *StoredRecordingHandle) Copy(dest string) (h *StoredRecordingHandle, err error)
Copy copies the stored recording
func (*StoredRecordingHandle) Data ¶
func (s *StoredRecordingHandle) Data() (d StoredRecordingData, err error)
Data gets the data for the stored recording
func (*StoredRecordingHandle) Delete ¶
func (s *StoredRecordingHandle) Delete() (err error)
Delete deletes the recording
func (*StoredRecordingHandle) ID ¶
func (s *StoredRecordingHandle) ID() string
ID returns the identifier for the stored recording
type Subscriber ¶
type Subscriber interface {
Subscribe(n ...string) Subscription
}
A Subscriber is an entity which can create ARI event subscriptions
type Subscription ¶
type Subscription interface {
Events() chan Event
Cancel()
}
A Subscription is a subscription on series of ARI events
type SystemInfo ¶
SystemInfo describes information about the Asterisk system
type TextMessage ¶
type TextMessage interface {
// Send() sends a text message to an endpoint
Send(from, tech, resource, body string, vars map[string]string) error
// SendByURI sends a text message to an endpoint by free-form URI
SendByURI(from, to, body string, vars map[string]string) error
}
TextMessage needs some verbiage here
type TextMessageData ¶
type TextMessageData struct {
Body string `json:"body"` // The body (text) of the message
From string `json:"from"` // Technology-specific source URI
To string `json:"to"` // Technology-specific destination URI
Variables []TextMessageVariable `json:"variables,omitempty"`
}
TextMessageData describes text message
type TextMessageReceived ¶
type TextMessageReceived struct {
EventData
Endpoint EndpointData `json:"endpoint,omitempty"`
Message TextMessageData `json:"message"`
}
TextMessageReceived - "A text message was received from an endpoint."
func (*TextMessageReceived) GetEndpointIDs ¶
func (evt *TextMessageReceived) GetEndpointIDs() (sx []string)
GetEndpointIDs gets the bridge IDs for the event
type TextMessageVariable ¶
TextMessageVariable describes a key-value pair (associated with a text message)
Source Files
¶
- application.go
- asterisk.go
- bridge.go
- bus.go
- callerid.go
- channel.go
- client.go
- config.go
- datetime.go
- device.go
- dialplan.go
- direction.go
- dtmf.go
- endpoint.go
- events.go
- events_gen.go
- liveRecording.go
- logger.go
- logging.go
- mailbox.go
- message.go
- modules.go
- originate.go
- playback.go
- recording.go
- sound.go
- storedRecording.go
- textMessage.go
- variables.go
Directories
¶
| Path | Synopsis |
|---|---|
|
_examples
|
|
|
helloworld
command
|
|
|
sendDtmf-nats
command
|
|
|
stasisStart
command
|
|
|
stasisStart-nats
command
|
|
|
client
|
|
|
mock
Package mock is a mock client used for unit testing
|
Package mock is a mock client used for unit testing |
|
ext
|
|
|
audio/audiouri
Package audiouri provides conversions for common sounds to asterisk-supported audio URIs
|
Package audiouri provides conversions for common sounds to asterisk-supported audio URIs |
|
prompt
Package prompt is the utility section for working with asterisk prompts.
|
Package prompt is the utility section for working with asterisk prompts. |
|
internal
|
|
|
eventgen
command
|
|