当前位置: 代码迷 >> 综合 >> Freeswitch通过lua?创建/订阅事件
  详细解决方案

Freeswitch通过lua?创建/订阅事件

热度:59   发布时间:2024-02-28 21:22:57.0

freeswitch.Event创建一个事件,然后添加内容,最后发出

  • event:addBody

  • event:addHeader

  • event:fire

eg:

local event = freeswitch.Event("custom", "Xugd::Quit")

event:addHeader("myKey", "MyValue")

event:fire()

--------------------------------------------------

freeswitch.EventConsumer:订阅一个事件,获取内容

  • event:getBody

  • event:getHeader

  • event:getType

  • event:serialize

eg:

con = freeswitch.EventConsumer()

con:bind("RELOADXML")

con:bind("SHUTDOWN")

con:bind("CUSTOM", "multicast::event")

 

订阅指定事件,获取并输出,直到有退出事件

local con = freeswitch.EventConsumer();
con:bind("SHUTDOWN")
con:bind("CUSTOM", "Xugd::MyStatus")
con:bind("CUSTOM", "Xugd::Quit")

while true do
      local evt = con:pop(1)
      local eType = evt:getType() 
      freeswitch.consoleLog("DEBUG", "Get Event: " .. eType .. ", " .. type(eType) .. "\n")
      if eType == "SHUTDOWN" then
          freeswitch.consoleLog("INFO", "SHUTDOWN: To Quit\n")
           break
     end
    
     if eType == "CUSTOM" then 
          local eClass = evt:getHeader("Event-Subclass")      
          freeswitch.consoleLog("DEBUG", "Event-Subclass: " .. eClass .. "\n")
          if eClass == "Xugd::Quit" then
               freeswitch.consoleLog("INFO", "Xugd::Quit: To Quit\n")
               break
        end
        if eClass == "Xugd::MyStatus" then
                local status= evt:getHeader("MyStaus")     
                freeswitch.consoleLog("INFO", "Xugd::MyStatus: " .. status .. "\n") 
        end
    end 
end