2016/02/04

Asterisk : The Cookbook 食譜 033 - 資料庫 AstDB

Q033: 靜態設定看得差不多了,如果想做一些動態設定,是否有像 File, Database 這類的儲存空間?

是的,Asterisk 有支援各種模組,裡面可以加入像 MySQL, Postgre SQL 這類資料庫,事實上它也有內建的資料庫,Asterisk 比較接近 Sqlite,底下用實例來說明:

exten => 678,1,NoOp()
  same => n,Set(COUNT=${DB(test/count)})
  same => n,GotoIf($[${ISNULL(${COUNT})}]?:continue)
  same => n,Set(DB(test/count)=1)
  same => n,Goto(1)
  same => n(continue),NoOp()
  same => n,Playback(silence/1)
  same => n,SayNumber(${COUNT})
  same => n,Set(COUNT=$[${COUNT} + 1])
  same => n,Set(DB(test/count)=${COUNT})


  1. 讀資料 DB(FAMILY/KEY) 如上例的 ${DB(test/count)}
  2. 設定 Set(DB(FAMILY/KEY)=VALUE), 如上例的 Set(DB(test/count)=${COUNT})
  3. 刪資料:
    1. DB_DELETE(FAMILY/KEY)
    2. DBdeltree(FAMILY)
  4. 檢查資料是否存在 DB_EXIST(FAMILY/KEY),如果要順便讀取其值的話,可以在呼叫後由 DB_RESULT 變數取得
  5. 傳回所有的 KEYs DB_KEYS(PREFIX)
所謂的 FAMILY 可以想成『資料庫』、『檔案』或是「群組」

0 意見: