From b7b8f8bf111c6f9c5f96b8bb783902810dd40a40 Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Sun, 28 Jul 2019 19:47:25 +0100 Subject: [PATCH] remove agent readme --- agent/README.md | 197 ------------------------------------------------ 1 file changed, 197 deletions(-) delete mode 100644 agent/README.md diff --git a/agent/README.md b/agent/README.md deleted file mode 100644 index 76e6dc23..00000000 --- a/agent/README.md +++ /dev/null @@ -1,197 +0,0 @@ -# Agent - -Agent is a library used to create commands, inputs and robot services - -## Getting Started - -- [Commands](#commands) - Commands are functions executed by the bot based on text based pattern matching. -- [Inputs](#inputs) - Inputs are plugins for communication e.g Slack, Telegram, IRC, etc. -- [Services](#services) - Write bots as micro services - -## Commands - -Commands are functions executed by the bot based on text based pattern matching. - -### Write a Command - -```go -import "github.com/micro/go-micro/agent/command" - -func Ping() command.Command { - usage := "ping" - description := "Returns pong" - - return command.NewCommand("ping", usage, desc, func(args ...string) ([]byte, error) { - return []byte("pong"), nil - }) -} -``` - -### Register the command - -Add the command to the Commands map with a pattern key that can be matched by golang/regexp.Match - -```go -import "github.com/micro/go-micro/agent/command" - -func init() { - command.Commands["^ping$"] = Ping() -} -``` - -### Rebuild Micro - -Build binary -```shell -cd github.com/micro/micro - -// For local use -go build -i -o micro ./main.go - -// For docker image -CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -i -o micro ./main.go -``` - -## Inputs - -Inputs are plugins for communication e.g Slack, HipChat, XMPP, IRC, SMTP, etc, etc. - -New inputs can be added in the following way. - -### Write an Input - -Write an input that satisfies the Input interface. - -```go -type Input interface { - // Provide cli flags - Flags() []cli.Flag - // Initialise input using cli context - Init(*cli.Context) error - // Stream events from the input - Stream() (Conn, error) - // Start the input - Start() error - // Stop the input - Stop() error - // name of the input - String() string -} -``` - -### Register the input - -Add the input to the Inputs map. - -```go -import "github.com/micro/micro/bot/input" - -func init() { - input.Inputs["name"] = MyInput -} -``` - -### Rebuild Micro - -Build binary -```shell -cd github.com/micro/micro - -// For local use -go build -i -o micro ./main.go - -// For docker image -CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -i -o micro ./main.go -``` - -## Services - -The micro bot supports the ability to create commands as micro services. - -### How does it work? - -The bot watches the service registry for services with it's namespace. The default namespace is `go.micro.bot`. -Any service within this namespace will automatically be added to the list of available commands. When a command -is executed, the bot will call the service with method `Command.Exec`. It also expects the method `Command.Help` -to exist for usage info. - - -The service interface is as follows and can be found at [go-micro/agent/proto](https://github.com/micro/go-micro/agent/blob/master/proto/bot.proto) - -``` -syntax = "proto3"; - -package go.micro.bot; - -service Command { - rpc Help(HelpRequest) returns (HelpResponse) {}; - rpc Exec(ExecRequest) returns (ExecResponse) {}; -} - -message HelpRequest { -} - -message HelpResponse { - string usage = 1; - string description = 2; -} - -message ExecRequest { - repeated string args = 1; -} - -message ExecResponse { - bytes result = 1; - string error = 2; -} -``` - -### Example - -Here's an example echo command as a microservice - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/micro/go-micro" - "golang.org/x/net/context" - - proto "github.com/micro/go-micro/agent/proto" -) - -type Command struct{} - -// Help returns the command usage -func (c *Command) Help(ctx context.Context, req *proto.HelpRequest, rsp *proto.HelpResponse) error { - // Usage should include the name of the command - rsp.Usage = "echo" - rsp.Description = "This is an example bot command as a micro service which echos the message" - return nil -} - -// Exec executes the command -func (c *Command) Exec(ctx context.Context, req *proto.ExecRequest, rsp *proto.ExecResponse) error { - rsp.Result = []byte(strings.Join(req.Args, " ")) - // rsp.Error could be set to return an error instead - // the function error would only be used for service level issues - return nil -} - -func main() { - service := micro.NewService( - micro.Name("go.micro.bot.echo"), - ) - - service.Init() - - proto.RegisterCommandHandler(service.Server(), new(Command)) - - if err := service.Run(); err != nil { - fmt.Println(err) - } -} -```