Asterisk Startup Commands
Since Asterisk 1.6.0 there is a config file
cli.conf, where you can add CLI commands, which will be executed, when Asterisk starts.
originate command you can also trigger a “call” at startup. A call to a local dummy extension can trigger a context, where you can e.g. initialize custom lamp states (from a database) or something else.
; ; Asterisk CLI configuration ; [startup_commands] ; ; Any commands listed in this section will get automatically executed ; when Asterisk starts as a daemon or foreground process (-c). ; ;sip set debug on = yes ;core set verbose 3 = yes ;core set debug 1 = yes originate local/ast-startup extension s@asterisk-startup = yes
In this example “originate” calls the local (dummy) extension “ast-startup”, it automatically answers and calls extension “s” in context “asterisk-startup” (don't forget the “ = yes” at the end of the line ).
; Ast-Startup Dummy Extension exten => ast-startup,1,Answer() exten => ast-startup,n,Wait(3) exten => ast-startup,n,Hangup() [asterisk-startup] ; these commands will be executed, when Asterisk starts exten => s,1,NoOp(Asterisk Startup Script) exten => s,n,NoOp(Do whatever you want) exten => s,n,Set(DEVICE_STATE(Custom:My-custom-lamp)=NOT_INUSE) exten => s,n,Hangup()
For IP-phones with custom lamps (hints) it can help a lot to reduce the “Subscription Timer” (for BLFs) to 120 sec, otherwise it can take a long time until the lamp states will be refreshed after an Asterisk restart.
Update: At least Asterisk 1.6.2 + 1.8.x already store the custom device-states in AstDB automatically!
database show CustomDevstate /CustomDevstate/My-custom-lamp : NOT_INUSE /CustomDevstate/mystate : NOT_INUSE