Hisashi Adachi
2007-Apr-12 17:26 UTC
[asterisk-users] RAGI channel_status() never returnes
Hi there, I am new to this ML. Recently I started working on Asterisk 1.4 + RAGI + Ruby on Rails to create a call history browser. To record call history, I am trying to capture dialup, answer and hangup events. To check what status a call is, I use channel_status() that RAGI provides. I am having a trouble on this function. In a polling loop that checks call status, the first call of channel_status() returns -1 that indicates a failure. Then the second call never returns to caller once called. Below is a debug log and the code snippet of my app: debug log: [2007-04-13 08:42:40] INFO Dialup [2007-04-13 08:42:40] INFO Dialing [2007-04-13 08:42:40] INFO Waiting for call to be done [2007-04-13 08:42:40] INFO -1 [2007-04-13 08:42:48] INFO Hangup code: require 'ragi/call_handler' require "thread" class CallHistoryHandler < RAGI::CallHandler def dialup logger = WEBrick::Log::new logger.info("Dialup") hangup = false; Thread.start { # Keep running until the call is hung up while hangup == false # The 1st call returns -1 # The 2nd call never returns status = channel_status() # To show the polling loop keeps on running logger.info("Waiting for call to be done") if status == 4 logger.info("Ringing") # Still ringing elsif status == 6 logger.info("Answered") # Call is answered else logger.info(status) end end # dial() is done logger.info("Call has been hung up") } logger.info("Dialing") dial('IAX2/' + @params['agi_extension']) # Place a call hangup = true; # Notify the call is hung up. logger.info("Hangup") end end Does anyone have clue about why the 2nd call of channel_status() never returns? Best regards, Hisashi Adachi hadachi@gmail.com