diff --git a/lib/adhearsion/translator/asterisk/call.rb b/lib/adhearsion/translator/asterisk/call.rb index dd4d124d4..65c649188 100644 --- a/lib/adhearsion/translator/asterisk/call.rb +++ b/lib/adhearsion/translator/asterisk/call.rb @@ -309,7 +309,7 @@ def execute_command(command) end # - # @return [Hash] AGI result + # @return [Hash, nil] AGI result, or nil if it is detected that the call is hung up. # # @raises RubyAMI::Error, ChannelGoneError def execute_agi_command(command, *params) diff --git a/spec/adhearsion/translator/asterisk/call_spec.rb b/spec/adhearsion/translator/asterisk/call_spec.rb index d4b84d3c3..ef89e202c 100644 --- a/spec/adhearsion/translator/asterisk/call_spec.rb +++ b/spec/adhearsion/translator/asterisk/call_spec.rb @@ -2064,6 +2064,25 @@ def grxml_doc(mode = :dtmf) expect(fut.value).to eq({code: 200, result: 123, data: 'timeout'}) end end + + context 'of type Hangup' do + let :ami_event do + RubyAMI::Event.new 'Hangup', + 'Uniqueid' => "1320842458.8", + 'Calleridnum' => "5678", + 'Calleridname' => "Jane Smith", + 'Cause' => '16', + 'Cause-txt' => 'Normal Clearing', + 'Channel' => "SIP/1234-00000000" + end + + it 'should return nil' do + fut = Celluloid::Future.new { subject.execute_agi_command 'EXEC ANSWER' } + sleep 0.25 + subject.process_ami_event ami_event + expect(fut.value).to be_nil + end + end end describe 'when receiving an Asterisk 13 AsyncAGIExec event' do