Experienced Asterisk C programmer needed to provide commented code for a revised version of the Asterisk app_dictate application. Review app_dictate.c first, be prepared to test on a working asterisk system. Coder will have access to one of our Asterisk boxes with ssh to validate on a running system. We know asterisk internals pretty well and can run make but are not C programmers.
This is a revision of an earlier bid request with some minor changes. Please bid only if you have verifiable experience writing Asterisk modules or applications, or can look at this relatively simple code and describe what's going on there, in your bid. Please be prepared to run, or at least look at, the existing app_dictate in any revision of Asterisk before bidding. New application should have a config file containing values for the variables in [brackets] here. Optionally these may remain compile-time constants. Please review the existing app_dictate.c and see if there is anything that should be made better. Then, add the following functions, which may be implemented in Asterisk commands, C or something else via AGI, or shell functions. Databases can be flat files or AstDB.
a) ask the caller for a user id. Play [filename], collect an [n] digit user code, validate user code against a database, optionally require a password, play [filename] if invalid, optionally play a personal greeting, pass the user id to the program.
b) generate a unique serial number for each recording session
c) add commands to go to beginning and end of dictation, and to play the dictation number, which is comprised of user code + serial number
d) change dial commands from those in app_dictate to the following: 1 - go to beginning and play 2 - start recording (or resume recording if paused) 3 - go the the end and stop 4 - rewind [some] seconds 5 - pause 6 - jump ahead [some] seconds 7 - go to the beginning and stop 8 - write file and play serial number 9 - end and disconnect 0 - same as 8 # - same as 8 * - toggle variable speed play as in app_dictate, if enabled in config file
e) Then, write a cron job or C routine that will every [n] minutes check the raw recording directory, grab files that are completed, run them through sox or equivalent (preferably sox, so that other audio processing options can be applied) to produce .wav files in an output directory specified in the config file by user id. Should be well error trapped to write an error message and/or email details to an [address]. 1) Complete and fully-functional working program(s) in executable form compiled on our system as well as complete source code and makefile of all work done so we can make minor adjustments if needed..
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
4) Code shall be adequately commented to allow maintenance and patches.
5) Code will be tested by Seller on Buyer's machine to function as described. Seller may use a softphone or other interface device to a SIP appearance of Buyer's machine to confirm function.
Asterisk on Linux, should be portable to [url removed, login to view] and later and 1.4 and later. Must compile with readily available open source tools.