Search:
     
3CX Phone System for Windows Download the Free Edition

Asterisk Realtime - Ruby on Rails Migrations and Models

Asterisk RealTime - Ruby on Rails Migrations & Models


Using Ruby on Rails Migrations the below will support any combination of database that ActiveRecord and Asterisk Realtime Architecture support, including of course MySQL and Postgres.

Ruby on Rails Models are then provided to be dropped into any Ruby on Rails application that requires the ability to configure Asterisk via the Asterisk Realtime Architecture.

Migrations (db/schema.rb)


ActiveRecord::Schema.define() do

 #Use the same table for IAX2 and SIP configuration
 create_table "devices", :force => true do |t|
   t.column :name,               :string, :limit => 80
   t.column :accountcode,        :string, :limit => 20
   t.column :amaflags,           :string, :limit => 13
   t.column :callgroup,          :string, :limit => 10
   t.column :callerid,           :string, :limit => 80
   t.column :canreinvite,        :string, :limit => 3, :default => 'yes'
   t.column :context,            :string, :limit => 80
   t.column :defaultip,          :string, :limit => 15
   t.column :dtmfmode,           :string, :limit => 7
   t.column :fromuser,           :string, :limit => 80
   t.column :fromdomain,         :string, :limit => 80
   t.column :fullcontact,        :string, :limit => 80
   t.column :host,               :string, :limit => 31, :default => 'dynamic'
   t.column :insecure,           :string, :limit => 4
   t.column :language,           :string, :limit => 2
   t.column :mailbox,            :string, :limit => 50
   t.column :md5secret,          :string, :limit => 80
   t.column :nat,                :string, :limit => 5, :default => 'no'
   t.column :deny,               :string, :limit => 95
   t.column :permit,             :string, :limit => 95
   t.column :mask,               :string, :limit => 95
   t.column :pickupgroup,        :string, :limit => 10
   t.column :port,               :string, :limit => 5, :default => ''
   t.column :qualify,            :string, :limit => 3
   t.column :restrictcid,        :string, :limit => 1
   t.column :rtptimeout,         :string, :limit => 3
   t.column :rtpholdtimeout,     :string, :limit => 3
   t.column :secret,             :string, :limit => 80
   t.column :type,               :string, :limit => 6, :default => 'friend'
   t.column :username,           :string, :limit => 80
   t.column :disallow,           :string, :limit => 100
   t.column :allow,              :string, :limit => 100
   t.column :musiconhold,        :string, :limit => 100
   t.column :regseconds,         :integer, :limit => 11, :default => 0
   t.column :ipaddr,             :string, :limit => 15, :default => '0'
   t.column :regexten,           :string, :limit => 80
   t.column :cancallforward,     :string, :limit => 3, :default => 'yes'
   t.column :setvar,             :string, :limit => 100
   #Additional fields for IAX2
   t.column :dbsecret,           :string, :limit => 100
   t.column :inkeys,             :string, :limit => 100
   t.column :outkey,             :string, :limit => 100
   t.column :auth,               :string, :limit => 100
 end
 
 #Asterisk extensions table
 create_table "extensions", :force => true do |t|
   t.column :context,                :string, :limit => 20, :null => false
   t.column :exten,                  :string, :limit => 20, :null => false
   t.column :priority,               :integer, :limit => 4, :default => 0
   t.column :app,                    :string, :limit => 20, :null => false
   t.column :appdata,                :string, :limit => 128, :null => false
 end
 
 #Asterisk queues table
 create_table "callqueues", :force => true do |t|
   t.column :name,                   :string, :limit => 128
   t.column :musiconhold,            :string, :limit => 128
   t.column :announce,               :string, :limit => 128
   t.column :timeout,                :integer, :limit => 11
   t.column :monitor_join,           :boolean
   t.column :monitor_format,         :string, :limit => 128
   t.column :queue_youarenext,       :string, :limit => 128
   t.column :queue_thereare,         :string, :limit => 128
   t.column :queue_callswaiting,     :string, :limit => 128
   t.column :queue_holdtime,         :string, :limit => 128
   t.column :queue_minutes,          :string, :limit => 128
   t.column :queue_seconds,          :string, :limit => 128
   t.column :queue_lessthan,         :string, :limit => 128
   t.column :queue_thankyou,         :string, :limit => 128
   t.column :queue_reporthold,       :string, :limit => 128
   t.column :announce_frequency,     :integer, :limit => 11
   t.column :announce_round_seconds, :integer, :limit => 11
   t.column :announce_holdtime,      :string, :limit => 128
   t.column :retry,                  :integer, :limit => 11
   t.column :wrapuptime,             :integer, :limit => 11
   t.column :maxlen,                 :integer, :limit => 11
   t.column :servicelevel,           :integer, :limit => 11
   t.column :strategy,               :string, :limit => 128
   t.column :joinempty,              :string, :limit => 128
   t.column :leavewhenempty,         :string, :limit => 128
   t.column :eventmemberstatus,      :boolean
   t.column :eventwhencalled,        :boolean
   t.column :reportholdtime,         :boolean
   t.column :memberdelay,            :integer, :limit => 11
   t.column :weight,                 :integer, :limit => 11
   t.column :timeoutrestart,         :boolean
 end

 #Asterisk voicemail extended table
 create_table "voicemailboxes", :force => true do |t|
   t.column :customer_id,            :string, :limit => 11, :null => false
   t.column :context,                :string, :limit => 50, :default => '0'
   t.column :mailbox,                :string, :limit => 11, :null => false
   t.column :password,               :integer, :limit => 5, :default => '0'
   t.column :fullname,               :string, :limit => 150, :null => false
   t.column :email,                  :string, :limit => 50, :null => false
   t.column :pager,                  :string, :limit => 50, :default => ''
   t.column :tz,                     :string, :limit => 10, :default => 'central'
   t.column :attach,                 :string, :limit => 4, :default => 'yes'
   t.column :saycid,                 :string, :limit => 4, :default => 'yes'
   t.column :dialout,                :string, :limit => 10, :default => ''
   t.column :callback,               :string, :limit => 10, :default => ''
   t.column :review,                 :string, :limit => 4, :default => 'no'
   t.column :operator,               :string, :limit => 4, :default => 'no'
   t.column :envelope,               :string, :limit => 4, :default => 'no'
   t.column :sayduration,            :string, :limit => 4, :default => 'no'
   t.column :saydurationm,           :integer, :limit => 4, :default => 1
   t.column :sendvoicemail,          :string, :limit => 4, :default => 'no'
   t.column :delete,                 :string, :limit => 4, :default => 'no'
   t.column :nextaftercmd,           :integer, :limit => 4, :default => 'yes'
   t.column :forcename,              :integer, :limit => 4, :default => 'no'
   t.column :forcegreetings,         :integer, :limit => 4, :default => 'no'
   t.column :hidefromdir,            :string, :limit => 4, :default => 'yes'
   t.column :stamp,                  :timestamp
 end

 #Asterisk voicemail extended table
 create_table "voicemailmessages", :force => true do |t|
   t.column :msgnum,                 :integer, :limit => 11, :default => 0
   t.column :dir,                    :string, :limit => 80, :default => ''
   t.column :context,                :string, :limit => 80, :default => ''
   t.column :macrocontext,           :string, :limit => 80, :default => ''
   t.column :callerid,               :string, :limit => 40, :default => ''
   t.column :origtime,               :string, :limit => 40, :default => ''
   t.column :duration,               :string, :limit => 20, :default => ''
   t.column :mailboxuser,            :string, :limit => 80, :default => ''
   t.column :mailboxcontext,         :string, :limit => 80, :default => ''
   t.column :recording,              :longblob
 end
   
end



Models (app/models/)


app/models/callqueue.rb

class Callqueue < ActiveRecord::Base
  validates_presence_of :name
  validates_uniqueness_of :name
end


app/models/device.rb

class Device < ActiveRecord::Base
  validates_presence_of :name, :context
  validates_uniqueness_of :name
end


app/models/extension.rb

class Extension < ActiveRecord::Base
 validates_presence_of :context, :exten, :priority, :app, :appdata
end


app/models/voicemailbox.rb

class Voicemailbox < ActiveRecord::Base
 validates_presence_of :customer_id
 validates_uniqueness_of :customer_id
end


app/models/voicemessage.rb

class Voicemailmessage < ActiveRecord::Base
end




See Also


Created by: muppetmaster,Last modification on Wed 25 of Nov, 2009 [08:36 UTC] by admin


Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - support@voip-info.org

Page Changes | Comments

 





Search: