More or less off topic, but there are some ATA units ( Intomedia, from memory ) that won't ring if the CLID name has a comma in it!
John Novack Chris Abnett wrote: > I never did understand why asterisk went from the pipe to the comma.. > Just for that reason.... > > When I ran into this I had to cleanse my caller ID names before letting > scripts get hold of them... Esp since my caller ID names are often keyed > into hotel PMS systems by people.. They use whatever delimiter they feel > like to separate names... > > You can try the asterisk function replace.. It is supposed to find a > character and replace it.. don¹t know if it is accruate, I have not tried > it.. > > I also thought that gosub is the preferred method instead of macro for all > versions of asterisk going forward... > -Christopher > > On 2/10/12 2:29 PM, "Lonnie Abelbeck"<[email protected]> wrote: > > >> Update, >> >> I'm thinking this may be useful info, enclosed is an update. As David >> suggests this appears to be a bug using Macro (and parsing), so let's try >> GoSub()... >> -- >> [macro-test] >> exten => s,1,NOOP(ARG1=${ARG1}) >> exten => s,n,NOOP(ARG2=${ARG2}) >> exten => s,n,NOOP(ARG3=${ARG3}) >> >> [sub-test] >> exten => start,1,NOOP(ARG1=${ARG1}) >> same => n,NOOP(ARG2=${ARG2}) >> same => n,NOOP(ARG3=${ARG3}) >> same => n,Return() >> -- >> >> Test1 code: pass ${CALLERID(name)} by itself >> -- >> exten => 9,1,Set(CALLERID(name)=Abelbeck, Lonnie) >> exten => 9,n,Macro(test,${CALLERID(name)}) >> exten => 9,n,GoSub(sub-test,start,1(${CALLERID(name)})) >> == Output == >> -- Executing [9@default:1] Set("SIP/10.10.50.1-0000000e", >> "CALLERID(name)=Abelbeck, Lonnie") in new stack >> -- Executing [9@default:2] Macro("SIP/10.10.50.1-0000000e", >> "test,Abelbeck, Lonnie") in new stack >> -- Executing [s@macro-test:1] NoOp("SIP/10.10.50.1-0000000e", >> "ARG1=Abelbeck") in new stack >> -- Executing [s@macro-test:2] NoOp("SIP/10.10.50.1-0000000e", "ARG2= >> Lonnie") in new stack >> -- Executing [s@macro-test:3] NoOp("SIP/10.10.50.1-0000000e", "ARG3=") in >> new stack >> >> -- Executing [9@default:3] Gosub("SIP/10.10.50.1-0000000e", >> "sub-test,start,1(Abelbeck, Lonnie)") in new stack >> -- Executing [start@sub-test:1] NoOp("SIP/10.10.50.1-0000000e", >> "ARG1=Abelbeck") in new stack >> -- Executing [start@sub-test:2] NoOp("SIP/10.10.50.1-0000000e", "ARG2= >> Lonnie") in new stack >> -- Executing [start@sub-test:3] NoOp("SIP/10.10.50.1-0000000e", "ARG3=") >> in new stack >> -- Executing [start@sub-test:4] Return("SIP/10.10.50.1-0000000e", "") in >> new stack >> == >> Note both Macro and GoSub fail in the same way, the comma in the data is >> parsed. >> >> >> Test2 code: add quotes around "${CALLERID(name)}" when passing >> -- >> exten => 9,1,Set(CALLERID(name)=Abelbeck, Lonnie) >> exten => 9,n,Macro(test,"${CALLERID(name)}") >> exten => 9,n,GoSub(sub-test,start,1("${CALLERID(name)}")) >> == Output == >> -- Executing [9@default:1] Set("SIP/10.10.50.1-0000000b", >> "CALLERID(name)=Abelbeck, Lonnie") in new stack >> -- Executing [9@default:2] Macro("SIP/10.10.50.1-0000000b", >> "test,"Abelbeck, Lonnie"") in new stack >> -- Executing [s@macro-test:1] NoOp("SIP/10.10.50.1-0000000b", >> "ARG1="Abelbeck") in new stack >> -- Executing [s@macro-test:2] NoOp("SIP/10.10.50.1-0000000b", "ARG2= >> Lonnie"") in new stack >> -- Executing [s@macro-test:3] NoOp("SIP/10.10.50.1-0000000b", "ARG3=") in >> new stack >> >> -- Executing [9@default:3] Gosub("SIP/10.10.50.1-0000000b", >> "sub-test,start,1("Abelbeck, Lonnie")") in new stack >> -- Executing [start@sub-test:1] NoOp("SIP/10.10.50.1-0000000b", >> "ARG1="Abelbeck, Lonnie"") in new stack >> -- Executing [start@sub-test:2] NoOp("SIP/10.10.50.1-0000000b", "ARG2=") >> in new stack >> -- Executing [start@sub-test:3] NoOp("SIP/10.10.50.1-0000000b", "ARG3=") >> in new stack >> -- Executing [start@sub-test:4] Return("SIP/10.10.50.1-0000000b", "") in >> new stack >> == >> Note Macro fails in the same way as Test1 with quoting but GoSub now >> "works" (the comma is no longer parsed) but the downside is the "'s chars >> are now added to ARG1. >> >> >> Test3 code: pass ${CALLERID(name)} with URIENCODE() then URIDECODE() >> -- >> [macro-test] >> exten => s,1,NOOP(ARG1=${URIDECODE(${ARG1})}) >> exten => s,n,NOOP(ARG2=${ARG2}) >> exten => s,n,NOOP(ARG3=${ARG3}) >> >> [sub-test] >> exten => start,1,NOOP(ARG1=${URIDECODE(${ARG1})}) >> same => n,NOOP(ARG2=${ARG2}) >> same => n,NOOP(ARG3=${ARG3}) >> same => n,Return() >> >> exten => 9,1,Set(CALLERID(name)=Abelbeck, Lonnie) >> exten => 9,n,Macro(test,${URIENCODE(${CALLERID(name)})}) >> exten => 9,n,GoSub(sub-test,start,1(${URIENCODE(${CALLERID(name)})})) >> == Output == >> -- Executing [9@default:1] Set("SIP/10.10.50.1-00000014", >> "CALLERID(name)=Abelbeck, Lonnie") in new stack >> -- Executing [9@default:2] Macro("SIP/10.10.50.1-00000014", >> "test,Abelbeck%2C%20Lonnie") in new stack >> -- Executing [s@macro-test:1] NoOp("SIP/10.10.50.1-00000014", >> "ARG1=Abelbeck, Lonnie") in new stack >> -- Executing [s@macro-test:2] NoOp("SIP/10.10.50.1-00000014", "ARG2=") in >> new stack >> -- Executing [s@macro-test:3] NoOp("SIP/10.10.50.1-00000014", "ARG3=") in >> new stack >> >> -- Executing [9@default:3] Gosub("SIP/10.10.50.1-00000014", >> "sub-test,start,1(Abelbeck%2C%20Lonnie)") in new stack >> -- Executing [start@sub-test:1] NoOp("SIP/10.10.50.1-00000014", >> "ARG1=Abelbeck, Lonnie") in new stack >> -- Executing [start@sub-test:2] NoOp("SIP/10.10.50.1-00000014", "ARG2=") >> in new stack >> -- Executing [start@sub-test:3] NoOp("SIP/10.10.50.1-00000014", "ARG3=") >> in new stack >> -- Executing [start@sub-test:4] Return("SIP/10.10.50.1-00000014", "") in >> new stack >> == >> Note the code is messy, but it now works with both Macro and GoSub >> without any added chars to the args. >> >> For this special case, moving the ${CALLERID(name)} call into the Macro >> rather than passing as an argument is the simplest. >> >> The moral to this story is in Asterisk 1.4 the pipe (|) character was >> uncommon in the data and not much of a problem, while in Asterisk 1.8 the >> comma (,) is quite common in data leading to unexpected results. >> >> Lonnie >> >> >> >> -------------------------------------------------------------------------- >> ---- >> Virtualization& Cloud Management Using Capacity Planning >> Cloud computing makes use of virtualization - but cloud computing >> also focuses on allowing computing to be delivered as a service. >> http://www.accelacomm.com/jaw/sfnl/114/51521223/ >> _______________________________________________ >> Astlinux-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/astlinux-users >> >> Donations to support AstLinux are graciously accepted via PayPal to >> [email protected]. >> > > > ------------------------------------------------------------------------------ > Virtualization& Cloud Management Using Capacity Planning > Cloud computing makes use of virtualization - but cloud computing > also focuses on allowing computing to be delivered as a service. > http://www.accelacomm.com/jaw/sfnl/114/51521223/ > _______________________________________________ > Astlinux-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/astlinux-users > > Donations to support AstLinux are graciously accepted via PayPal to > [email protected]. > > > -- Dog is my Co-pilot ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Astlinux-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/astlinux-users Donations to support AstLinux are graciously accepted via PayPal to [email protected].
