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].

Reply via email to