The Adhearsion team announces Adhearsion version 1.0.3. This is a minor bug-fix release with only two notable changes:
- Fix the play() command regression when passing an array of strings.
This was breaking the SimonGame.
- Deprecate ManagerInterface#send_action_asynchronously.
This interface continues to function, but will now generate warnings.
The second one may be interesting to anyone doing tricky things with AMI, though I suspect most people will not be impacted at all. During some in-the-field testing, we discovered that Adhearsion’s asynchronous AMI feature would allow you to stack up AMI actions on the Asterisk socket faster than Asterisk would process them. In practice, this would mean that AMI actions could get silently eaten. We found the issue first while trying to generate a large volume of calls for testing, but it could happen any time you send a large volume of AMI actions asynchronously. As it turns out, this is a documented limitation> of Asterisk. Because of this, we made the decision to deprecate Adhearsion’s asynchronous manager interface feature. If, for some reason, you need to be able to do some processing while an AMI action is waiting on a response, we recommend the use of a Ruby thread. However, this use case is probably very rare and, usually, there is usually a better way to do it.
To be clear: this change has nothing at all to do with Asynchronous Originate as supported by Asterisk. Example:
Adhearsion::VoIP::Asterisk.manager_interface.send_action 'Originate', :Channel => 'Local/s@example', :Application => 'musiconhold', :Async => true
Note the :Async header at the end. This instructs Asterisk to originate the channel asynchronously, which is completely different from Adhearsion’s asynchronous AMI actions. This asynchronous origination mechanism remains completely supported by Adhearsion and is the recommended way to originate large volumes of calls quickly.
Finally, we anticipate this will be the last release of the 1.0 series of Adhearsion. We have some exciting new features coming for Adhearsion 1.1 which we will be talking about in the near future. Stay tuned!