Custom Extension to page speaker group and play announcment

I have a school who just switched to all Grandstream IP speakers. I was also informed that the solution thats been in place for 8 years used to have apparently never hung up. Looking to have the ability to dial a custom extension and have it play an announcement over the a paging zone. That is just part of it. I’m using a custom extension because I’ll also need to call up an API or send a cURL command to a TCP relay to trigger other actions.

I have created a custom extension 6666 and set it for local/s@soft-lockdown to talk to the custom script pasted below. In the line exten => s,n,Originate(local/xxxxx@from-internal,app,Playback,custom/Soft_Lockdown_check_email) if I put any of the sip speaker extensions in there, I get it to do exactly what I want but only to 1 speaker. If I change it to 32100 which is the paging group for all speakers in the building, tried both selecting them and using a multicast address for all of them from an algo paging gateway, I get nothing. I have tried changing it to local/32100@ext-paging, I have tried making custom extensions that I can call from a phone that allow me to talk to the page group, but I can not get the custom “script” to call the page group and play the announcement. I can set the announcement in the paging group but then I can not get the phone to hang up and they want it to automatically hangup(This apparently is what it has not done for the last 5 or so year)

Below is what I have, some of it is commented out because I found something that worked but not fully so I didn’t want to remove it. Some of its from the old speakers/paging gateway.

[soft-lockdown]
exten => s,1,Answer()
exten => s,n,Originate(local/8675309@from-internal,app,Playback,custom/Soft_lockdown_check_email)
;exten => s,n,Originate(local/32100@from-internal,app,Playback,custom/Soft_lockdown_check_email)
;exten => s,n,Dial(local/32100@from-internal)
;exten => s,n,Dial(local/8675309@from-internal)
;exten => s,n,Wait(1)
;exten => s,n,Playback(custom/Soft_lockdown_check_email)
exten => s,n,Wait(2)
exten => s,n,Hangup