[asterisk-users] best practices for dialing multiple contacts of multiple extensions
Brian J. Murrell
brian at interlinx.bc.ca
Fri Mar 8 08:41:49 CST 2019
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>
More information about the asterisk-users
mailing list