AGI record_file save file on hangup

Hi is there a way for AGI record_file to save file if user hangup in the middle of recording or I must use record with k option?

Seems to work for me. Here’s the AGI debug to compare:

<PJSIP/anonymous-00000002>AGI Rx << record file /tmp/response wav #*1234567890 1800000 BEEP
    -- <PJSIP/anonymous-00000002> Playing 'beep.slin' (language 'en')
       > 0x7f67bc017a60 -- Strict RTP learning complete - Locking on source address 192.168.0.31:14430
<PJSIP/anonymous-00000002>AGI Tx >> 200 result=-1 (hangup) endpos=135200
    -- <PJSIP/anonymous-00000002>AGI Script voice completed, returning 4

If this doesn’t help, please reply with more details:

  1. OS flavor and version
  2. Asterisk version
  3. The console log (with verbose > 2 and agi set debug on)

Hi below is how am using record_file.
I know with dialplan Record Application it has k for option to Keep recorded file upon hangup but AGI record_file don’t seem to have such. So you are able to use record_file to save recorded file even if user hangup in the middle of recording?
Am using Asterisk 16 on Ubuntu 18.04

`$agi->record_file("/var/lib/asterisk/agi-bin/filename",“wav”,“1234567890”,45000,null,true,3);

debug log below when user hangup in the middle of recording and it fail to save recorded file:

<SIP/john-00000004>AGI Rx << RECORD FILE /var/lib/asterisk/agi-bin/filename wav "" 45000 BEEP s=3
    -- <SIP/john-00000004> Playing 'beep.gsm' (language 'en')
[Jun 17 11:25:21] WARNING[3034]: db.c:332 ast_db_put: Couldn't execute statment: SQL logic error
<SIP/john-00000004>AGI Tx >> 200 result=-1 (hangup) endpos=47680
    -- <SIP/john-00000004>AGI Script /var/lib/asterisk/agi-bin/record_script.php completed, returning 4

`

I believe all AGI does is invoke the internal asterisk function record, so the ‘k’ is needed

There are no options in the AGI ‘record file’ command

[Syntax]
record file <filename> <format> <escape_digits> <timeout> [<offset samples>] [<BEEP>] [<s=silence>]

I execute your ‘record file’ command and I get a WAV file that plays nearly to the point of hangup – meaning I say: “one two three four” and hangup as I say the ‘r’ in four and my recording contains “one two three.”

<SIP/john-00000004>AGI Rx << RECORD FILE /var/lib/asterisk/agi-bin/filename wav "" 45000 BEEP s=3
<SIP/poly-77a1-0000000c>AGI Rx << RECORD FILE /var/lib/asterisk/agi-bin/filename wav "" 45000 BEEP s=3

(BTW, recording to a ‘bin’ directory is valid, but seems weird. I wouldn’t clutter up a somewhat stable directory with somewhat temporary files.)

This is on:

Raspbian GNU/Linux 9
Asterisk 13.14.1~dfsg-2+deb9u4,

If i press any of the escape digit or wait for the silence/timeout period it will actually save the file but if i hangup in the middle of the call it does not save it.

After the record_file, the script needs to run the playback below with a thank you message. But i don’t think this is the cause
$agi->exec('Playback',"/var/lib/asterisk/agi-bin/thanks_survey");

I’m outta time (and ideas), but here’s what I was testing with:

<?php

        require('phpagi-2.20/phpagi.php');
        $agi = new AGI();

// record file then hangup
//      $agi->evaluate('record file /var/lib/asterisk/agi-bin/evaluate wav "" 45000 BEEP s=3'); // works
//      $agi->exec('record /var/lib/asterisk/agi-bin/exec.wav 3 45 k');                         // didn't work
//      $agi->record_file('/var/lib/asterisk/agi-bin/record_file', 'wav', '', 45000, true, 3);  // works

I suspect ‘exec’ probably works and I just did something wrong.

FWIW, I tend to use (my C library):

        agi_evaluate("exec monitor wav...

and

        agi_evaluate("stream file...

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.