本文整理汇总了Golang中github.com/fiorix/go-eventsocket/eventsocket.Connection.Execute方法的典型用法代码示例。如果您正苦于以下问题:Golang Connection.Execute方法的具体用法?Golang Connection.Execute怎么用?Golang Connection.Execute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/fiorix/go-eventsocket/eventsocket.Connection
的用法示例。
在下文中一共展示了Connection.Execute方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: handler
func handler(c *eventsocket.Connection) {
fmt.Println("new client:", c.RemoteAddr())
c.Send("connect")
c.Send("myevents")
c.Execute("answer", "", false)
ev, err := c.Execute("playback", audioFile, true)
if err != nil {
log.Fatal(err)
}
ev.PrettyPrint()
for {
ev, err = c.ReadEvent()
if err != nil {
log.Fatal(err)
}
fmt.Println("\nNew event")
ev.PrettyPrint()
if ev.Get("Application") == "playback" {
if ev.Get("Application-Response") == "FILE PLAYED" {
c.Send("exit")
}
}
}
}
示例2: outboundHandler
func outboundHandler(c *eventsocket.Connection) {
r = redis.New()
r_err = r.Connect(host, port)
if r_err != nil {
log.Fatalf("Connect failed: %s\n", r_err.Error())
}
log.Println("Connected to redis-server.")
fmt.Println("new client:", c.RemoteAddr())
s := Session{}
s.c = c
{
ev, err := c.Send("connect")
if err != nil {
fmt.Println("ERROR: ", err)
return
}
s.callerid = ev.Get("Channel-Caller-Id-Number")
s.callername = ev.Get("Channel-Caller-Id-Name")
s.inbound_uuid = ev.Get("Channel-Unique-Id")
}
c.Send("linger 5")
c.Execute("answer", "", true)
go secretaryCallOut(&s)
c.Execute("playback", "local_stream://moh", true)
fmt.Println("playback aborted")
normal_clearing := false
{
ev, err := c.Send("api uuid_getvar " + s.inbound_uuid +
" hangup_cause")
if err != nil && ev.Body != "" {
normal_clearing = true
}
}
hup := false
if s.secretary_uuid == "" {
hup = true
} else {
ev, err := c.Send("api uuid_exists " + s.secretary_uuid)
if err != nil || ev.Body == "false" {
hup = true
} else {
// secretary is running
if normal_clearing {
// abort the secretary
fmt.Println("Aborting the secretary")
c.Send("api uuid_kill " + s.secretary_uuid)
}
}
}
if hup {
c.Execute("playback", "misc/sorry.wav", true)
c.Execute("sleep", "500", true)
c.Execute("hangup", "", false)
fmt.Println("hup")
}
c.Close()
}
示例3: outboundHandler
//.........这里部分代码省略.........
if cnum, _ := r.SIsMember("phone:hdata:0731", s.custom_number[0:7]); cnum {
s.custom_number_type = "本地手机"
} else {
s.custom_number_type = "外地手机"
s.custom_number = "0" + s.custom_number //加0
}
} else {
if s.custom_number[0:1] == "0" {
s.custom_number_type = "外地固话"
} else {
s.custom_number_type = "本地固话"
}
}
r.Quit()
// log.Println("断开redis服务器.")
}
// 录音文件名
year := time.Now().Format("2006")
month := time.Now().Format("01")
day := time.Now().Format("02")
s.rec_file = fmt.Sprintf("/mnt/stone/%s/%s/%s/%s_%s_%s.wav", year, month, day, s.caller_id_number, s.destination_number, s.inbound_uuid)
// 流程控制
// 1. 是否分公司/客户号码,送到相应网关
// 2. 是否不识别的主/被叫号码(用 call_direction="未知" 来表示)
// 3. 呼出号码处理
// 3.1 是否销售分机外呼 --> 是否设置了电话号码状态 --> 播放相应提示语音,DTMF按键 --> 挂机
// 3.2 不满足上述条件,则直接外呼
// 4. 呼入号码处理
// 4.1 是否有对应的分机号码 -->(分机是否在线) --> 直接转分机
// 4.2 不满足上述条件,转前台总机
ringback := "ringback=file_string://" + WAIT
c.Execute("set", ringback, false)
c.Execute("set", "hangup_after_bridge=true", false)
// c.Send("linger 5")
c.Execute("answer", "", true)
// c.Execute("playback", "local_stream://moh", true)
cmd := "user/[email protected]"
if s.office_number_type != "湖南好搜" {
if s.office_number_type == "湖南周边云" {
callerIDNumber := "effective_caller_id_number=" + s.caller_id_number
c.Execute("set", callerIDNumber, false)
if s.call_direction == "呼入" {
cmd = "sofia/gateway/hnzby/" + s.destination_number
} else if s.call_direction == "呼出" {
cmd = "sofia/gateway/serv36/" + s.destination_number
}
}
} else if s.call_direction == "呼出" {
if s.subnum_type == "销售" {
if s.custom_number_status == "warning" || s.custom_number_status == "custom" || s.custom_number_status == "bother" {
log.Println("销售电话")
sound := "/usr/share/freeswitch/sounds/" + s.custom_number_status + ".wav"
c.Execute("playback", sound, true)
// started := time.Now()
// digit := ""
c.Execute("hungup", "", true)
// for time.Since(started).Seconds() < 60 && digit == "" {
// ev, err := c.Send("api uuid_exists " + s.inbound_uuid)
// if err != nil || ev.Body == "false" {
// break
// }
示例4: handler
// Handle incoming call
func (e *EventSocketServer) handler(c *eventsocket.Connection) {
logger.Logger.Println("Incoming Event Socket connection from", c.RemoteAddr())
connectev, err := c.Send("connect") // Returns: Ganzer Event mit alles
if err != nil {
c.Send("exit")
logger.Logger.Print(err)
return
}
channelUUID := uuid.Parse(connectev.Get("Unique-Id"))
if channelUUID == nil {
c.Send("exit")
logger.Logger.Print(err)
return
}
defer logger.Logger.Println(channelUUID, "Handler ending")
// Filter and subscribe to events
c.Send("linger")
c.Send(fmt.Sprintf("filter Unique-ID %v", channelUUID))
c.Send("event plain CHANNEL_CALLSTATE CUSTOM spandsp::rxfaxnegociateresult spandsp::rxfaxpageresult spandsp::rxfaxresult")
// Extract Caller/Callee
recipient := connectev.Get("Variable_sip_to_user")
cidname := connectev.Get("Channel-Caller-Id-Name")
cidnum := connectev.Get("Channel-Caller-Id-Number")
logger.Logger.Printf("Incoming call to %v from %v <%v>", recipient, cidname, cidnum)
var device *Device
if gofaxlib.Config.Gofaxd.AllocateInboundDevices {
// Find free device
device, err := devmanager.FindDevice(fmt.Sprintf("Receiving facsimile"))
if err != nil {
logger.Logger.Println(err)
c.Execute("respond", "404", true)
c.Send("exit")
return
}
defer device.SetReady()
}
var usedDevice string
if device != nil {
usedDevice = device.Name
} else {
usedDevice = defaultDevice
}
csi := gofaxlib.Config.Freeswitch.Ident
// Query DynamicConfig
if dcCmd := gofaxlib.Config.Gofaxd.DynamicConfig; dcCmd != "" {
logger.Logger.Println("Calling DynamicConfig script", dcCmd)
dc, err := gofaxlib.DynamicConfig(dcCmd, usedDevice, cidnum, cidname, recipient)
if err != nil {
logger.Logger.Println("Error calling DynamicConfig:", err)
} else {
// Check if call should be rejected
if gofaxlib.DynamicConfigBool(dc.GetFirst("RejectCall")) {
logger.Logger.Println("DynamicConfig decided to reject this call")
c.Execute("respond", "404", true)
c.Send("exit")
return
}
// Check if a custom identifier should be set
if dynamicCsi := dc.GetFirst("LocalIdentifier"); dynamicCsi != "" {
csi = dynamicCsi
}
}
}
sessionlog, err := gofaxlib.NewSessionLogger()
if err != nil {
c.Send("exit")
logger.Logger.Print(err)
return
}
logger.Logger.Println(channelUUID, "Logging events for commid", sessionlog.CommID(), "to", sessionlog.Logfile())
sessionlog.Log("Inbound channel UUID: ", channelUUID)
// Check if T.38 should be disabled
disableT38 := gofaxlib.Config.Freeswitch.DisableT38
if disableT38 {
sessionlog.Log("T.38 disabled by configuration")
} else {
disableT38, err = gofaxlib.GetSoftmodemFallback(nil, cidnum)
if err != nil {
sessionlog.Log(err)
disableT38 = false
}
if disableT38 {
sessionlog.Log(fmt.Sprintf("Softmodem fallback active for caller %s, disabling T.38", cidnum))
}
}
//.........这里部分代码省略.........