Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For most systems the dialed no. doesn't change during the life of a call.

setRoutedNo(number)

...

setCurrentTarget(target)

- called Called by the core routing logic whenever a call matches a route target including when the call enters the very first route.

The routed no is essentially updated each time the call transition into a new call routeroute Target (the Gosub step is the main method of changing the current Target).


The BaseScriptRoute class exposes the following methods.

...

actionAccountRecording
MethodArgumentsReturn typeComments
VoidVoidStart recording if the agent(s) involved in the call are flagged for recordingdialTrunk trunk, String phoneNo, String options, int timeoutvoid

Dials the given phone number using the selected trunk.

trunk - the trunk to dial over

phoneNo - the phone number to dial

options - any asterisk dial options required.

timeout - the time (in seconds) to wait for the dial to connect.

conferenceString roomNo, String pin, String options

roomNo - The conference room to pass the call to. If the conference room doesn't exist it will be dynamically created.

PIN - the pin number used to control access to the conference room. Pass a blank string if you don't want a PIN assigned to the conference room.

options - any valid asterisk conference room options.

getAccountFromIdLong idAccountLook up an account using the id passed in. The Account object returned is detached from the database.
getAgivoidBaseAgiScriptReturns the BaseAgiScript, this allows direct agi calls to be made against the channel
getArgAsBooleanString fieldNameBooleanTakes a fieldName for the Script and returns the fields value as a Boolean.
getArgAsIntString fieldNameIntegerTakes a fieldName for the Script and returns the fields value as an Integer.
getArgAsLongString fieldNameLongTakes a fieldName for the Script and returns the fields value as a Long.
getArgAsStringString fieldNameStringTakes a fieldName for the Script and returns the fields value as a String.
getBMMFileNameFromIdLong idStringReturns the name of the BMM audio file without the file extension. This is suitable for passing to the 'playback' command which assumes the file doesn't has a file extensions.
getChannelVariableString nameStringGets the value of an Asterisk channel variable.
getDialedNoVoidStringReturns the number that was dialed to trigger this call route. For inbound calls this will be the DID, for outbound calls it will by the number dialed from the handsets.
getDirectionVoidau.com.noojee.callrouting.CallDirection

Returns the CallDirection enum indicating which direction the call is flowing in. CallDirection has the following possible values:

CallDirection.INBOUND

CallDirection.PASS_THRU - not used on most systems

CallDirection.INBOUND

getHandsetFromIdLong idHandset

Looks up the Handset indentified by id and returns a detached entity

getPhoneNoForAccountIdLong idStringReturns the phone currently attached to the given account.
getQueueFromIdLong idQueueLooks up the Queue indentified by id and returns a detached entity
getRoutedNoNoneStringThe current RoutedNo. See setRoutedNo() for details.
getSourceNoNoneStringReturns the source phone no. that originated the call. For an inbound call it is the callers caller id, for an outbound call it is the handsets extension no.
getSourceRealmNoneRealmReturns the Realm for the current call. When any call enters the system a Realm is set to describe how the call entered the system. The two Realms are Realm.INTERNAL and Realm.EXTERNAL




getSystemVariableString keySystemEntityreturns a detatched system variable entity for the given key.
getTrunkDialStringFromIdLong idString

Returns the Dial String for the trunk whose primary key is id.

getTrunkFromIdLong idTrunkReturns the Trunk object whose primary key is id.
getVariableString nameStringGets the value of the Route Script variable with the given name. Route Script Variables have a life cycle linked to the underlying call. Route Script Variables are much faster than Channel Variables.
getVoiceMailBoxFromIdLongVoiceMailBoxreturns the VoiceMailBox entity for the given id.
gosubRouteContext context, String numbertargetvoidSend the call to the given context with the given number target as the 'deliveredTo' number.
queueQueue queue, String options, int timeoutvoid

queuename - the name of the queue to send the call to

options - any valid asterisk queue options

timeout - the amount of time to wait for the call to be connected before exiting the queue.

The deliveredTo number gets set to the Agents extension when the call is answered by an agent.

setChannelVariableString name, String valueVoidSets the value of an Asterisk channel variable.
setDialedNoString numberVoidAllows the dialedNo to be modified by a script.
setSource

String number, Realm realm

VoidSet the number the call came from and the realm (INTERNAL/EXTERNAL ETC)
setVariableString name, String valueVoidSets the value of the Route Script variable with the given name creating it if it doesn't already exists.
 substituteVariablesString messageStringParses the passed message looking for any encoded Route variable names and replacing the encode variable name with the variables value. The encoding scheme is of the form: ${variablename}
startRecordingVoidboolean force, String tagVoidUnconditionally starts recording the current call. If recording is already running then a new leg is started.
stopRecordingVoidboolean forceVoidStops recording.
voicemailString vmbox, String optionsvoid

Connects the caller to the given voicemail box.

vmbox - the voicemail box no.

options - any valid asterisk voicemail box options.

variableExistsString nameBooleanreturns true if the variable with the given name exists and is non-zero in length.




Variables:

Call Routes provide a number of default system variables which can be access to determine information pertaining to the current call or the system as a whole. The following variables can be access by calling getVariableValue(variableName) on the Api.

Please note that these variables are readonly and as such you can't update them however the system may update some of them as a call progresses through a route.

Variable NameDescriptionScope
dialedNo
nj.DeliveredTo

When a call is initially routed or Gosub is called the value in nj.Target is used to pattern match against possible targets in the context.  When a specific target is selected 'nj.DeliveredTo' is set to the value of the Target that matches.

e.g. nj.Target might be: 03 8320 8100 but nj.DeliveredTo might be 03 XXXX XXXX.

Gosub
nj.DialedNo

The number that was dialed to cause the current call. For an inbound call this will be the DID for an outbound call this will be the no. dialed from the staff members handset.

The dialed no. will not change over the life of a call.

You should be aware that this value can be modified by calling setDialedNo

Call

Call
nj.Realm

Set by the Trunk through which the call entered the system. Even calls from internal extensions (handsets) enter Routes via a Trunk.

The Realm is used to determine the direction of the call. The system uses the Source realm and the Delivered To realm to determine the direction of the call. The systems ability to determine a calls direction is important when determining whether a call should be recorded for an Account as well as for general reporting purposes. It should be noted that superficially it would appear to be quite easy to determine a calls direction however in practices it can be quite complicated as a call can actually changed direction mid way through the call.

Call
nj.SourceNo

Set by the core routing each time a call is originated. For inbound calls this is the caller id, for calls dialed from a handset this is the handset extension no.


Call

nj.Target

The target typically starts out with the same value as the 'nj.SourceNo' but unlike nj.SourceNo the variable nj.Target is updated each time the Gosub command is called. njTarget is updated to match the second argument of the Gosub command (context, target).

When a Gosub returns it will reset the nj.Target variable to the value it was before Gosub was called.

Gosub