liv2hak
liv2hak

Reputation: 15010

Asterisk dial plan priority

I have an example asterisk dial plan below.It just the main (no extension or start) and it has 3 priorities.In the first priority of our extension, we’ll answer the call. In the second, we’ll play a sound file named hello-world.gsm, and in the third we’ll hang up the call

One example on the web seem to suggest the below format

[incoming]
exten => s,1,Answer()
exten => s,n,Playback(hello-world)
exten => s,n,Hangup()

instead of

[incoming]
exten => s,1,Answer()
exten => s,2,Playback(hello-world)
exten => s,3,Hangup()

why is that? what exactly is a priority ? and what does 'n' signify

Upvotes: 0

Views: 2705

Answers (4)

sunnytheshine
sunnytheshine

Reputation: 143

n stands for Next Priority.

In place of writing number in priority we can use "n" to represent the next node.

We can also use label with "n" e.g. exten => s,n(dosomething) if we are using goto or gotoif conditions in our dialplan then this labels help us to navigate to different "n" priority.

Upvotes: 0

MichelV69
MichelV69

Reputation: 1212

You can also save a bit of typing using the "same" construct on Asterisk 1.6+:

[incoming]
exten => s,1,Answer()
 same => n(Start),Background(hello-world)
 same => n,Goto(Start)
 same => n,Hangup()

... if you are doing large dialplans where you are doing a bit of cut-paste-tweak between different sections, such as IVRs, using "same" saves you from making an error with the extension number.

Further reading: https://wiki.asterisk.org/wiki/display/AST/Contexts,+Extensions,+and+Priorities

Upvotes: 2

AsteriskDev
AsteriskDev

Reputation: 71

The best way to do this the following

exten => s,1,Answer() ;answer the call
same => n,playback(youfilename) ;understand that Asterisk will pick the best format to play
same => n,Hangup()

When using the same keyword you do not need to use the 's' in the dial plan.

Upvotes: 3

pce
pce

Reputation: 5931

Asterisk executes each priority in numerical order, and like in BASIC, you can jump to those Priorities with Goto.

Since Asterisk 1.2 you have the ability to use the n priority.

The n priority adds 1 to the previous Prioritiy.

That makes you more flexible, you could add a Line, without the need to care about the Priorities.

Another Benefit of the n priority is that you can use the n Priority with optional Labels and jump to that Label, instead of messing arround with the priorities Counter.

[incoming]
exten => s,1,Answer()
exten => s,n(Start),Background(hello-world)
exten => s,n,Goto(Start)
exten => s,n,Hangup()

See GotoIf for more examples.

Upvotes: 2

Related Questions