# GoCryptoTrader package Communication_manager

<img src="/common/gctlogo.png?raw=true" width="350px" height="350px" hspace="70">


[![Build Status](https://github.com/thrasher-corp/gocryptotrader/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/thrasher-corp/gocryptotrader/actions/workflows/tests.yml)
[![Software License](https://img.shields.io/badge/License-MIT-orange.svg?style=flat-square)](https://github.com/thrasher-corp/gocryptotrader/blob/master/LICENSE)
[![GoDoc](https://godoc.org/github.com/thrasher-corp/gocryptotrader?status.svg)](https://godoc.org/github.com/thrasher-corp/gocryptotrader/engine/communication_manager)
[![Coverage Status](http://codecov.io/github/thrasher-corp/gocryptotrader/coverage.svg?branch=master)](http://codecov.io/github/thrasher-corp/gocryptotrader?branch=master)
[![Go Report Card](https://goreportcard.com/badge/github.com/thrasher-corp/gocryptotrader)](https://goreportcard.com/report/github.com/thrasher-corp/gocryptotrader)


This communication_manager package is part of the GoCryptoTrader codebase.

## This is still in active development

You can track ideas, planned features and what's in progress on this Trello board: [https://trello.com/b/ZAhMhpOy/gocryptotrader](https://trello.com/b/ZAhMhpOy/gocryptotrader).

Join our slack to discuss all things related to GoCryptoTrader! [GoCryptoTrader Slack](https://join.slack.com/t/gocryptotrader/shared_invite/enQtNTQ5NDAxMjA2Mjc5LTc5ZDE1ZTNiOGM3ZGMyMmY1NTAxYWZhODE0MWM5N2JlZDk1NDU0YTViYzk4NTk3OTRiMDQzNGQ1YTc4YmRlMTk)

## Current Features for Communication_manager
+ The communication manager subsystem is used to push events raised in GoCryptoTrader to any enabled communication system such as a Slack server
+ In order to modify the behaviour of the communication manager subsystem, you can edit the following inside your config file under `communications`:

### slack

| Config | Description | Example |
| ------ | ----------- | ------- |
| enabled | Determines whether the push communications to a Slack server | `true` |
| verbose | If enabled will log more details to your logger output | `false` |
| targetChannel | The channel to send communications to | `announcements` |
| verificationToken | The token generated by Slack to allow interactions with the server and channel | `iamafaketoken` |

### smsGlobal

| Config | Description | Example |
| ------ | ----------- | ------- |
| name | The name of the SMS sender | `SMSGlobal` |
| from | Who the text name is from | `Skynet` |
| enabled | Determines whether the push communications to the SMS service | `true` |
| verbose | If enabled will log more details to your logger output | `false` |
| username | The username to use with the SMS provider | `username` |
| password | The username to use with the SMS provider | `password` |
| contacts | The `name` `number` of the user people you wish to send SMS to and whether it is `enabled` | `"name": "StyleGherkin", "number": "1231424", "enabled": true` |

### smtp

| Config | Description | Example |
| ------ | ----------- | ------- |
| name | The name of the service | `SMTP` |
| enabled | Determines whether the push communications to a email server | `true` |
| verbose | If enabled will log more details to your logger output | `false` |
| host | The SMTP host | `smtp.google.com` |
| port | The port to use | `537` |
| accountName | Your username | `username` |
| accountPassword | Your password | `password` |
| from | The display name of the sender | `Jeff Bezos` |
| recipientList | A comma delimited list of addresses to send alerts to | `bill@gates.com` |

### telegram

| Config | Description | Example |
| ------ | ----------- | ------- |
| name | The name to be displayed | `Telegram` |
| enabled | Determines whether the push communications to a Telegram server | `true` |
| verbose | If enabled will log more details to your logger output | `false` |
| verificationToken | The token generated by Telegram to allow you to send messages | `iamafaketoken` |



### Please click GoDocs chevron above to view current GoDoc information for this package

## Contribution

Please feel free to submit any pull requests or suggest any desired features to be added.

When submitting a PR, please abide by our coding guidelines:

+ Code must adhere to the official Go [formatting](https://golang.org/doc/effective_go.html#formatting) guidelines (i.e. uses [gofmt](https://golang.org/cmd/gofmt/)).
+ Code must be documented adhering to the official Go [commentary](https://golang.org/doc/effective_go.html#commentary) guidelines.
+ Code must adhere to our [coding style](https://github.com/thrasher-corp/gocryptotrader/blob/master/doc/coding_style.md).
+ Pull requests need to be based on and opened against the `master` branch.

## Donations

<img src="https://github.com/thrasher-corp/gocryptotrader/blob/master/web/src/assets/donate.png?raw=true" hspace="70">

If this framework helped you in any way, or you would like to support the developers working on it, please donate Bitcoin to:

***bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc***
