Forked from fiorix/go-eventsocket
FreeSWITCH Event Socket library for the Go programming language.
It supports both inbound and outbound event socket connections, acting either as a client connecting to FreeSWITCH or as a server accepting connections from FreeSWITCH to control calls.
This code has not been tested in production and is considered alpha. Use at your own risk.
Make sure $GOPATH is set, and use the following command to install:
go get github.com/palner/fs-eventsocket/eventsocket
The library is currently a single file, so feel free to drop into any project without bothering to install.
Main differences between this fork and fiorix/go-eventsocket:
- LogPrettyPrint()
- SendEvent()
LogPrettyPrint prints Event headers and body to the logger; assuming of course you have a log set-up.
Example:
fs.Send("events json ALL")
for {
ev, err := fs.ReadEvent()
if err != nil {
log.Fatal(err)
break
}
switch ev.Get("Event-Name") {
case "HEARTBEAT":
go HandleHeartbeat(ev)
case "CHANNEL_HANGUP", "CUSTOM", "CHANNEL_ANSWER", "RELOADXML", "RECORD_STOP":
log.Println("New event:", ev.Get("Event-Name"))
ev.LogPrettyPrint()
default:
log.Println("New event:", ev.Get("Event-Name"))
}
}
fs.Close()
Sends FreeSWITCH a sendevent
command, perfect for sending a NOTIFY reboot, etc.
Example:
fs, err := eventsocket.Dial([FS ADDRESS], [FS PASSWORD])
if err != nil {
log.Fatal("Whomp. FreesSWITCH connect error:", err.Error())
}
\\ get a uuid
uuid, err := fs.Send("api create_uuid")
if err != nil {
fs.Close()
log.Fatal("uuid errod", err.Error())
}
var eventMSG = eventsocket.MSG{
"profile": "internal",
"event-string": "check-sync;reboot=true",
"user": "1234",
"host": "[DOMAIN of FreeSWITCH]",
"call-id": uuid.Body,
"uuid": uuid.Body,
"to-uri": "sip:1234@[IP of Endpoint or Proxy]",
"from-uri": "sip:1234@[DOMAIN of FreeSWITCH]",
}
response, err := fs.SendEvent("NOTIFY", eventMSG, "")
if err != nil {
log.Println("error sending notify:", err.Error())
} else {
log.Println("response:")
response.LogPrettyPrint()
}
fs.Close()
There are simple and clear examples of usage under the examples directory. A client that connects to FreeSWITCH and originate a call, pointing to an Event Socket server, which answers the call and instructs FreeSWITCH to play an audio file.