Asterisk Manager Interface (AMI) client in Go.
This code is based on C libami library interface
The following command will install the AMI client.
go get -u github.com/heltonmarx/goami/ami
To test this package with Asterisk it's necessary set the file /etc/asterisk/manager.conf
with configuration bellow:
[general]
enabled = yes
port = 5038
bindaddr = 127.0.0.1
[admin]
secret = admin
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
Login/Logoff:
package main
import (
"flag"
"fmt"
"log"
"github.com/heltonmarx/goami/ami"
)
var (
username = flag.String("username", "admin", "AMI username")
secret = flag.String("secret", "admin", "AMI secret")
host = flag.String("host", "127.0.0.1:5038", "AMI host address")
)
func main() {
flag.Parse()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
socket, err := ami.NewSocket(ctx, *host)
if err != nil {
log.Fatalf("socket error: %v\n", err)
}
if _, err := ami.Connect(ctx, socket); err != nil {
log.Fatalf("connect error: %v\n", err)
}
//Login
uuid, _ := ami.GetUUID()
if err := ami.Login(ctx, socket, *username, *secret, "Off", uuid); err != nil {
log.Fatalf("login error: %v\n", err)
}
fmt.Printf("login ok!\n")
//Logoff
fmt.Printf("logoff\n")
if err := ami.Logoff(ctx, socket, uuid); err != nil {
log.Fatalf("logoff error: (%v)\n", err)
}
fmt.Printf("goodbye !\n")
}
This projects documentation can be found on godoc at goami and supports:
- master: Asterisk 14 AMI Actions
- ami.v10: Asterisk 10 AMI Actions
- ami.v13: Asterisk 13 AMI Actions
- ami.v14: Asterisk 14 AMI Actions
MIT-LICENSE. See LICENSE or the LICENSE file provided in the repository for details.