Skip to content

retailcrm/mg-bot-api-client-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage GitHub release Go Report Card GoLang version pkg.go.dev

Message Gateway Bot API Go client

Install

go get -u -v github.com/retailcrm/mg-bot-api-client-go

Usage

package main

import (
	"fmt"
	"net/http"

	"github.com/retailcrm/mg-bot-api-client-go/v1"
)

func main() {
    var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d49bcba99be73bff503ea6")
    message := MessageSendRequest{
        Scope:   "public",
        Content: "test",
        ChatID:  12,
    }

    data, status, err := c.MessageSend(message)
    if err != nil {
        t.Errorf("%d %v", status, err)
    }

    fmt.Printf("%v", data.MessageID)
}

Websocket Example

package main

import (
	"encoding/json"
	"log"
	"strings"

	"github.com/gorilla/websocket"
	"github.com/retailcrm/mg-bot-api-client-go/v1"
)

func main() {
	var client = v1.New("https://token.url", "cb8ccf05e38a47543ad8477d49bcba99be73bff503ea6")

	url, headers, err := client.WsMeta([]string{"message_new"})
	if err != nil {
		log.Fatal("wsMeta:", err)
	}

	wsConn, _, err := websocket.DefaultDialer.Dial(url, headers)
	if err != nil {
		log.Fatal("dial:", err)
	}

	for {
		var wsEvent v1.WsEvent
		err = wsConn.ReadJSON(&wsEvent)
		if err != nil {
			log.Fatal("ReadJSON:", err)
		}

		var eventData v1.WsEventMessageNewData
		err = json.Unmarshal(wsEvent.Data, &eventData)
		if err != nil {
			log.Fatal("Unmarshal:", err)
		}

		if !strings.HasPrefix(eventData.Message.Content, "Hello") {
			continue
		}

		message := v1.MessageSendRequest{
			Scope:   "public",
			Content: "Bonjour!",
			ChatID:  eventData.Message.ChatID,
			Type:    "text",
		}

		_, status, err := client.MessageSend(message)
		if err != nil {
			log.Fatalf("%d %v", status, err)
		}
	}
}