gami alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view gami alternatives based on common mentions on social networks and blogs.
-
githubql
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). -
openaigo
OpenAI GPT3/3.5 and GPT4 ChatGPT API Client Library for Go, simple, less dependencies, and well-tested -
gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.
CodeRabbit: AI Code Reviews for Developers
Do you think we are missing an alternative of gami or a related project?
Popular Comparisons
README
GAMI
GO - Asterisk AMI Interface
communicate with the Asterisk AMI, Actions and Events.
Example connecting to Asterisk and Send Action get Events.
package main
import (
"log"
"github.com/bit4bit/gami"
"github.com/bit4bit/gami/event"
"time"
)
func main() {
ami, err := gami.Dial("127.0.0.1:5038")
if err != nil {
log.Fatal(err)
}
ami.Run()
defer ami.Close()
//install manager
go func() {
for {
select {
//handle network errors
case err := <-ami.NetError:
log.Println("Network Error:", err)
//try new connection every second
<-time.After(time.Second)
if err := ami.Reconnect(); err == nil {
//call start actions
ami.Action("Events", gami.Params{"EventMask": "on"})
}
case err := <-ami.Error:
log.Println("error:", err)
//wait events and process
case ev := <-ami.Events:
log.Println("Event Detect: %v", *ev)
//if want type of events
log.Println("EventType:", event.New(ev))
}
}
}()
if err := ami.Login("admin", "root"); err != nil {
log.Fatal(err)
}
if _, errPing := ami.Action("Ping", nil); errPing != nil {
log.Fatal(errPing)
}
//async actions
rsPing, rsErr := ami.AsyncAction("Ping", gami.Params{"ActionID": "pingo"})
if rsErr != nil {
log.Fatal(rsErr)
}
if _, err := ami.Action("Events", gami.Params{"EventMask":"on"}); err != nil {
log.Fatal(err)
}
log.Println("ping:", <-rsPing)
}
TLS SUPPORT
In order to use TLS connection to manager interface you could Dial
with additional parameters
//without TLS
ami, err := gami.Dial("127.0.0.1:5038")
//if certificate is trusted
ami, err := gami.Dial("127.0.0.1:5039", gami.UseTLS)
//if self signed certificate
ami, err := gami.Dial("127.0.0.1:5039", gami.UseTLS, gami.UnsecureTLS)
//if custom tls configuration
ami, err := gami.Dial("127.0.0.1:5039", gami.UseTLSConfig(&tls.Config{}))
WARNING: Only Asterisk >=1.6 supports TLS connection to AMI and it needs additional configuration(follow the Asterisk AMI configuration documentation)
CURRENT EVENT TYPES
The events use documentation and struct from PAMI.
use bit4bit/gami/event.New() for get this struct from raw event
EVENT ID | TYPE TEST |
---|---|
Newchannel | YES |
Newexten | YES |
Newstate | YES |
Dial | YES |
ExtensionStatus | YES |
Hangup | YES |
PeerStatus | YES |
PeerEntry | YES |
VarSet | YES |
AgentLogin | YES |
Agents | YES |
AgentLogoff | YES |
AgentConnect | YES |
RTPReceiverStats | YES |
RTPSenderStats | YES |
Bridge | YES |