1.2.4 - Backported Thor-based generators from Adhearsion 2 in order to escape Rubigen. 1.2.3 - Changes from 1.2.2, without an accidental API change which slipped in 1.2.2 - yanked - Fixed a console bug related to recent versions of Pry passing extra arguments. Thanks to Alvaro Parres - Introducing new :initial_timeout and :interdigit_timeout options to #input in order to control the wait delay for the 1st and subsequent digits, respectively. Maintains support for the existing :timeout option. (https://github.com/adhearsion/adhearsion/pull/41) - Updated #input documentation for new features in Adhearsion 1.2.x - Fix bug where setting log formatters when demonising would not work (https://github.com/adhearsion/adhearsion/issues/36) 1.2.1 - Removed the restful_rpc component since it is now in a gem. - Allow overriding the path to a component in the testing framework so as to support new style components (lib/) - Added a GUID to the default recording filename to ensure uniqueness - ECONNRESET exceptions are now handled as a call hangup - Fixed escaping of TTS strings containing commas when used with Cepstral via #speak - Made logging exceptions the responsibility of the framework rather than the app, so that this may not be disabled 1.2.0 - New method: #play_or_speak allows playback of an audio file with TTS fallback - #input now takes :speak as a hash for TTS prompt or fallback - New method: #speak provides abstracted TTS rendering for UniMRCP and Cepstral - Allow leading "+" in Caller ID (E.164 format) - Allow using --pid-file without "daemon" for JRuby - Allow passing a block to #input to enable caller to detect when enough digits are collected. - Fix some issues with starting apps outside of their directory, generally related to Bundler/gem environments - Allow configuration of logging outputters/formatters - Using ahn_log in a dialplan context or on a call object logs to the call's context, named after its unique identifier - New method: #record_to_file with more useful return values 1.1.1 - Command#play now returns false if audio failed to play - Added new commands (#play!, #interruptible_play!, #input!) which raise PlaybackError if audio fails to play 1.1.0 - Added interactive call control console: ahn start console - Added centralized exception handler through eventing system - Support for using ahn_hoptoad to send Adhearsion exceptions to Hoptoad - Adhearsion.active_calls can now use hash syntax to find calls by ID - Added Adhearsion::Calls#to_h - Add a Monitor to synchronize access to an AGI connection 1.0.3 - Fix the play() command regression when passing an array of strings. This was breaking the SimonGame - Deprecate ManagerInterface#send_action_asynchronously 1.0.2 - Fix rcov Rake task - Add Ben Langfeld as an author (Thanks, Ben!) - Add "rake" as a runtime dependency - Remove usage of BEGIN blocks (for Rubinius; CS) 1.0.1 NOTE for Ruby 1.9 users: The behavior of Ruby 1.9 and case statements has changed in a way that renders NumericalString objects incompatible with case statements. The suggested workaround is to cast the NumericalString to a string and then compare. Example: obj = NumericalString.new("0987") case obj.to_s when "0987" then true else false end Or, if you need to ignore the leading zero: case obj.to_i when 987 then true else false end See https://adhearsion.lighthouseapp.com/projects/5871/tickets/127-ruby-19-and-numericalstring-comparisons-in-case-statements - Add say_chars command. - Add say_phonetic command. - Update play_time to accept format and timezone paramenters. This allows you to read back any particular section of the Time object. (i.e. Using format => 'IMp' would result in "eleven twenty-three" being said.) - Update play_time to allow using Date objects. - QueueAgentsListProxy#new now returns an AgentProxy instance if the agent was added successfully. - Add state_interface parameter to QueueAgentsListProxy#new. This allows you to specify a separate interface to watch for state changes on. (i.e. Your agents log in with Local channel extensions, but you want to check their direct SIP exten for state.) - Fixed issue with Queue#join! that would raise a QueueDoesNotExist error if the call was completed successfully. - Add support for AGI script parameter to Queue#join! - Migrate unit tests to RSpec 2 - New components now include RubyGems skeleton files - Fix support for setting Caller ID name on AGI dial() command - Generate new apps with Bundler support, including auto-requiring of all gems - Update component testing framework to RSpec 2.x and mock with rspec 1.0.0 - Fall back to using Asterisk's context if the AGI URI context is not found - Enable configuration of :auto_reconnect parameter for AMI - Replace all uses of Object#returning with Object#tap - Add support for loading Adhearsion components from RubyGems - Fix long-running AMI session parser failure bug (#72) - Support for Rails 3 (and ActiveSupport 3.0) 0.8.6 - Fix packaging problem so all files are publicly readable - Improve AMI reconnecting logic; add "connection refused" retry timer - AGI protocol improvements: parse the status code and response text 0.8.5 NOTE: If you are upgrading an Adhearsion application to 0.8.5, note the change to how request URIs are handled. With 0.8.4, the context name in Asterisk was required to match the Adhearsion context in dialplan.rb. Starting in 0.8.5 if an application path is passed in on the AGI URI, it will be preferred over the context name. For example: [stuff] exten => _X.,1,AGI(agi://localhost/myapp) AHN 0.8.4- will execute the "stuff" context in dialplan.rb AHN 0.8.5+ will execute the "myapp" context in dialplan.rb If you followed the documentation and did not specify an application path in the URI (eg. agi://localhost) you will not be impacted by this change. Other changes: - Added XMPP module and sample component. This allows you to easily write components which utilise a persistent XMPP connection maintained by Adhearsion - Prefer finding the dialplan.rb entry point by the AGI request URI instead of the calling context - Added :use_static_conf option for "meetme" to allow the use of disk-file-managed conferences - Logging object now shared with ActiveRecord and Blather - Fixed a longstanding bug where newlines were not sent after each AGI command - Fixed parsing of DBGet AMI command/response - Better shutdown handling/cleanup - Attempt to allow the AMI socket to reconnect if connection is lost - Improved support for Ruby 1.9 - Numerous smaller bugs fixed. See: https://adhearsion.lighthouseapp.com/projects/5871-adhearsion/milestones/76510-085 0.8.4 - Add configurable argument delimiter for talking to Asterisk. This enables Adhearsion to support Asterisk versions 1.4 (and prior) as well as 1.6 (and later). - Fixed using ActiveRecord in Adhearsion components - Daemonizing no longer truncates the Adhearsion log file - Add support for using ActiveLdap - Misc improvements to support Asterisk 1.6 changes - Escape commands sent to Asterisk via AGI - Manager Events now work when daemonized 0.8.3 - The "uniqueid" call channel variable available in dialplan.rb is now *always* a String - Renamed interruptable_play to interruptible_play and made interruptible_play() public instead of protected. - Fixed an Asterisk Manager Interface parsing issue in which colons sometimes got stuck into the key name. - AGI "request" variable coercer will not blow up if no request is given. (Helps in testing with netcat/telnet) 0.8.2 - When a call hangs up, Adhearsion will no longer show random exceptions (that were okay) and instead allows the user to rescue a Hangup exception. - ManagerInterfaceResponse now include()s DRbUndumped, allowing send_action() to be called directly over DRb. - Fixes an inconsequential bug when CTL-C'ing Adhearsion. 0.8.1 - The sandbox component now comes - Minor bug fixes 0.8.0 rev 2 - Added a few non-critical files to the .gemspec. They were ignored Notes from before 0.8.0: - (NOTE: This is obviously not a comprehensive list of pre-0.8.0 work. 0.8.0 was a complete rewrite of the previous version) - Adding a deprecation warning about Fixnum#digit and Fixnum#digits - Removed the AMI class and replaced it with the ManagerInterface class. - The old AMI high-level instance methods are available in the new ManagerInterface class, but a deprecation warning will be logged each time they're used. When the SuperManager class is implemented, they'll be removed entirely. - Moved Theatre into Adhearsion's lib folder.