Skip to content

Latest commit

 

History

History
178 lines (95 loc) · 6.86 KB

README.md

File metadata and controls

178 lines (95 loc) · 6.86 KB

Demo Plugin: Server

The server component of this demo plugin is written in Go and net/rpc. It relies on configuration in plugin.json to implement each of the supported hooks.

Each of the included files or folders is outlined below.

These are metadata files managed by vgo for dependency management. While vgo is currently in beta, it will launch as part of the standard Go 1.11 tooling and stabilize in subsequent releases. It was preferred for this project over dep since it does not require locating your plugin in the $GOPATH.

This is the entry point of your plugin binary, that in turn invokes plugin.ClientMain to wire up RPC communication between your plugin and the Mattermost Server.

This is a file generated by the build/manifest tool that captures the plugin id from plugin.json. It simplifies the need to hard-code the plugin id in multiple places by exporting a constant for use instead.

This file defines the Plugin struct, embedding plugin.MattermostPlugin to automatically handle the wiring up the API when the plugin starts. It contains public fields that are automatically unmarshalled from plugin.json as part of the OnConfiguration hook in configuration.go.

OnActivate

This demo implementation logs a message to the demo channel whenever the plugin is activated.

OnDeactivate

This demo implementation logs a message to the demo channel whenever the plugin is deactivated.

OnConfigurationChange

This demo implementation ensures the configured demo user and channel are created for use by the plugin. Also, if a configuration change is detected then the plugin will log a message to the demo channel with the updated configuration values.

ChannelHasBeenCreated

This demo implementation logs a message to the demo channel whenever a channel is created.

UserHasJoinedChannel

This demo implementation logs a message to the demo channel whenever a user joins a channel.

UserHasLeftChannel

This demo implementation logs a message to the demo channel whenever a user leaves a channel.

ExecuteCommand

This demo implementation responds to a /demo_plugin command, allowing the user to enable or disable the demo plugin's hooks functionality (but leave the command and webapp enabled).

The /ephemeral command demonstrates ephemeral interactive usage of SendEphemeralPost, UpdateEphemeralPost, and DeleteEphemeralPost.

The /ephemeral_override command demonstrates the override of ephemeral posts in the webapp.

The /crash command demonstrates crashing the plugin (and the server recovering/restarting the plugin).

The /dialog command demonstrates Interactive Dialogs. Use /dialog help for its usage in this demo plugin.

The /interactive command demonstrates the usage of interactive message buttons.

ServeHTTP

This demo implementation sends back whether or not the plugin hooks are currently enabled. It is used by the web app to recover from a network reconnection and synchronize the state of the plugin's hooks.

MessageWillBePosted

This demo implementation rejects posts in the demo channel, as well as posts that @-mention the demo plugin user.

MessageWillBeUpdated

This demo implementation rejects posts that @-mention the demo plugin user.

MessageHasBeenPosted

This demo implementation logs a message to the demo channel whenever a message is posted, unless by the demo plugin user itself.

MessageHasBeenUpdated

This demo implementation logs a message to the demo channel whenever a message is updated, unless by the demo plugin user itself.

UserHasJoinedTeam

This demo implementation logs a message to the demo channel in the team whenever a user joins the team.

UserHasLeftTeam

This demo implementation logs a message to the demo channel in the team whenever a user leaves the team.

UserWillLogIn

This demo implementation rejects login attempts by the demo user.

UserHasLoggedIn

This demo implementation logs a message to the demo channel whenever a user logs in.

UserHasBeenCreated

This demo implementation logs a message to the demo channel whenever a new user is created.

FileWillBeUploaded

This demo implementation logs a message to the demo channel whenever a file is uploaded.

Plugin Settings

The following settings are available in the demo plugin system console page to demonstrate what is available via the Mattermost Plugin Settings Schema.

system-console-demo-settings

Channel Name

A text setting type to define the channel that the demo plugin will create and use to post messages.

Username

A text setting type to define the username value that will be given to the demo user.

Demo User Last Name

A radio setting type to define the last name value that will be given to the demo user.

Text Style

A dropdown setting type that changes the text style of messages posted by the demo plugin. Options include italics and bold.

Note: this setting doesn't apply to OnConfigurationChange log messages.

Random Secret

A generated setting type for a random string that can be generated in the demo plugin settings page of the system console. The demo plugin will look for this value in any message posted and will paste the secret message to the demo channel when it is found.

Secret Message

A longtext setting type to define the message that is posted to the demo channel when the random secret is posted.

Enable Mention User

A bool setting type to control whether the mention user is tagged(@'ed) on all demo plugin messages.

Note: this setting doesn't apply to OnConfigurationChange log messages.

Mention User

A username setting type to define the user that will be tagged(@'ed) on all demo plugin messages.

Note: this setting doesn't apply to OnConfigurationChange log messages.