Hi Smadi. I have tested the script in my box and seems to be working just fine. By the way, in any programming language, the way to get the asterisk environment vars, and in general all the communication is through STDIN, STDOUT and STDERR
try to give us more info so we can help you best regards On 5/3/05, M.N.A.Smadi <[EMAIL PROTECTED]> wrote: > hi; > > am using an agi script to do some call forwarding. I got the following > pyton script off http://home.cogeco.ca/~camstuff/agi.html: > #!/usr/bin/python > > import sys,string > > class AGI: > """ > Class AGI facilitates writing AGI scripts in Python. > > Exported functions: > > Write(message): > Writes message to Asterisk Console. > > Cmd(command): > Send command to Asterisk, read result. > The result is a two element tuple: > [0] A text string giving the entire result returned by > Asterisk > [1] The "result=" integer extracted from the result line > > If we get an unhappy response from Asterisk or if the result > returned to the right of the equals sign is not an integer we > issue an error message and terminate the script. > > Exported Variables: > > env > Dictionary containing the various environment startup items, as > passed to us by Asterisk. > """ > > def Write(self,data): > """ > Write unbuffered line output to STDERR. > Ensures data is flushed out. > """ > sys.stderr.write(str(data) + "\n") > sys.stderr.flush() > > def Cmd(self,command): > """ > Send an AGI command to Asterisk; read back the response. > The result is a two element tuple: > [0] A text string giving the entire result returned by Asterisk > [1] The "result=" integer extracted from the result line > > If we get an unhappy response from Asterisk or if the result > returned to the right of the equals sign is not an integer we > issue an error message and terminate the script. > """ > try: > sys.stdout.write(str(command) + "\n") > sys.stdout.flush() > Response = sys.stdin.readline() > if Response[:11] <> '200 result=': > #we didn't get a happy response for AGI > raise "AgiError" > #accumulate integer portion > J = 11 > while J < len(Response) and (Response[J] in '0123456789'): > J += 1 > res = Response[11:J] > try: > ResInt = int(res) > except ValueError: > #there is no integer immediatly to the right of the > equal sign > raise "AgiError" > except "AgiError": > self.Error('Unexpected response to AGI command.') > self.Error('Command: %s'%command) > self.Error('Response: %s'%Response) > self.Error('Script terminated.') > sys.exit() > return (Response,ResInt) > > def __init__(self): > """ > Read until blank line to get the AGI environment. > The lines read are used to build the dictionary 'env'. > """ > self.env = {1:'moe',2:'joe'} > while 1: > line = string.strip(sys.stdin.readline()) > if line == '': > #blank line signals end > break > key,data = string.split(line,':') > key = string.strip(key) > data = string.strip(data) > if key <> '': > self.env[key] = data > > ================= > > however i think there is something wrong with initialization code, namely: > > def __init__(self): > """ > Read until blank line to get the AGI environment. > The lines read are used to build the dictionary 'env'. > """ > self.env = {1:'moe',2:'joe'} > while 1: > line = string.strip(sys.stdin.readline()) > if line == '': > #blank line signals end > break > key,data = string.split(line,':') > key = string.strip(key) > data = string.strip(data) > if key <> '': > self.env[key] = data > > because when i replace that piece of code with my own hardcode variables > things work just fine. > > Now my question is does anybody have a clue why this code is not > working? or alternatively how can i read the environment variables in > python? > > thanks > m.smadi > _______________________________________________ > Asterisk-Users mailing list > [email protected] > http://lists.digium.com/mailman/listinfo/asterisk-users > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > -- "Su nombre es GNU/Linux, no solamente Linux, mas info en http://www.gnu.org" _______________________________________________ Asterisk-Users mailing list [email protected] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
