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)
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 |