andi powers
Use this ´fireAtMidnight´ method to run your skill everyday at midnight.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´fireAtSundayMidnight´ method to run your skill at midnight on Sunday.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´returnSuccess´ method to return a successful skill activity result.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this power to compose and send chat responses formatted for Andi chat in PL.
Use ´addArticle´ method to add an article to the NLP response
is the text string displayed in the article
is the hyperlink for the given text
is the skill activity
defines the placement of the article in the list of message articles. Property value is provided as a zero-based index. If omitted, article will be added to the end of the array.
Use ´addSimpleHeader´ method to add a simple header text message to any NLP response
is the text string displayed as header
is the ISkillActivity containing other types of nlp response
Use ´composeResponse´ method to compose a new NLP response
define the actual results to display in Andi
are actions the user can take based on the response given
Use this to get the top scoring natural language understanding result based on intent.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Use ´sendResponse´ method to send an NLP response
is the response created from ´composeResponse´
Use ´sendSimpleHeader´ method to send a simple header text message response
is the text string displayed as header
skillActivity with nlp response
Use this power to query DataSets
Use this ´getDataSet´ method to get a DataSet client to query on.
the name of the DataSet to query on.
Returns an IDataSetClient to execute queries.
Use this method to generate ITag objects for including in a DialogueResponse
The text string for tag name
fieldTagType Refer to FieldTagTypes documentation (usage andiSkills.FieldTagTypes.Info) - different tag types options are Info, Warning, ValueForTarget and Help.
Text to show - tag message that gets displayed to the user
A collection of ContextCommands to invoke when the tag is clicked
Custom icon url that can be sent from server and used by client side Andi to prefix icon before the text message
Use this method to send a dialogue response with tags
The text string displayed as the header
A collection of ITag objects. Use 'composeDialogTag' to create objects.
Use this power to send skill run result through email channel. Email channel supports html body format.
composeEmail can be used to generate an email message - very similar to sendEmail but does not send actual email - still work in progress
Use this parameter to give a category name for your message - multiple messages with the same email frequencyType, email category, email subject and same to address are grouped together and sent as one email to reduce email noise. Leave it blank for a simple email message.
Refer to EmailFrequencyTypes documentation (usage andiSkills.EmailFrequencyTypes.OneMinute)- Currently supported email frequency types are: OneMinute (use this frequency if you want send email in the next one minute), FiveMinute, Hourly, Daily (use this frequency if you want to send email daily at 8 am EST), Weekly, BeginningOfMonth and EndOfMonth.
Refer to EmailUserModel documentation - array of email users - e.g. [new andiSkills.EmailUserModel("your name", "yourname@youremailaddress.com")].
From address that will be attached to the email.
Subject for the email message - all emails with the same subject, same email frequency and same email to address will be combined together as one email to reduce email noise.
Body of the email - this can be plain text or html.
Any special footer message - e.g. link to a disclaimer notice.
Any special header text - this is displayed at the beginning of the email body in bold format.
Returns a promise, once it is completed it should place message in the email queue.
Use this ´sendEmail´ method to send email notifications.
Use this parameter to give a category name for your message - multiple messages with the same email frequencyType, email category, email subject and same to address are grouped together and sent as one email to reduce email noise. Leave it blank for a simple email message.
Refer to EmailFrequencyTypes documentation (usage andiSkills.EmailFrequencyTypes.OneMinute)- Currently supported email frequency types are: OneMinute (use this frequency if you want send email in the next one minute), FiveMinute, Hourly, Daily (use this frequency if you want to send email daily at 8 am EST), Weekly, BeginningOfMonth and EndOfMonth.
Refer to EmailUserModel documentation - array of email users - e.g. [new andiSkills.EmailUserModel("your name", "yourname@youremailaddress.com")].
From address that will be attached to the email.
Subject for the email message - all emails with the same subject, same email frequency and same email to address will be combined together as one email to reduce email noise.
Body of the email - this can be plain text or html.
Any special footer message - e.g. link to a disclaimer notice.
Any special header text - this is displayed at the beginning of the email body in bold format.
Returns a promise, once it is completed it should place message in the email queue.
Use this power to get specific type of event i.e. Application vs Natural Language events
Use this ´checkDailyMidnightEvent´ method to check if it is midnight - use this event for running special skills at this time.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´checkFiveMinuteIntervalEvent´ method to check if five minutes has elapsed.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´checkHourlyIntervalEvent´ method to check if an hour has elapsed.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´checkOneMinuteIntervalEvent´ method to check if one minute has elapsed.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´checkWeeklySundayMidnightEvent´ method to check if it is sunday midnight - use this event for running special skills at this time.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´getApplicationEvent´ method to get an event in IApplicationEvent format - refer to IApplicationEvent documentation.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns IApplicationEvent if the event is an application event otherwise null.
Use this ´getNaturalLanguageEvent´ method to get an event in INaturalLanguageEvent format - refer to INaturalLanguageEvent documentation.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns INaturalLanguageEvent if the event is a natural language event otherwise null.
Use this ´returnSuccess´ method to return a successful skill activity result.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this power to send field tag message that gets displayed in the browser through client side Andi. Currently, only works on PrecisionLender Opportunity Page UI.
composeFieldTag can be used to generate field tag message - very similar to sendFieldTag but does not send actual field tag
Refer to FieldTagTypes documentation (usage andiSkills.FieldTagTypes.Info) - different tag types options are Info, Warning, ValueForTarget and Help.
Unique key to represent field tag on browser - always ensure that this key is updated to a unique value before deploying any skill.
Display order number - client side Andi can use this for sorting the order of the field tag messages.
Text to show - field tag message that gets displayed to the user.
Name of fields in an array where this message gets displayed on the UI. Consult your UI developer for finding out field names available on a page.
(Optional) Used to display field tags under a custom header. Required Properties: headerText - string used when displaying the custom header.
Client side function that can be written within the skill to evaluate any special condition using the client side data to determine if field tag should be displayed - data passed are client side api, client side model, comparehash (a special selected field hash) and custom bag that can be sent from server as a custom parameter (i.e. the second last parameter of this method) .
Similar to shouldIShow parameter except when action is set, the field tag message is shown as an actionable link and on click of that link the code inside this action function is invoked.
Compare hash that can be sent from server and used by client side shouldIShow or action function.
Custom object that can be sent from server and used by client side shouldIShow or action function.
Custom icon url that can be sent from server and used by client side Andi to prefix icon before the text message.
Returns a promise, once it is completed it should send the field tag message to client side Andi.
Use this ´sendFieldTag´ method to send field tag message to the client side Andi.
Refer to FieldTagTypes documentation (usage andiSkills.FieldTagTypes.Info) - different tag types options are Info, Warning, ValueForTarget and Help.
Unique key to represent field tag on browser - always ensure that this key is updated to a unique value before deploying any skill.
Display order number - client side Andi can use this for sorting the order of the field tag messages.
Text to show - field tag message that gets displayed to the user.
Name of fields in an array where this message gets displayed on the UI. Consult your UI developer for finding out field names available on a page.
(Optional) Used to display field tags under a custom header. Required Properties: headerText - string used when displaying the custom header.
Client side function that can be written within the skill to evaluate any special condition using the client side data to determine if field tag should be displayed - data passed are client side api, client side model, comparehash (a special selected field hash) and custom bag that can be sent from server as a custom parameter (i.e. the second last parameter of this method) .
Similar to shouldIShow parameter except when action is set, the field tag message is shown as an actionable link and on click of that link the code inside this action function is invoked.
Compare hash that can be sent from server and used by client side shouldIShow or action function.
Custom object that can be sent from server and used by client side shouldIShow or action function.
Custom icon url that can be sent from server and used by client side Andi to prefix icon before the text message.
Returns a promise, once it is completed it should send the field tag message to client side Andi.
Use this 'sendFieldTags' method to send multiple field tag messages to the client side Andi. Use 'composeFieldTag' to build the individual field tags.
A collection of FieldTagModel objects. Use 'composeFieldTag' to create objects.
Use this power to save attachments
use this ´storeCsvFileForCurrentUser´ method to store a csv file for a current user's conversation
the CSV data to be stored
optional file name for the CSV file
Returns StoreAttachmentResponse which includes the fileId which is used to help identify the newly created CSV file and an indicator whether the power was successful at storing the attachment
Use this power to easily return success or failure from initialize method
Use this ´initializeFailure´ method incase of a failure on initialization - it encapsulates the promise return types.
Returns a promise, once it is completed it should send the initialization failure message.
Use this ´initializeSuccess´ method to return success on initialization- it encapsulates the promise return types - e.g. .
Returns a promise, once it is completed it should send the initialization success message.
Use this power to make external https get or post request.
Use this ´get´ method to make an https get call.
Url value that get request will call.
Header values for get request.
request timeout in milliseconds, optional parameter
Returns a promise when completed should return the object received from https get request.
Use this ´post´ method to make an https post call.
Url that post request will call.
Header values for post request.
Json post body for post request.
request timeout in milliseconds, optional parameter
Returns a promise, once it is completed it should return the object received from https post request.
Use this power to get secret keys that are encrypted and stored at organization/application/skill level from Andi Gallery.
Use this ´getOrganizationAppLevelKey´ method to retrieve any encrypted key configured and stored from Andi Gallery at the organization/application level.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
name of the key to retrieve.
Returns the key value object if present otherwise null.
Use this power to easily return true or false from shouldIRun method
Use this ´shouldIRunTrue´ method to return false from shouldIRunTrue- it encapsulates the promise return types.
Returns a promise, once it is completed it should return false which will prevent skill run function from executing.
Use this ´shouldIRunTrue´ method to return true from shouldIRunTrue- it encapsulates the promise return types.
Optional relevance that can be used to weight the priority of a skill run.
Returns a promise, once it is completed it should return true which will cause skill run function to be called.
Use this power to retrieve files already stored from gallery at organization/skill level.
Use this ´get2dCSVFile´ method to retrieve a 2 dimensional array of from a CSV file stored at current skill level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the 2 dimensional array from the file data otherwise null.
Use this ´getCSVFile´ method to retrieve an array of objects from a CSV file stored at current skill level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the an array of objects from the file data otherwise null.
Use this ´getCSVFileOf´ method to retrieve an array of objects of Type T from a CSV file stored at current skill level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the array
use this boolean flag to auto map data types of a csv value, by default all values are mapped as string type
Return an array of objects of type T from the file data otherwise null.
Use this ´getFile´ method to retrieve any file stored at current skill level.
filepath along with the filename to retrieve.
Returns the file buffer value if present otherwise null.
Use this ´getJSONFile´ method to retrieve a JSON object from a file stored at current skill level.
filepath filepath along with the filename to retrieve.
Return the JSON object from the file data otherwise null.
Use this ´getJSONFileOfT´ method to retrieve an object from of Type T from a file stored at current skill level.
filepath filepath along with the filename to retrieve.
Return the object of Type T from the file data otherwise null.
Use this ´putFile´ method to create or update any file at current skill level.
filepath along with the filename to store.
file data buffer to store.
Returns true if store operation is successful otherwise false.
Use this ´get2dCSVFile´ method to retrieve a 2 dimensional array of from a CSV file stored at installed level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the 2 dimensional array from the file data otherwise null.
Use this ´getCSVFile´ method to retrieve an array of objects from a CSV file stored at installed level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the array of objects from the file data otherwise null.
Use this ´getCSVFileOf´ method to retrieve an array of objects of Type T from a CSV file stored at installed level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the array
use this boolean flag to auto map data types of a csv value, by default all values are mapped as string type
Return the array of objects of type T from the file data otherwise null.
Use this ´getFile´ method to retrieve any file stored at installed skill level.
filepath along with the filename to retrieve.
Returns the file buffer value if present otherwise null.
Use this ´getJSONFile´ method to retrieve a JSON object from a file stored at installed skill level.
filepath filepath along with the filename to retrieve.
Return the JSON object from the file data otherwise null.
Use this ´getJSONFileOfT´ method to retrieve an object from of Type T from a file stored at installed skill level.
filepath filepath along with the filename to retrieve.
Return the object of Type T from the file data otherwise null.
Use this ´putFile´ method to create or update any file at installed skill level.
filepath along with the filename to store.
file data buffer to store.
Returns true if store operation is successful otherwise false.
Use this ´get2dCSVFile´ method to retrieve a 2 dimensional array of from a CSV file stored at publisher level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the JSON object from the file data otherwise null.
Use this ´getCSVFile´ method to retrieve an array of objects from a CSV file stored at publisher level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the 2 dimensional array
Return the 2 dimensional array from the file data otherwise null.
Use this ´getCSVFileOf´ method to retrieve an array of objects of Type T from a CSV file stored at publisher level.
filepath filepath along with the filename to retrieve.
options used by the CSV Parser to generate the array
use this boolean flag to auto map data types of a csv value, by default all values are mapped as string type
Return the array of objects of type T from the file data otherwise null.
Use this ´getFile´ method to retrieve any file stored at publisher level.
filepath along with the filename to retrieve.
Returns the file buffer value if present otherwise null.
Use this ´getJSONFile´ method to retrieve a JSON object from a file stored at publisher level.
filepath filepath along with the filename to retrieve.
Return the JSON object from the file data otherwise null.
Use this ´getJSONFileOfT´ method to retrieve an object from of Type T from a file stored at publisher level.
filepath filepath along with the filename to retrieve.
Return the object of Type T from the file data otherwise null.
Use this ´putFile´ method to create or update any file at publisher level.
filepath along with the filename to store.
file data buffer to store.
Returns true if store operation is successful otherwise false.
Short debug message to help troubleshoot your skill.
Use this ´checkForFitFiles´ to check that the script and data files are stored and available. If true, fit is ready to be run.
Name of the script file to check for.
Name of the data file to check for.
IShouldIRunResponse result of true if files exist, false otherwise.
Use this ´checkForPredictFiles´ to check that the script and model files are stored and available. If true, predict is ready to be run.
Name of the script file to check for.
Name of the model file to check for.
IShouldIRunResponse result of true if files exist, false otherwise.
Use this ´fit´ to run fit using the script and data files.
Name of the script file to use.
Name that will be used to store the output of the fit execution.
An object containing any custom data to be used during the fit execution.
A promise.
Use this ´predict´ to run predict using the script and model files.
Name of the script file to use.
Name of the model file to use, if there is one. This should be the model output by the fit execution.
An object containing any custom data to be used during the predict execution.
Response result with data to use to be used in skill.
Use this ´checkForFitFiles´ to check that the script and data files are stored and available. If true, fit is ready to be run.
Name of the script file to check for.
Name of the data file to check for.
IShouldIRunResponse result of true if files exist, false otherwise.
Use this ´checkForPredictFiles´ to check that the script and model files are stored and available. If true, predict is ready to be run.
Name of the script file to check for.
Name of the model file to check for.
IShouldIRunResponse result of true if files exist, false otherwise.
Use this ´fit´ to run fit using the script and data files.
Name of the script file to use.
Name that will be used to store the output of the fit execution
An object containing any custom data to be used during the fit execution.
A promise.
Use this ´predict´ to run predict using the script and model files.
Name of the script file to use.
Name of the model file to use. This should be the model output by the fit execution.
An object containing any custom data to be used during the predict execution.
Response result with data to use to be used in skill.
Use this ´getMLCurrentSkillPowers´ method to get the power collection to use for machine learning with current skill level data. The power collection returned will utilize current skill level storage when accessing/storing files needed for writing a skill with this power.
Current skill level power set collection to use.
Use this ´getMLInstallerPowers´ method to get the power collection to use for machine learning with installed skill level data. The power collection returned will utilize installed skill level storage when accessing/storing files needed for writing a skill with this power.
Installed skill level power set collection to use.
precisionLender powers
Use this power to query precisionLender api endpoints. This power will use precisionLender service username and password secret keys which can be configure and stored as a secret from Andi Gallery.
Use this ´delayGet´ method to get data from api endpoints with a delayed timeout. This delayed timeout in seconds will help in avoiding any request throttling for PL endpoints.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
api endpoint url to query.
delay in seconds that will be used to wait before sending the get request.
request timeout in milliseconds, optional parameter
Returns response result from api endpoint when successful otherwise returns null.
Use this ´get´ method to get data from api endpoints.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
api endpoint url to query.
request timeout in milliseconds, optional parameter
Returns response result from api endpoint when successful otherwise returns null.
Use this power the take advantage of the PrecisionLender calculation engines.
Assumption Set API
Get the assumption set for given context
Master Commitment based calculations
Get the calculation engine for master commitment based calculations
the opportunity to load into the engine
Recalculate the opportunityEventEntity
Deposit based calculations
Get the calculation engine for deposit based calculations
the deposit account to load into the engine
Recalculate the depositAccountEntity
Loan based calculations
Get the calculation engine for loan based calculations
the loan account to load into the engine
Get the customer loan amortization entries from commercialLoanAccountEntity
Recalculate the commercialLoanAccountEntity
Using the engine, solve for different properties based on the parameters passed in.
Opportunity based calculations
Get the calculation engine for opportunity based calculations
the opportunity to load into the engine
Recalculate the opportunityEventEntity
Other fees based calculations
Get the calculation engine for other fees based calculations
the other fees account to load into the engine
Recalculate the otherFeesAccountEntity
Scenario based calculations
Get the calculation engine for scenario based calculations
the engine model to load into the engine
Recalculate the engineModel
Use this power to examine an application event for opportunity specific data.
Use this power to get opportunity related details from PrecisionLender API endpoints.
Use this ´getOpportunityRelationshipImpactResponse´ method to get v2 OpportunityRelationshipImpactResponse object from PrecisionLender API endpoint.
opportunity Id to use when PrecisionLender API endpoint is called.
Returns the OpportunityRelationshipImpactResponse object. Returns null if the call fails or the opportunity does not exist.
Use this ´getOpportunityResponse´ method to get v2 OpportunityResponse object from PrecisionLender API endpoint.
opportunity Id to use when PrecisionLender API endpoint is called.
Returns the OpportunityResponse object. Returns null if the call fails or the opportunity does not exist.
Use this getRelationshipForOpportunity method to get v2 FullRelationshipResponse object associated with an Opportunity from PrecisionLender API endpoint.
opportunity Id to use when PrecisionLender API endpoint is called.
Returns the FullRelationshipResponse object for the given opportunityId if there is an associated Relationship otherwise null.
Use this ´getCurrentOpportunityModel´ method to get Opportunity model if available within the conversation.
Returns a Promise that will return a PrecisionLender.OpportunityModel if available otherwise null.
Use this ´getDepositAccounts´ method to get deposit accounts from the event data.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns deposit accounts as an array if it is an opportunity change event otherwise returns null.
Use this ´getLoanAccounts´ method to get loan accounts from the event data.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns loan accounts as an array if it is an opportunity change event otherwise returns null.
Use this ´getMasterCommitment´ method to get the Master Commitment from the current skillContext if it exists
Returns the Master Commitment object if it exists otherwise returns null
Use this ´getOpportunityChangeEventData´ method to get opportunity change data from the event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns event data as an object if it is an opportunity change event otherwise returns null.
Use this ´getOtherFeesAccounts´ method to get other/fees accounts from the event data.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns other/fees accounts as an array if it is an opportunity change event otherwise returns null.
Use this ´getSavedOpportunityModel´ method to get Saved Opportunity model if available.
Returns a Promise that will return a PrecisionLender.Opportunity.OpportunityResponseModel.SavedOpportunity if available otherwise returns null
Use this ´getMasterCommitment´ method to get Tranches LoanAccount object from the Master Commitment
Returns an array of the Tranche Loan Accounts.
Use this ´getTranches´ method to get an array of Tranche Entries for the Master Commitment
Return an array of Tranche Entries.
Use this ´hasMasterCommitment´ method to determine if the current skillContext has a Master Commitment
true if it exists or false if it does not exist.
Use this ´isDepositAccountChangeEvent´ method to check if an incoming event is a deposit account change event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´isLoanAccountChangeEvent´ method to check if an incoming event is a loan change event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´isOpportunityChangeEvent´ method to check if an incoming event is an opportunity change event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this ´isOpportunitySavedClickEvent´ method to check if an incoming event is an opportunity saved click event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false. Returns null if the call fails or the opportunity does not exist.
Use this ´isOtherAccountChangeEvent´ method to check if an incoming event is an other account change event.
current skill context - i.e. the passed in parameter to shouldIRun or run method.
Returns true or false.
Use this power to get relationship specific data.
Use this power to get relationship related details from PrecisionLender API endpoints.
Use this ´getFullRelationshipResponse´ method to get v2 FullRelationshipResponse object from PrecisionLender API endpoint.
relationship Id to use when PrecisionLender API endpoint is called.
Returns the FullRelationshipResponse object.
Use this ´getRelationshipAccountSummaryResponse´ method to get v2 RelationshipAccountSummaryResponse object from PrecisionLender API endpoint.
relationship Id to use when PrecisionLender API endpoint is called.
account type (i.e. Loan, Deposit, Other ) to use when PrecisionLender API endpoint is called.
Returns the RelationshipAccountSummaryResponse object. Returns null if the call fails or the relationship does not exist.
Use this ´getRelationshipSummaryResponse´ method to get v2 RelationshipSummaryResponse object from PrecisionLender API endpoint.
relationship Id to use when PrecisionLender API endpoint is called.
Returns the RelationshipSummaryResponse object. Returns null if the call fails or the relationship does not exist.
Use this power to call any PrecisionLender overridable skills.
Use this ´appendDefaultDefinition´ method to add any existing PrecisionLender definition found using the nlp request (i.e. raw query text).
current ISkillActivity response containing nlp results.
Returns ISkillActivity response with the default definition appended, if no definition is found, it will simply return the ISkillActivity response.
Use this ´getSearchResults´ method to query the PrecisionLender article and definitions Knowledge Base.
Azure Search query string
optional Azure Search filter
optional number of results to return (default is 4)
Returns an array of search results
Sends a Support ticket to PrecisionLenders (ZenDesk). The properties of the ticket are drawn from the calling event.
optional subject. Will be backfilled by default if undefined.
optional body . Will be backfilled by default if undefined.
Generated using TypeDoc
Powers are a set of utility functions available to skill writers that enables them to easily perform common actions such as an HTTP GET request or send an email. Within the skill's ShouldIRun or Run methods, powers are available through the passed in `skillContext: andiSkills.ISkillContext` parameter. You can access the powers available to any skill through the `skillContext.powers` property. For example, skill writers can use the email power to deliver their insight through email.
Here is a code snippet for sending email from inside the skill Run method that uses the EmailFrequencyType of OneMinute which means this email message will be sent within the next minute whenever this skill code executes:
skillContext.powers.andi.email.sendEmail( "opportunity-changed-email", andiSkills.EmailFrequencyTypes.OneMinute, [new andiSkills.EmailUserModel("yourname", "yourname@youremail.com")], "reply@youremail.com", "Test Email", "This is a test email.", "", "" );