#! /usr/local/bin/ruby require 'socket' class AstManager attr_accessor :connected def initialize(user,password,host,port=5038) packet=packetize({"Action"=>"login","Username"=>user,"Secret"=>password}) @sct=TCPSocket.new(host,port) puts @sct @connected=send_packet(packet) end def send_packet(str) flags=Socket::PF_INET @sct.send(str, flags) srec="" while true aIn=@sct.recvfrom(1000) srec << aIn[0] break if srec =~/\r\n\r\n$/ end return srec end def login(str) if send_packet(str)=~/Success/ return true else return false end end def packetize(hvars) raise "Hash sent must have key \'Action\'!" if not hvars['Action'] str="Action: " + hvars['Action'] + "\r\n" hvars.each do |k,v| next if k=='Action' if v.class.to_s=="Hash" v.each do |key,value| str << "Variable: #{key}=#{value}\r\n" end else str << "#{k}: #{v}\r\n" if not v=="" end end str += "\r\n" return str end end if __FILE__ == $0 require 'rubygems' require 'postgres-pr/connection' db=PostgresPR::Connection.new('CONFERENCES', 'ellingson') sSQL="select u.fname || \' \' || u.lname as name, u.phone,u.uid from users u, conferences_users cu where cu.uid=u.uid and cu.cid=101;" rs=db.query(sSQL) man=AstManager.new('remoteman','ropeaman','ast.powernav.com') if man.connected hvars={'Action'=>'Originate', 'Channel' => "Local/outbound@dialoutconf/n", 'Callerid' => '6789994380', 'Context' => 'dialoutconf_next', ' MaxRetries' => '', ' RetryTime' => '', ' WaitTime' => '', 'Exten' => 's', 'Priority' => '1', 'Variable' => {'CallInitiate_phonenumber' => '17703147323', 'CallInitiate_person' => "\"Ernie Ellingson\"", 'CallInitiate_conferenceName' => "atlrug", 'cid' => '', 'uid' => ''} } rs.rows.each do |name| hvars['Variable']['CallInitiate_person']=name[0] phoner="" phoner="1" if name[1] =~/^\d+\d$/ hvars['Variable']['CallInitiate_phonenumber']=phoner + name[1] hvars['Variable']['cid']='101' hvars['Variable']['uid']=name[2].to_s puts hvars['Variable']['CallInitiate_phonenumber'] man.send_packet(man.packetize(hvars)) sleep 15 end end end