本文整理汇总了Golang中github.com/fiorix/go-eventsocket/eventsocket.Connection类的典型用法代码示例。如果您正苦于以下问题:Golang Connection类的具体用法?Golang Connection怎么用?Golang Connection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Connection类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: FreeSwitchDBDelete
// FreeSwitchDBDelete deletes a value from FreeSWITCH's mod_db key/value database
func FreeSwitchDBDelete(c *eventsocket.Connection, realm string, key string) error {
_, err := c.Send(fmt.Sprintf("api db delete/%s/%s", realm, key))
if err != nil {
return err
}
return nil
}
开发者ID:beres,项目名称:gofaxip,代码行数:8,代码来源:fsdb.go
示例2: FreeSwitchDBInsert
// FreeSwitchDBInsert inserts a value into FreeSWITCH's mod_db key/value database
func FreeSwitchDBInsert(c *eventsocket.Connection, realm string, key string, value string) error {
_, err := c.Send(fmt.Sprintf("api db insert/%s/%s/%s", realm, key, value))
if err != nil {
return err
}
return nil
}
开发者ID:beres,项目名称:gofaxip,代码行数:8,代码来源:fsdb.go
示例3: FreeSwitchDBSelect
// FreeSwitchDBSelect retreives a value from FreeSWITCH's mod_db key/value database
func FreeSwitchDBSelect(c *eventsocket.Connection, realm string, key string) (string, error) {
result, err := c.Send(fmt.Sprintf("api db select/%s/%s", realm, key))
if err != nil {
return "", err
}
return result.Body, nil
}
开发者ID:beres,项目名称:gofaxip,代码行数:8,代码来源:fsdb.go
示例4: FreeSwitchDBExists
// FreeSwitchDBExists checks if a value exists in FreeSWITCH's mod_db key/value database
func FreeSwitchDBExists(c *eventsocket.Connection, realm string, key string) (bool, error) {
result, err := c.Send(fmt.Sprintf("api db exists/%s/%s", realm, key))
if err != nil {
return false, err
}
return result.Body == "true", nil
}
开发者ID:beres,项目名称:gofaxip,代码行数:9,代码来源:fsdb.go
示例5: SetSoftmodemFallback
// SetSoftmodemFallback saves the given softmodem fallback setting for a caller id
// to FreeSWITCH's mod_db
func SetSoftmodemFallback(c *eventsocket.Connection, cidnum string, enabled bool) error {
if !Config.Freeswitch.SoftmodemFallback || cidnum == "" {
return nil
}
var err error
if c == nil {
c, err = eventsocket.Dial(Config.Freeswitch.Socket, Config.Freeswitch.Password)
if err != nil {
return err
}
defer c.Close()
}
return FreeSwitchDBInsert(c, modDbFallbackRealm, cidnum, fmt.Sprintf("%d", time.Now().Unix()))
}
开发者ID:beres,项目名称:gofaxip,代码行数:18,代码来源:softmodemfallback.go
示例6: GetSoftmodemFallback
// GetSoftmodemFallback checks if fallback to SpanDSP's softmodem (no T.38)
// should be enabled for the given callerid number
func GetSoftmodemFallback(c *eventsocket.Connection, cidnum string) (bool, error) {
if !Config.Freeswitch.SoftmodemFallback || cidnum == "" {
return false, nil
}
var err error
if c == nil {
c, err = eventsocket.Dial(Config.Freeswitch.Socket, Config.Freeswitch.Password)
if err != nil {
return false, err
}
defer c.Close()
}
exists, err := FreeSwitchDBExists(c, modDbFallbackRealm, cidnum)
if err != nil {
return false, err
}
return exists, nil
}
开发者ID:beres,项目名称:gofaxip,代码行数:23,代码来源:softmodemfallback.go
示例7: 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()
}
开发者ID:transtone,项目名称:transconfig,代码行数:71,代码来源:sec_1.go
示例8: playAndGetOneDigit
func playAndGetOneDigit(
sound string,
c *eventsocket.Connection,
uuid string) string {
c.Send("filter Unique-ID " + uuid)
c.Send("event plain CHANNEL_EXECUTE_COMPLETE")
{
_, err := c.ExecuteUUID(
uuid,
"play_and_get_digits",
"1 1 1 400 # "+
sound+" silence_stream://250 result \\d")
if err != nil {
fmt.Println("Error executing play_and_get_digits: ",
err)
return ""
}
}
finished := false
ret := ""
for !finished {
ev, err := c.ReadEvent()
if err != nil {
finished = true
} else {
if ev.Get("Event-Name") ==
"CHANNEL_EXECUTE_COMPLETE" &&
ev.Get("Application") == "play_and_get_digits" {
ret = ev.Get("Variable_result")
finished = true
}
}
}
c.Send("noevents")
c.Send("filter delete Unique-ID " + uuid)
return ret
}
开发者ID:transtone,项目名称:transconfig,代码行数:44,代码来源:sec_1.go
示例9: 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("连接redis服务器.")
}
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.caller_id_number = ev.Get("Channel-Caller-Id-Number")
s.callername = ev.Get("Channel-Caller-Id-Name")
s.destination_number = ev.Get("Channel-Destination-Number")
s.inbound_uuid = ev.Get("Channel-Unique-Id")
// 根据主被叫确定办公电话,客户电话,客户电话状态和分机号码
s.office_number_type = "湖南好搜"
s.custom_number_status = "未知"
if len(s.caller_id_number) == 4 { //主叫4位,内线外呼
s.call_direction = "呼出"
s.subnum = s.caller_id_number
s.custom_number = s.destination_number
s.office_number, err = r.HGet("rec:"+s.subnum, "phone")
if err != nil {
s.office_number = "82088888"
}
// 确定分机所属部门及客户电话状态
if subnum, _ := r.SIsMember("allusers:100", s.subnum); subnum {
s.subnum_type = "销售"
if cnum, _ := r.SIsMember("rec:custom", s.custom_number); cnum {
s.custom_number_status = "custom"
}
if cnum, _ := r.SIsMember("rec:warning", s.custom_number); cnum {
s.custom_number_status = "warning"
}
if cnum, _ := r.SIsMember("rec:bother", s.custom_number); cnum {
s.custom_number_status = "bother"
}
}
} else if len(s.caller_id_number) > 7 { //主叫7位以上号码,1.外线呼入,被叫是好搜; 2.分公司/客户呼入,被叫是客户; 3.外线呼入,被叫是分公司/客户)
s.call_direction = "呼入"
s.custom_number = s.caller_id_number
s.office_number = s.destination_number
// 确定办公电话类型
if cnum, _ := r.SIsMember("phone:hnzby", s.caller_id_number); cnum { //主叫电话为周边云号码
s.call_direction = "呼出"
s.custom_number = s.destination_number
s.office_number = s.caller_id_number
s.office_number_type = "湖南周边云"
} else if dnum, _ := r.SIsMember("phone:hnzby", s.destination_number); dnum { //被叫电话位周边云号码
s.office_number_type = "湖南周边云"
} else {
s.subnum, err = r.HGet("rec:phone", s.caller_id_number) //通过办公号码找到分机号
if err != nil {
s.subnum = "8888"
}
}
} else { //其他异常号码,转前台
s.call_direction = "未知"
s.custom_number_status = "异常"
}
// 确定客户电话类型
s.custom_number = clearNum(s.custom_number)
if validate(s.custom_number, MOBILE) { //是否手机号码
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)
//.........这里部分代码省略.........
开发者ID:transtone,项目名称:transconfig,代码行数:101,代码来源:nosec.go
示例10: 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")
}
}
}
}
开发者ID:kenrdavis,项目名称:go-eventsocket,代码行数:24,代码来源:server.go
示例11: 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))
}
}
//.........这里部分代码省略.........
开发者ID:beres,项目名称:gofaxip,代码行数:101,代码来源:server.go
注:本文中的github.com/fiorix/go-eventsocket/eventsocket.Connection类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论