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.
One thought on - Best Practices For Dialing Multiple Contacts Of Multiple Extensions
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/
I’m pretty new to AEL, so any constructive criticism would be welcome.
Cheers, b.