Skip to content

wenerme/astgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1b5bc38 · Sep 26, 2023

History

41 Commits
Jun 17, 2021
Sep 26, 2023
Jun 17, 2021
May 27, 2021
May 27, 2021
May 27, 2021
Jun 17, 2021
May 27, 2021
Apr 30, 2021
May 27, 2021
May 27, 2021
Jun 17, 2021
May 15, 2021
May 15, 2021

Repository files navigation

Asterisk to Go GoDoc Build Status Coverage Status Go Report Card

Libs for Golang to work with Asterisk

  • AMI
  • AGI

AMI

  • Async Action
  • Sync Action
  • Event Subscribe
  • Auto Reconnect
  • Generated Action with document
  • Generated Event with document
  • Generated Client - Action -> Response
package main

import (
  "context"
  "fmt"
  "github.com/wenerme/astgo/ami"
)

func main() {
  boot := make(chan *ami.Message, 1)

  conn, err := ami.Connect(
    "192.168.1.1:5038",
    ami.WithAuth("admin", "admin"), // AMI auth
    // add predefined subscriber
    ami.WithSubscribe(ami.SubscribeFullyBootedChanOnce(boot)),
    ami.WithSubscribe(func(ctx context.Context, msg *ami.Message) bool {
      fmt.Println(msg.Format()) // log everything
      return true               // keep subscribe
    }, ami.SubscribeSend(), // subscribe send message - default recv only
    ))
  if err != nil {
    panic(err)
  }
  <-boot
  // AMI now FullyBooted
  _ = conn
}

AGI

  • FastAGI
  • AGI Bin
  • Generated Command
  • Generated Client
package main

import (
	"github.com/wenerme/astgo/agi"
)

func main() {
	// agi.Listen for FastAGI
	agi.Run(func(session *agi.Session) {
		client := session.Client()
		client.Answer()
		client.StreamFile("activated", "#")
		client.SetVariable("AGISTATUS", "SUCCESS")
		client.Hangup()
	})
}

Asterisk Database Model

  • GORM Based Model

Roadmap

  • [-] Asterisk Database Model
  • Stasis
  • ARI