FreeSWITCH 发送 sip message 的 lua 程序
-- chat.lualocal from = argv[1]
local to = argv[2]
local body = argv[3]
local profile = "internal" -- 改成自己的 sip_profileif not body thenstream:write("-ERR miss ie")return
endlocal api = freeswitch.API()
local domain = api:executeString("global_getvar domain")
local contact = api:executeString("sofia_contact " .. to)
if contact == "error/user_not_registered" thenstream:write("-ERR user not egistered")return
endlocal to_url = contact:gsub(".+sip:(.+)", "sip:%1")
local event = freeswitch.Event("CUSTOM", "SMS::SEND_MESSAGE")
event:addHeader("proto", "sip")
event:addHeader("dest_proto", "sip")
event:addHeader("from", from .. "@" .. domain)
event:addHeader("from_full", "sip:" .. from .. "@" .. domain)
event:addHeader("to", to_url)
event:addHeader("sip_profile", profile)
event:addHeader("type", "text/plain")
event:addBody(body)
-- event:addHeader("contact-uri", contact)
freeswitch.consoleLog("DEBUG", event:serialize())
event:fire()
stream:write("+OK")
51 假期闲着也是闲着,写了一个 chat.lua
上面的 lua 代码写的很清楚了,不再注释
下面是一个使用例子
fs_cli -x 'lua chat.lua 1001 1002 "hello,fs"'
后期的改进有2点:
1. body 用 base64 编码,或者 url 编码,否则不容易传多行
2. 如果 body 内容比较长,建议终端用 tcp 注册上来
此外,记得加载 mod_sms,不然,不好使