Brian J. Murrell
2019-Feb-21 16:17 UTC
[asterisk-users] best practices for dialing multiple contacts of multiple extensions
In the past, I have created variables that hold multiple extensions such as: HOUSEPHONES=PJSIP/mom&PJSIP&dad&PJSIP/grandma so that I can do a Dial(${HOUSEPHONES},...) with it, to ring multiple phones. But now some of those phones will be registering multiple times and thus have multiple contacts, so I want to use ${PJSIP_DIAL_CONTACTS() to expand all of the contacts of an endpoint. But of course you can't pass a string such as what's in ${HOUSEPHONES} to ${PJSIP_DIAL_CONTACTS()}. I wonder what others are doing about this? I had considered: HOUSEPHONES=PJSIP/mom&PJSIP&dad&${PJSIP_DIAL_CONTACTS(grandma)} but I suspect that that just adds the contacts for grandma at the time the dialplan is loaded and is not updated as her contacts actually change. Correct? I could imagine a bunch of "dialplan" code to break up a & separated string, strip off the PJSIP/ and then run each item through ${PJSIP_DIAL_CONTACTS()} and concatenate it all back together with &s. Even in AEL (which is probably what I'd do it in) it seems like this could be a bit hairy and possibly somebody else must have invented this while already. Or is there some other best known practice to handle all of this that I am not considering? Cheers, b. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: This is a digitally signed message part URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20190221/5c096a02/attachment.sig>
Brian J. Murrell
2019-Mar-08 14:41 UTC
[asterisk-users] best practices for dialing multiple contacts of multiple extensions
On Thu, 2019-02-21 at 11:17 -0500, Brian J. Murrell wrote:> In the past, I have created variables that hold multiple extensions > such as: > > HOUSEPHONES=PJSIP/mom&PJSIP&dad&PJSIP/grandma > > so that I can do a Dial(${HOUSEPHONES},...) with it, to ring multiple > phones. > > But now some of those phones will be registering multiple times and > thus have multiple contacts, so I want to use ${PJSIP_DIAL_CONTACTS() > to expand all of the contacts of an endpoint. > > But of course you can't pass a string such as what's in > ${HOUSEPHONES} > to ${PJSIP_DIAL_CONTACTS()}. > > I wonder what others are doing about this? > > I had considered: > > HOUSEPHONES=PJSIP/mom&PJSIP&dad&${PJSIP_DIAL_CONTACTS(grandma)} > > but I suspect that that just adds the contacts for grandma at the > time > the dialplan is loaded and is not updated as her contacts actually > change. Correct? > > I could imagine a bunch of "dialplan" code to break up a & separated > string, strip off the PJSIP/ and then run each item through > ${PJSIP_DIAL_CONTACTS()} and concatenate it all back together with > &s. > > Even in AEL (which is probably what I'd do it in) it seems like this > could be a bit hairy and possibly somebody else must have invented > this > while already. > > Or is there some other best known practice to handle all of this that > I > am not considering?Since nobody offered up any BPs, I will provide the AEL macro that I wrote to do this expansion: macro expand_exten(ext) { while ("${ext}" != "") { Set(e=${SHIFT(ext,&)}); if ("${e:0:5}" = "PJSIP") { Set(e=${PJSIP_DIAL_CONTACTS(${STRREPLACE(e,PJSIP/,)})}); } if ("${e}" != "") { Set(newext=${newext}${e}&); } } // blech! global variables because there no way to make a // function/gosub/etc that returns a value Set(newext=${newext:0:-1}); Return(${newext}); return; } where the first argument passed in is an extention of the format: PJSIP/<sip_account> I'm pretty new to AEL, so any constructive criticism would be welcome. Cheers, b. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: This is a digitally signed message part URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20190308/74454979/attachment.sig>