Asterisk AGI 调用
Asterisk 支持 AGI 接口,它支持多种语言,并提供多种语言 SDK,例如 Ruby,Java,PHP,Python,C++,.Net,nodejs,Go。
我使用的 Golang 语言,使用这个github.com/CyCoreSystems/agi
AGI 库。
使用 go 编写的 agi 脚本
package main
import (
"github.com/CyCoreSystems/agi"
)
func main() {
a := agi.NewStdio()
// 设置通道变量
err := a.Set("MYVAR", "foo")
if err != nil {
panic("failed to set variable MYVAR")
}
m := a.Variables
// 获取AGI参数
callerid, ok := m["agi_callerid"]
if !ok {
a.Verbose("failed to get callerid", 1)
panic("failed to get callerid")
}
// 打印日志
a.Verbose(callerid, 4)
// 播放音频文件
a.StreamFile("bean", "", 0)
a.StreamFile("thanks", "", 0)
}
我们需要将编译之后的脚本文件放在/var/lib/asterisk/agi-bin/
目录中。
并执行chmod +x agidemo
添加执行权限。