Douglas Garstang
2006-Jan-12 15:45 UTC
[Asterisk-Users] Sending commands to Asterisk via FastAGI
I have a fast agi python script that reads some numbers from MySQL, and then instructs asterisk to try those numbers in sequential order. ie: def run(self): agi = AGI(self.client) db = MySQLdb.connect(host="192.168.10.15",user="user",passwd="password",db="somedb") c = db.cursor() c.execute("""Select * from ast_dp""") data = c.fetchall() for i in data: str = "EXEC " + i[4] + " \"" +i[5] + "/" + i[6] + "|" + i[7] + "\" \"\"\n" self.client.send(str) print str c.close() I have noticed that when you send a list of instructions to Asterisk via AGI that Asterisk doesn't block on each command. It accepts all the commands at once, and must pool them internally I guess. This is different to regular AGI where Asterisk will not take the next command until the current one has finished processing (eg a dial with a timeout of 20s for example). This seems to have the affect that when I hang up the caller, the first number stops ringing, and then the second will ring for a fraction of a second before also stopping. It's like Asterisk starts to process the command before it realises it's been cancelled. Not good! Anyone seen this before? I was seeing a similar problem yesterday with a perl Agi script (not FastAGI). After hanging up the caller, the current callee would continue to ring for a fraction of a second after the caller had hung up. Also not good! Thanks, Douglas.