From 0fdcd306f85a1290e0f7e55898a473df36798c72 Mon Sep 17 00:00:00 2001 From: Stephen George Date: Fri, 19 Jul 2019 17:41:14 -0500 Subject: [PATCH] [DOC] Document that nil is a possible return value of #execute_agi_command --- lib/adhearsion/translator/asterisk/call.rb | 2 +- .../translator/asterisk/call_spec.rb | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) 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