MyGit

ivahaev/amigo

Fork: 46 Star: 105 (更新于 2024-12-15 07:10:03)

license: MIT

Language: Go .

Asterisk AMI connector in golang

最后发布版本: v0.1.10 ( 2020-05-16 01:40:48)

GitHub网址

amigo

Asterisk AMI connector on golang.

Attention! API has been changed in v0.1.2. Please read the godoc.

Usage is pretty simple.

Installation:

go get github.com/ivahaev/amigo

Using

Import module to your project:

import "github.com/ivahaev/amigo"

Then use:

package main

import (
	"fmt"

	"github.com/ivahaev/amigo"
)

// Creating hanlder functions
func DeviceStateChangeHandler(m map[string]string) {
	fmt.Printf("DeviceStateChange event received: %v\n", m)
}

func DefaultHandler(m map[string]string) {
	fmt.Printf("Event received: %v\n", m)
}

func main() {
	fmt.Println("Init Amigo")

	settings := &amigo.Settings{Username: "username", Password: "password", Host: "host"}
	a := amigo.New(settings)

	a.Connect()

	// Listen for connection events
	a.On("connect", func(message string) {
		fmt.Println("Connected", message)
	})
	a.On("error", func(message string) {
		fmt.Println("Connection error:", message)
	})

	// Registering handler function for event "DeviceStateChange"
	a.RegisterHandler("DeviceStateChange", DeviceStateChangeHandler)

	// Registering default handler function for all events.
	a.RegisterDefaultHandler(DefaultHandler)

	// Optionally create channel to receiving all events
	// and set created channel to receive all events
	c := make(chan map[string]string, 100)
	a.SetEventChannel(c)

	// Check if connected with Asterisk, will send Action "QueueSummary"
	if a.Connected() {
		result, err := a.Action(map[string]string{"Action": "QueueSummary", "ActionID": "Init"})
		// If not error, processing result. Response on Action will follow in defined events.
		// You need to catch them in event channel, DefaultHandler or specified HandlerFunction
		fmt.Println(result, err)
	}
	
	ch := make(chan bool)
	<-ch
}

SIC!

You should not modify received events, because it can be read in another amigo goroutine. If you need to modify, you should copy all values to another map and modify it.

最近版本更新:(数据更新于 2024-10-02 06:45:36)

2020-05-16 01:40:48 v0.1.10

2017-07-11 16:01:54 v0.1.9

2017-07-11 03:05:14 v0.1.8

2017-03-19 00:22:32 v0.1.7

2017-03-09 04:29:47 v0.1.6

2017-02-27 06:07:02 v0.1.5

2017-02-27 05:45:00 v0.1.4

2017-02-26 16:46:47 v0.1.3

ivahaev/amigo同语言 Go最近更新仓库

2024-12-22 07:52:58 navidrome/navidrome

2024-12-21 20:15:12 SagerNet/sing-box

2024-12-21 03:25:54 SpecterOps/BloodHound

2024-12-19 23:11:24 shadow1ng/fscan

2024-12-19 21:50:56 minio/minio

2024-12-19 10:04:39 istio/istio