This bot is what controls the @Slacker bot on the sndevs.com workspace.
πππ
CONTRIBUTORS must follow all guidelines in CONTRIBUTING.md or run the risk of having your Pull Requests labeled as spam.
πππ
See the Issues tab for parser ideas. Make sure to leave a comment on an issue if you're working on it.
Can be done without pulling this app into a ServiceNow instance.
This is the preferred method for adding simple call & response parsers (see Bowtie when chuck is mentioned, or Clap Back for examples)
main
branchIf approved, your new parser automatically goes live for the bot's immediate use!
This method requires more setup, but is the preferred method for more complex parsers and functionalities, as it provides a method to robustly test before submitting a pull request.
System Applications
=> Studio
Import From Source Control
main
branchAn accepted Pull Request and merge does not necessarily mean the functionality will go live immediately, as an admin for the host instance will need to pull the application into ServiceNow.
Features
> Event Subscriptions
Request URL
with: https://YOURDEVINSTANCE.service-now.com/api/x_snc_slackerbot/slackerbot_event_handler
When you tab out of the field, make sure the URL is "Verified" before you proceed.
Settings
> Install App
Install to Workspace
buttonview
and do
permissionsAllow
buttonBot User OAuth Token
for the ServiceNow system property configuration laterFeatures
> Event Subscriptions
Enable Events
Request URL
with: https://YOURDEVINSTANCE.service-now.com/api/x_snc_slackerbot/slackerbot_event_handler
When you tab out of the field, make sure the URL is "Verified" before you proceed.
Subscribe to bot events
sectionAdd bot User Event
buttonmessage.channels
message.groups
Save Changes
buttonFeatures
> OAuth & Permissions
Bot Token Scopes
Add an OAuth Scope
buttonchat:write
Settings
> Install App
Install to Workspace
buttonview
and do
permissionsAllow
buttonBot User OAuth Token
for the ServiceNow system property configuration laterx_snc_slackerbot_parser
tablex_snc_slackerbot_payload
table to make sure SN is receiving messagesTo fill your Parsers x_snc_slackerbot_parser
table with all the parsers that exist on this repo:
x_snc_slackerbot_parser.list
in your filter navigator and press enter)This syncs your table to this repo, if you rather sync it to another repo, change the value of your x_snc_slackerbot.Parsers_Sync_Repo
system property.
The Parsers folder on ServiceNowDevProgram/SlackerBot is set up to send changes to the ServiceNow instance that @Slacker is hosted on (automatically, on every commit). To do this for your own fork and ServiceNow instance:
Secrets
and Actions
add the following repository secrets:
SN_INSTANCE_NAME
your ServiceNow instance nameADMIN_USERNAME
the username of an admin account on your ServiceNow instanceADMIN_PASSWORD
the password of the above accountsomething.js
x_snc_slackerbot_parser
table and verify the file was uploadedNever commit your tokens to GitHub
System Properties
x_snc_slackerbot.SlackerBot.token
is your bot's user token. Required to send messages back to your workspacex_snc_slackerbot.SlackerBot.supertoken
is any admin token for your server. Used for deleting messages (see in-app SRAPI).x_snc_slackerbot.maps.token
is your Google Maps token (if you wish to use the !iss parser)Scripted Rest APIs (SRAPIs)
SlackerBot Event Handler
is used to validate to the Events handler and to convert incoming chats to the x_snc_slackerbot_payload tableSlackerBotGitHub
is used to automate the creation of parsers from ServiceNowDevProgram/SlackerBot/Parserscurrent.text
the entire text of the chat that is being parsedcurrent.ts
the timestamp of the chatcurrent.thread_ts
if the chat was in a thread, the original message's timestampcurrent.channel
the channel's unique ID that the chat was sent incurrent.user.user_id
the chat's sender's unique IDcurrent.user.name
the chat's sender's display namenew x_snc_slackerbot.Slacker().send_chat(
param 1, param 2, param 3)
How to send chats back to your workspace after parsing.
param 1
Required reference object. The gliderecord that contains the channel and timestamps. Should almost always be current
If you do not have a gliderecord, this can be faked by providing a JSON object. The only key that is required is a channel, eg. {"channel":"ABC123"}
param 2
Required string
or object
Required string
. The chat message to be sent as plaintext. Can be an expression, eg. originalNumber + ' is the result.
Required object
. The chat content to be sent, as per the Block Kit API format. Object requires text
and blocks
properties. See Block Kit API Reference
{
"text": "",
"blocks": [
{ "type": "header", "text": { "type": "plain_text", "text": "Exemplar" } }
]
}
param 3
Optional boolean. If set to true, will always push chat to the thread instead of to the main channel chat. Useful if param 2 is expected to be long and you don't want to flood chat. Defaults to false if not provided.
new x_snc_slackerbot.Slacker().send_reaction(
param 1, param 2)
How to send reactions back to a specific chat after parsing.
param 1
Required reference object. The gliderecord that contains the channel and timestamps. Should almost always be current
{"channel":"ABC123","ts":"0123456789"}
param 2
Required string. The name of the emoji to send. Do not include surrounding :
. Eg. joy
and not :joy: