Retry reaching members of a dialgroup

Hi Folks,

hope I’m asking in the correct forum, this is what i want to reach:
I have a dialgroup consisting of lets say 3 members. When i call the group (Dial-command) while one member is not registered to asterisk (which is ok), the other two group members are ringing, so far so good.
The unregistered device gets a firebase notification that a call is being made to the group, but when the device registers, the call does of course not reach the device.

How can i achive this? I already tried the Queue-command, but the problem I’m having with it is, that the call gets not cancelled even when all agents cancel the call.

Hopefully i made clear my problem
greetz, dude

Edit: pickupgroup feature (pickup call with *8) is also not working, because some called devices of the group can also be registered to a kamailio on the internet

From the perspective of the Dial application itself there’s nothing you can do to have it retry dialing a target. Indirectly you could use a Local channel into the dialplan that waits a period of time and then dials the party.

Thanks a lot for the quick reply, i will have a look into local channels, by now i have no idea how to use them

Local channels just create two back to back channels, with the second one running dialplan.

What I think is being suggested here is that your local channel dialplan calls the actual destination. If it fails, it waits long enough for the device to register, and then tries again. Even something as simple as Dial; Wait; Dial will do this, although you might want to test the failure reason for the first DIal.

is it this what I should do for my dialgroup?


exten => s,1,Ringing() ;indicate ringing to the caller
exten => s,n,System(shellScript to detect if all devices are registered)
exten => s,n,ExecIf(all devices are on?no timeout: else set timeout to some seconds)
exten => s,n,Wait(timeout) ;wait for my devices to register
exten => s,n,Dial(extensions i want to reach) ;correct dial

You don’t seem to have any step that would result in the device being woken up and you can test the device state directly from the dialplan, without shelling out.

the System(shellScript… sends a firebase cloud messaging notification to the devices that are not ringing, but how can i test the device state from dialplan???

Edit: aah, just got to know the device_state function ;), thx