📚 goami2 - Awesome Go Library for Third-party APIs

Go Gopher mascot for goami2

AMI v2 library for Asterisk PBX.

🏷️ Third-party APIs
📂 Libraries for accessing third party APIs.
15 stars
View on GitHub 🔗

Detailed Description of goami2

goami2: Simple Asterisk Manager Interface (AMI) library

Build Status Go Report Card codecov GitHub go.mod Go version of a Go module GitHub release Go Reference

Go library that provides interface to Asteris AMI. The library uses given net.Conn (tcp or tls), login and starts reading AMI messages from connection and parse them into *Message object. Provides simple interface to send messages to AMI. It uses re2c to create very fast protocol parser. Run "make bench" for benchmark tests.

Usage example:


import (
	"errors"
	"fmt"
	"log"
	"net"

	"github.com/staskobzar/goami2"
)

func main() {
	conn, err := net.Dial("tcp", "asterisk.host:5038")
	if err != nil {
		log.Fatalln(err)
	}

	// login and create client
	client, err := goami2.NewClient(conn, "admin", "pa55w0rd")
	if err != nil {
		log.Fatalln(err)
	}

	log.Println("client connected and logged in")

	// create AMI Action message and send to the asterisk.host
	msg := goami2.NewAction("CoreStatus")
	msg.AddActionID()
	client.Send(msg.Byte())

	defer client.Close() // close connections and all channels
	for {
		select {
		case msg := <-client.AllMessages():
			log.Printf("Got message: %s\n", msg.JSON())
		case err := <-client.Err():
			// terminate on network closed
			if errors.Is(err, goami2.ErrEOF) {
				log.Fatalf("Connection error: %s", err)
			}
			log.Printf("WARNING: AMI client error: %s", err)
		}
	}
}

Docs

See documentation at https://pkg.go.dev/github.com/staskobzar/goami2