我工作在Lua一個數據庫驅動的撥號方案項目與Asterisk更換GotoIfTime。我已經很糟糕地用.conf dialplan格式替換GotoIfTime()應用程序。如Asterisk Lua Reference中列出的Goto Asterisk主食真的不應該在Lua中使用,這對我很有意義。Asterisk的Lua中
我檢查的時間條件將是完全一樣的GotoIfTime應用程序,因爲它會限定一個星期幾,時間由小時和分鐘,然後按帳戶時區的方法。這個系統將有許多賬戶駐留在不同的時區。賬戶的營業時間將取決於賬戶定義的時區內的時間。
我的數據庫結構如下:
CREATE TABLE IF NOT EXISTS `hours` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`account_id` int(11) NOT NULL,
`day_start` varchar(3) NOT NULL,
`day_end` varchar(3) NOT NULL,
`hour_start` int(3) NOT NULL,
`minute_start` int(3) NOT NULL,
`hour_end` int(3) NOT NULL,
`minute_end` int(3) NOT NULL,
`closed_dest_type` varchar(20) NOT NULL,
`closed_dest_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `accounts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`timezone` varchar(40) NOT NULL,
);
這裏是在Lua一些這方面的操作非常簡單的用法:
if (open == true) then
dial(dest_type, dest_id)
else
dial(closed_dest_type, closed_dest_id)
end
這裏是我的麻煩了點:
星期幾由範圍指定。如何驗證日期範圍以字符串格式存儲時的星期幾?
該系統將使用與操作系統上可以設置不同的時區的多個服務器。使用GotoIfTime驗證帳戶的時區非常簡單,因爲我唯一需要做的就是將帳戶的時區數據庫條目結果指向GotoIfTime應用程序的時區參數。
1)你爲什麼要把一切'varchar',而不是使用更多的敏感數據類型? 2)你根本就沒有說清楚你正在試圖用時區做什麼。通常,在查詢期間需要考慮時區,而不是事後。 3)請退後一步,從陌生人的角度閱讀。我不知道你將哪些數據放入這些列中,也不知道你是如何將這些數據加載到變量中的,或者說是否將這些數據加載到變量中。你需要更簡潔。謝謝。 –
與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱[應該'嗨','謝謝',標語和致敬辭職](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-刪除 - 從 - 個)。 – rene
@MattJohnson 1)已更正。 2)我已經添加了幾行,試圖用更清晰簡潔的格式來解釋時區的完成情況。 3)當我寫這個問題時,我假設讀者會熟悉星號,並且會理解GotoIfTime應用程序的功能,因爲它是Asterisk的主要部分。 GotoIftime應用程序被替換爲Asterisk的Lua diaplan格式。坦率地說,我沒有將這些數據加載到Lua變量中的方法,因爲我還沒有得到這些。 – When1ConsumeMem