Held/Parked calls after a failover


In an active-passive cluster, When Asterisk 1 server fails and Asterisk 2 takes over I would like to know if there is any arquitechture that keeps tracks of Held/Parked calls.

I mean if a user parks a call when Asterisk 1 is running, can someone pick up that parked call after a failover (when Asterisk 2 is running) ?



Thanks malcolm! :smile:

Next time try to answer sooner than 3min!! :stuck_out_tongue:


Just out for curiosity… would it be programatically hard to save all dynamic data, that Asterisk creates in RAM ,save it into a file in order to other ASterisks to work with it?

The problem is that the held call is gone once the Asterisk to which it is connected is gone; there’s no more media sinc.

Doing all of this well - handling live call failover (we didn’t get to calls bridged to a media sinc failover) - was the domain of Asterisk SCF.

Thanks. Interesting.

So… in an active-active model, where each Asterisk knows about every SIP client registered through DUNDi (and regexten)… if a user registered in Asterisk-1 parks a call, what would be the dialplan in order to let a user (registered in Ast-2) to pick up that call ?

edit: Would I need a common extensions.conf managed through external DDBB ?

The user on the other Asterisk would dial an extension that they could reach that calls the ParkedCall application.

DUNDi isn’t really active-active in that everyone knows about the registration state of extensions on other systems, it just asks other systems for routes. If the other system doesn’t respond, you don’t know. Slightly different from an active-active where everyone would be getting constant updates about states of endpoints registered to other systems.

[code]Server Ast-1 ip address = IP_1 ; parkedcalls = 701-720
Server Ast-2 ip address = IP_2 ; parkedcalls = 801-820
IAX2 channel between them

User-1 >> user registered in Ast-1
User-2 >> user registered in Ast-2

User-1 parks a call (ext. 701). If User-2 wants to pick it up would dial 701 and in Ast-2 extensions.conf would be:

exten => _7xx,1,Dial(IAX2/iax2channel/${EXTEN}@IP_1,kK)
exten => _7xx,1,Dial(IAX2/iax2channel/${EXTEN},kK)

Something like that?

edit: Oops! I didn’t know “parkedcall()”. Would dialplan in Ast-2 be _7xx,1,ParkedCall(${EXTEN}@IP_1) ?

If your parking lots are 700 through 799, Asterisk internally generates:

exten => _7XX,1,ParkedCall(${EXTEN})

(Actually it generates the individual ones, with explicit numbers.)

If you want to, you can do:

exten +> 1234,1,ParkedCall(701)

in your dialplan, but most people wouldn’t do this.

Incidentally, this should have been on Asterisk Support.

Thanks David55.

But I’d like to know the command to unpark a call FROM another Asterisk server (located in same LAN).

User 1 parks a call at Ast-1. User-2 (registered in Ast-2) wants to pickup that parked call at Ast-1

Shall I use in Ast-2:

exten => 111,1,ParkedCall(701@Ast_1)



How we did this in the past was to have defined park lists for each site.
site a 701-749
site b 751-799
site c 801-849

the the dialplan just does a

exten => _7(0-4)X,1,Dial(SIP/${EXTEN}@sitea)
exten => _7(5-9)X,1,Dial(SIP/${EXTEN}@siteb)
exten => _8(0-4)X,1,Dial(SIP/${EXTEN}@sitec)

`This worked fine, as users parked calls as normal and then announced the lot number

Oh, a simple Dial/SIP to the 7xx extension.

Thanks Ian. :smile: