[asterisk-users] Can anyone help with a quick app_record.c module improvement and can explain over-riding modules?

Antony Stone Antony.Stone at asterisk.open.source.it
Sat Jan 20 11:53:28 CST 2018


On Saturday 20 January 2018 at 18:45:49, Jonathan H wrote:

> Oh, what a good idea! That's exactly the kind of lateral thinking I
> was hoping someone would come up with.
> 
> I thought it was called MixMonitor, and tried to wrap my head around
> it but couldn't.

MixMonitor is related, but different (and as the name suggests, automatically 
mixes the two channels, so I think Tim's suggestion to use Monitor is much 
better.

Note that you may well need to use the 'b' option with Monitor, to make sure 
you can record when there's no bridge between two channels.

> I'll give this a go tomorrow and let you know what I come up with!

Please do report back - this is a useful feature.


Antony.

> On 20 January 2018 at 17:03, Tim S wrote:
> > Just a quick and dirty thought, try the MONITOR application.
> > 
> > 
> > Pseudo-code:
> > 
> > Anchor-point
> > PLAYBACK ("press or say")
> > MONITOR (use the split audio files mode, not the mixed - this way you can
> > roughly separate which side did the "talking")
> > READ (audio file "1 to 5", try to grab one digit)
> > STOPMONITOR
> > IF (READ variable timed-out, send the incoming half of the monitor file
> > to Google Speech)
> > 
> >      Playback (some sound effect to indicate "thinking" on the Asterisk
> >      side
> > 
> > - user feedback is good)
> > 
> >      Check Google Speech result against a white-list
> >      IF filtered result was not a valid option
> >      
> >          PLAYBACK "I didn't understand that"
> >          GOTO to Anchor-point
> >      
> >      ELSE
> >      
> >          Goto next step using valid decoded speech data
> > 
> > ELSE
> > 
> >      Check DTMF result against a white-list
> >      IF filtered DTMFresult was not a valid option
> >      
> >          PLAYBACK "I didn't understand that"
> >          GOTO to Anchor-point
> >      
> >      ELSE
> >      
> >          Goto next step using valid decoded DTMF data
> > 
> > Catch-all, should never get here.
> > 
> > /Pseudo-code
> > 
> > 
> > Don't forget to filter your user sourced data against your white-list,
> > always assume users are hostile, this is part of the total picture of
> > defence-in-depth.
> > 
> > -Tim
> > 
> > On Sat, Jan 20, 2018 at 12:42 AM, Jonathan H wrote:
> >> Hello,
> >> 
> >> I want to start recording with a prompt of "press or say 1 to 5". If
> >> no DMTF is pressed, I want to send the recording to Google Speech to
> >> get the number back (got that part working already).
> >> 
> >> If any dtmf key is pressed while Application_Record  is running with
> >> option y, then the recording terminates and sends
> >> RECORD_STATUS of "DTMF" (A terminating DTMF was received).
> >> 
> >> But I need to know **what** number that DTMF was, and I can't see a
> >> way of grabbing it after the fact.
> >> 
> >> I can see in the code where the right variables are..
> >> 
> >> https://github.com/asterisk/asterisk/blob/master/apps/app_record.c#L140
> >> dtmf_response
> >> 
> >> https://github.com/asterisk/asterisk/blob/master/apps/app_record.c#L166
> >> * \param dtmf_integer the integer value of the DTMF key received
> >> 
> >> So,3 questions I guess:
> >> 
> >> 1: Am I going about this the right way? (unimrcp is not an option here)
> >> 2: Can someone explain in layman's terms how a simpleton like me could
> >> copy, hack about with and make a new module, like, for example,
> >> app_record_alt.c, that would stick around each time I updated Asterisk
> >> from source?
> >> 3: Or, is anyone willing to make the simple code change to the file to
> >> improve it to send back the DTMF to the dialplan? For free to improve
> >> core code? If not, and I posted on the commercial list, how much would
> >> I be looking at to modify about 6 lines of code and return an extra
> >> variable?
> >> 
> >> So, ultimately, I'm hoping for something like:
> >> 
> >> Currently:
> >> option "y" returns a RECORD_STATUS of "DTMF" if a key was press
> >> 
> >> Hopefully:
> >> option "z" returns a RECORD_STATUS of <dtmf-value> showing which key
> >> was pressed.
> >> Or possibly even DTMF_VALUE (if an app can return two variables to the
> >> dialplan?)
> >> 
> >> I'm sure this would benefit a lot of people.
> >> 
> >> I posted this a few days ago in the forum at
> >> 
> >> https://community.asterisk.org/t/can-anyone-help-with-a-quick-app-record
> >> -c-module-improvement-and-can-explain-over-riding-modules/73221 but
> >> no-one bit, so, I'm hoping this list can help.
> >> 
> >> Many thanks!

-- 
Schrödinger's rule of data integrity: the condition of any backup is unknown 
until a restore is attempted.

                                                   Please reply to the list;
                                                         please *don't* CC me.



More information about the asterisk-users mailing list