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. With the 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

; 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()

; 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