Find Out Which Key Ended Recording?

Home » Asterisk Users » Find Out Which Key Ended Recording?
Asterisk Users 6 Comments

Hello,

We have a need to record audio and allow the user to press any DTMF key to end the recording. Currently we’re using the AGI command “record file”
which does allow us to specify which DTMF keys can end the recording.

However we also need to know *which* key actually ended the recording. Note that only allowing # or * to end the recording won’t work for us.

Does anyone know how we can tell which key ended the recording? Thanks in advance for any help.

6 thoughts on - Find Out Which Key Ended Recording?

  • Here’s a snippet from one of my AGIs:

    // record the voice
    exec_agi(“RECORD FILE”
    ” %s” // filename
    ” wav” // format
    ” #*1234567890″
    // escape digits
    ” %d000″ // timeout in ms
    ” BEEP” // BEEP
    , recorded_path
    , recording_limit
    );

    // should we abort?
    if (‘*’ == agi_environment.result)
    {
    agi_set_variable(“STATUS”, “*”);
    exit(EXIT_SUCCESS);
    }

    // are we finished?
    if (‘#’ == agi_environment.result)
    {
    break;
    }

    Looks like agi_environment.result is your Huckleberry.


    Thanks in advance,
    ————————————————————————-
    Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
    https://www.linkedin.com/in/steve-edwards-4244281

  • Hi Steve,

    What language is that please? We’re using Perl and so far I haven’t found an equivalent there.

    Thanks for your help.

  • But you should never turn down an opportunity to develop your skills 🙂

    Try something like:

    my $result = $AGI->record_file(
    ‘/tmp/foo’ # filename
    , ‘wav’ # format
    , ‘#*0123456789’ # escape digits
    , ‘5000’ # timeout
    );
    $AGI->verbose(‘result = ‘ . $result, 0);

    Which results in:

    AGI Rx << RECORD FILE /tmp/foo wav #*0123456789 5000 AGI Tx >> 200 result=50 (dtmf) endpos=0
    AGI Rx << VERBOSE "result = 50" when '2' is pressed. -- Thanks in advance, ------------------------------------------------------------------------- Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
    https://www.linkedin.com/in/steve-edwards-4244281

  • But you should never turn down an opportunity to develop your skills 🙂

    Try something like:

    my $result = $AGI->record_file(
    ‘/tmp/foo’ # filename
    , ‘wav’ # format
    , ‘#*0123456789’ # escape digits
    , ‘5000’ # timeout
    );
    $AGI->verbose(‘result = ‘ . $result, 0);

    Which results in:

    AGI Rx << RECORD FILE /tmp/foo wav #*0123456789 5000 AGI Tx >> 200 result=50 (dtmf) endpos=0
    AGI Rx << VERBOSE "result = 50" when '2' is pressed. -- Thanks in advance, ------------------------------------------------------------------------- Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
    https://www.linkedin.com/in/steve-edwards-4244281

  • Hi Steve,

    Thank you very much for that information. The result is the key in ascii perfectly!