NVR510 というヤマハのルータを導入しました。
結線して設定を進めていくうちに SIPサーバの機能設定が見つからないことに気付きました。
SIPサーバ機能くらいはついているとばかり思ってたんですが機能が無いんですね。SIPクライアント機能だけしか無い。
着信したら相手の電話番号や登録済みの名前を PCに表示したかったのですが残念なことになりました。
SIPサーバ機能くらいはついているとばかり思ってたんですが機能が無いんですね。SIPクライアント機能だけしか無い。
着信したら相手の電話番号や登録済みの名前を PCに表示したかったのですが残念なことになりました。
マニュアルをめくりながら代替案を考えていると使えそうな機能がありました。
一部を抜粋すると「3.11.1 Lua スクリプト
本製品で Lua スクリプトを実行できます。Lua スクリプトにヤマハルーター専用 API を埋め込むことで、本製品の状態に応じ、本製品の設定変更やアクションをプログラミングできるようになります。」
とのこと
着信があったら指定URLの phpスクリプトを(GETで)起動して電話番号を検索させるというLuaスクリプトなんですが Lua という言語は初めてで書くのに苦戦しました。
苦戦しすぎて説明するのも面倒なので書いたものをそのまま載せます
以上
ptn = string.regexp("SIP Call from (.*)")
req_tbl = {
url = "",
method = "GET",
auth_type = "none",
}
-- SYSLOG (info, debug, notice)
log_level = "info"
------------------------------------------------------------
local rtn, str
local res_tbl
while (true) do
rtn = ""
str = ""
req_tbl.url = "https://PATH_TO_URL/tel_search.php"
rtn, str = rt.syslogwatch(ptn)
req_tbl.post_text = ""
if rtn > 0 then
aaaa, bbbb = string.find(str[1] , "disconnected" , 1 , true)
if aaaa == nil then
log_text = string.format("1=%s" , str[1])
rt.syslog(log_level, log_text)
str[1] = string.gsub(str[1] , " " , "_")
str[1] = string.gsub(str[1] , "/" , "_")
str[1] = string.gsub(str[1] , ":" , "_")
req_tbl.url = req_tbl.url .. "?text=" .. str[1]
--
res_tbl = rt.httprequest(req_tbl)
if (res_tbl.rtn1) and (res_tbl.code) and (res_tbl.code == 200) then
--
rt.syslog(log_level, "[Lua] success to send message.")
rt.syslog(log_level, req_tbl.url)
else
--
rt.syslog(log_level, "[Lua] failed to send message.")
end
req_tbl.post_text = ""
end
end
end
req_tbl = {
url = "",
method = "GET",
auth_type = "none",
}
-- SYSLOG (info, debug, notice)
log_level = "info"
------------------------------------------------------------
local rtn, str
local res_tbl
while (true) do
rtn = ""
str = ""
req_tbl.url = "https://PATH_TO_URL/tel_search.php"
rtn, str = rt.syslogwatch(ptn)
req_tbl.post_text = ""
if rtn > 0 then
aaaa, bbbb = string.find(str[1] , "disconnected" , 1 , true)
if aaaa == nil then
log_text = string.format("1=%s" , str[1])
rt.syslog(log_level, log_text)
str[1] = string.gsub(str[1] , " " , "_")
str[1] = string.gsub(str[1] , "/" , "_")
str[1] = string.gsub(str[1] , ":" , "_")
req_tbl.url = req_tbl.url .. "?text=" .. str[1]
--
res_tbl = rt.httprequest(req_tbl)
if (res_tbl.rtn1) and (res_tbl.code) and (res_tbl.code == 200) then
--
rt.syslog(log_level, "[Lua] success to send message.")
rt.syslog(log_level, req_tbl.url)
else
--
rt.syslog(log_level, "[Lua] failed to send message.")
end
req_tbl.post_text = ""
end
end
end
0 件のコメント:
コメントを投稿