Benoit Panizzon
2019-Jun-09 11:19 UTC
[asterisk-users] Dial(${PJSIP_DIAL_CONTACTS(Alice)} & ${PJSIP_DIAL_CONTACTS(Bob)}) how not to fail if one endpoint has no registered AOR?
Dear List It's probably been more than a year now I switched from chan_sip to pjsip. pjsip works much cleaner than chan_sip. But! I have come across a Problem I was not able to solve with Asterisk Dialplan Logic. With pjsip an endpoint can have multiple AOR, so you need to expand them with ${PJSIP_DIAL_CONTACTS()} to be able to Dial() all of them simultaneously. But there are also situation where you need to Dial() not only one endpoint, but multiple ones, even mixing technologies like IAX and SIP. You can specify those multiple endpoints with the & separator in the Dial() function. Unfortunately if an pjsip endpoint has NO registered AORs, ${PJSIP_DIAL_CONTACTS()} returns an empty sting. So consider: same => n,Dial(IAX2/guest at pbx.digium.com/s at default & ${PJSIP_DIAL_CONTACTS(Guest)}) If there is no Guest registered, the resulting string to dial passed to Dial() is: "IAX2/guest at pbx.digium.com/s at default &" which Dial complains is not valid, because of a missing second line to dial after the &. Well, I could try to expand all the PJSIP Endpoints in a perl AGI script and then compose a variable to contain a valid string for Dial(), but I would prefer to do this with Asterisk Logic. (Yes, with only two endpoints this can somehow be done with Set(if and compare for empty string), but the more endpoints to ring the more complicated it is getting. Anyone having figured an 'easy' way to do this? Or is there even an alternative to ${PJSIP_DIAL_CONTACTS(Guest)} which would Dial all AOR, and still work if no AOR is present? Sidenote: Set Variable IF(string emptry) constructions also return en empty sting if the condition does NOT match, is there a reversed way to do it? IF(string empty) SET variable= ? -Benoît-
Administrator TOOTAI
2019-Jun-09 13:07 UTC
[asterisk-users] Dial(${PJSIP_DIAL_CONTACTS(Alice)} & ${PJSIP_DIAL_CONTACTS(Bob)}) how not to fail if one endpoint has no registered AOR?
Le 09/06/2019 à 13:19, Benoit Panizzon a écrit :> Dear ListHello> > It's probably been more than a year now I switched from chan_sip to > pjsip. pjsip works much cleaner than chan_sip. > > But! > > I have come across a Problem I was not able to solve with Asterisk > Dialplan Logic. > > With pjsip an endpoint can have multiple AOR, so you need to expand > them with ${PJSIP_DIAL_CONTACTS()} to be able to Dial() all of them > simultaneously. > > But there are also situation where you need to Dial() not only one > endpoint, but multiple ones, even mixing technologies like IAX and SIP. > > You can specify those multiple endpoints with the & separator in the > Dial() function. > > Unfortunately if an pjsip endpoint has NO registered AORs, > ${PJSIP_DIAL_CONTACTS()} returns an empty sting. > > So consider: > > same => n,Dial(IAX2/guest at pbx.digium.com/s at default & > ${PJSIP_DIAL_CONTACTS(Guest)}) > > If there is no Guest registered, the resulting string to dial passed to > Dial() is: "IAX2/guest at pbx.digium.com/s at default &" which Dial complains > is not valid, because of a missing second line to dial after the &.What about to put eveything in a variable and the remove the last character if it equal & Something like same = n,Set(toDial=IAX2/guest at pbx.digium.com/s at default&${PJSIP_DIAL_CONTACTS(Guest)}) same = n,ExecIf($["${toDial:-1}"=="&"]?Set(toDial=${toDial:0:-1})) same = n,Dial(${toDial}) [...] -- Daniel
Benoit Panizzon
2019-Jun-10 08:53 UTC
[asterisk-users] Dial(${PJSIP_DIAL_CONTACTS(Alice)} & ${PJSIP_DIAL_CONTACTS(Bob)}) how not to fail if one endpoint has no registered AOR?
> What about to put eveything in a variable and the remove the last > character if it equal &Yes, I considered this... What if you dial three endpoints and the middle one (or last one) is empty? You would also need to remove the first & and any double & within that string. Is it faisable with asterisk logic? -Benoît-
Apparently Analagous Threads
- Confused by concepts behind pjsip: endpoint, aor, contact
- PJSIP - Using multiple AOR contacts when dialing through an endpoint
- PJSIP_DIAL_CONTACTS issue
- multiple softphone clients and same/different account credentials
- Confused by concepts behind pjsip: endpoint, aor, contact