[asterisk-users] Passing literals with commas to subroutine [SOLVED]

Eric Wieling EWieling at nyigc.com
Thu Dec 11 09:51:40 CST 2014


The easiest way is to escape the commas is with a \ (backslash). 

-----Original Message-----
From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-bounces at lists.digium.com] On Behalf Of A J Stiles
Sent: Thursday, December 11, 2014 7:41 AM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] Passing literals with commas to subroutine [SOLVED]

On Tuesday 09 Dec 2014, Daniel Gonzalez wrote:
> Hi,
> 
> Let's say I do:
> 
> Set(data=xxx,yyy)
> Gosub(my-sub,s,1(${data}))
> 
> My subroutine will only receive "xxx" for ARG1. How can I pass a literal
> with a comma to a single argument in a subroutine?
> 
> (The point is: when calling the subroutine I do not know if the variable
> has a comma or not.)

O.K.  I've managed to set myself up a temporary Asterisk box, so I was able to 
do some testing without risking bringing down a production server  :)  And I 
have managed to put together a solution, if you can call it that.

If you put speech marks around the argument, like so:
 Gosub(my-sub,s,1("${data}"))
then what actually comes through in ${ARG1} is
 "xxx,yyy"
(complete with the speech marks).  But at least that comma is protected.  So 
then within my-sub, you just need to evaluate ${ARG1:1:-1}, ${ARG2:1:-1} &c. 
to strip off the first and last characters  (skip one, show all but one).  


It's a bit ugly -- but so is a lot of stuff written in the Dialplan.  Just 
because a language is Turing-complete, doesn't mean any code written in it is 
going to be pretty.  But you might be able to mitigate some of the ugliness 
with comments  (introduced with a semicolon in Dialplan, because the comment 
mark is a valid "digit").

-- 
AJS

Note:  Originating address only accepts e-mail from list!  If replying off-
list, change address to asterisk1list at earthshod dot co dot uk .

-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users



More information about the asterisk-users mailing list