Skip to content
This repository was archived by the owner on Jan 4, 2019. It is now read-only.

Latest commit

History

58 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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"
)
funcmain() {
ami, err:=gami.Dial("127.0.0.1:5038")
iferr!=nil {
log.Fatal(err)
}
ami.Run()
deferami.Close()
//install managergofunc() {
for {
select {
//handle network errorscaseerr:=<-ami.NetError:
log.Println("Network Error:", err)
//try new connection every second<-time.After(time.Second)
iferr:=ami.Reconnect(); err==nil {
//call start actionsami.Action("Events", gami.Params{"EventMask": "on"})
}
caseerr:=<-ami.Error:
log.Println("error:", err)
//wait events and processcaseev:=<-ami.Events:
log.Println("Event Detect: %v", *ev)
//if want type of eventslog.Println("EventType:", event.New(ev))
}
}
}()
iferr:=ami.Login("admin", "root"); err!=nil {
log.Fatal(err)
}
if_, errPing:=ami.Action("Ping", nil); errPing!=nil {
log.Fatal(errPing)
}
//async actionsrsPing, rsErr:=ami.AsyncAction("Ping", gami.Params{"ActionID": "pingo"})
ifrsErr!=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 TLSami, err:=gami.Dial("127.0.0.1:5038")
//if certificate is trustedami, err:=gami.Dial("127.0.0.1:5039", gami.UseTLS)
//if self signed certificateami, err:=gami.Dial("127.0.0.1:5039", gami.UseTLS, gami.UnsecureTLS)
//if custom tls configurationami, 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 IDTYPE TEST
NewchannelYES
NewextenYES
NewstateYES
DialYES
ExtensionStatusYES
HangupYES
PeerStatusYES
PeerEntryYES
VarSetYES
AgentLoginYES
AgentsYES
AgentLogoffYES
AgentConnectYES
RTPReceiverStatsYES
RTPSenderStatsYES
BridgeYES

About

GO - Asterisk AMI Interface

Topics

Resources

Stars

34 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages