Enviar mensagem por áudio para um email


(kleber borges caetano) #1

Olá Sr(s),

Inicialmente informo-lhes que meu conhecimento em php e jquery é rasteiro.
Pesquisando este tema na internet encontrei na https://github.com/sythoos/jRecorder/
um jQuery plugin com scripts em php que grava uma mensagem em voz no formato wav.

Após estudá-lo consegui implementá-lo parcialmente.
Existe um script acceptfile.php que tem as instruções :

if(!isset($_REQUEST['filename'])) { exit('No file'); }
$upload_path = dirname(FILE). '/';
$filename = $_REQUEST['filename'];
$fp = fopen($upload_path."/".$filename.".wav", "wb");
fwrite($fp, file_get_contents('php://input'));
fclose($fp);
exit('done');

Este script é executado pela instrução :

host: 'http://nome-do-servidor/jRecorder/temp/acceptfile.php?filename=hello.wav'.

O meu problema é passar para o script acceptfile.php os nomes do remetente e destinatário
a ser informado pelo usuário na tela inicial.

Após realizar vários testes concluir que a melhor solução é concatenar
os campos de entrada de dados , gravá-lo em um campo oculto e passá-los
para o script acceptfile.php :

host: 'http://nome-do-servidor/jRecorder/temp/acceptfile.php?recado_paulo_margarete' onde

recado é o nome do arquivo de áudio
paulo é o emitente
margarete é a destinatária

Nota - Testei assim ( como string predefinido ) e funcionou.

No script acceptfile.php capturei os dados assim :

$parte = explode('_', $filename);
$audio=$parte[0];
$emitente=$parte[1];
$destinatario=$parte[2];

Para capturar os campos informado pelo usuário incluir a seguinte função :

//function para pegar campo do formulário
$.jRecorder.field = function(){
var audio = $("input[type=text][name=nome]").val();
var de = $("input[type=text][name=remetente]").val();
var para = $("input[type=text][name=destinatario]").val();
var concatenado=audio + '_' + de + '' + para;
var a = document.getElementById('concatenado');
a.value = concatenado;
alert ( $("input[type=hidden][name=concatenado]").val() );
}

Nota - Testei e é apresentado os campos digitados corretamente.

Entretanto quando passo o campo concatenado para a declaração host recebo um undefined.

host : "http://servidor/audiorecorder/temp/acceptfile.php?filename="+$("input[type=hidden][name=concatenado]").val();

Este problema tem a ver com jquery.
Alguém sabe resolver isto.
Agradeço a atenção dispensada

Nota - Me desculpem pelo longo texto.

Kleber


(Marcos Nakamine) #2

Aparentemente está correto, mas tenta postar todo o script pra gente analisar.


(kleber borges caetano) #3

Vou enviar com marcação BBCode.
Omiti as instruções style para reduzir o texto.
Este código ( um pedaço ) do jRecorder.js

/*
* jRecorder Plugin for jQuery JavaScript Library (Alpha)
* ---http://www.sajithmr.me/jrecorder
*
* Copyright (c) 2011 - 2013 Sajithmr.ME
* Dual licensed under the MIT and GPL licenses.
* - ---http://www.opensource.org/licenses/mit-license.php
* - ----http://www.gnu.org/copyleft/gpl.html
*
* Author: Sajith Amma
* Version: 1.1
* Date: 14 December 2011
*/
/* Code is not verified using ---http://www.jshint.com/ */
(function ($){
var methods = {
play : function( options ) {
alert(options);
},
pause : function( ) { }
};
var jRecorderSettings = {} ;

$.jRecorder = function( options, element ) {
	// allow instantiation without initializing for simple inheritance
	if(typeof(options) == "string")
	{
		if ( methods[options] ) 
		{
			return methods[ options ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		}
		return false;
	}

	//if the element to be appended is not defind, append to body
	if(element == undefined)
	{
		element = $("body");
	}
	//default settings
	var settings = {
					'rec_width': '300',
					'rec_height': '200',
					'rec_top': '0px',
					'rec_left': '0px',
					'recorderlayout_id' : 'flashrecarea',
					'recorder_id' : 'audiorecorder',
					'recorder_name': 'audiorecorder',
					'wmode' : 'transparent',
					'bgcolor': '#ff0000',
					'swf_path': 'jRecorder.swf',
					'host': 'acceptfile.php?filename=hello.wav',
					'callback_started_recording' : function(){},
					'callback_finished_recording' : function(){},
					'callback_stopped_recording': function(){},
					'callback_error_recording' : function(){},
					'callback_activityTime': function(time){},
					'callback_activityLevel' : function(level){}
					};
					//if option array is passed, merget the values
					if ( options ) { 
				        $.extend( settings, options );
				     }


Incluir $.jRecorder.field = function() neste arquivo recoder.js

Não sei como enviar um arquivo html como texto para este site.
Aguardo instruções.

Nota - Link para acessar este script
http://payback.servehttp.com:8080/audiorecorder/audio.html
Talvez dê para pegar o fonte.

Agradeço a gentileza em responder

kleber


(kleber borges caetano) #4

Uma outra alternativa é realizar o download do arquivo WAV para o usuário com nome fixo.
Neste caso eu implementaria esta função em dois tempos ou seja o usuário salvaria o arquivo
com qualquer nome no seu computador e eu abriria uma opção de enviar email selecionando
o arquivo pela entrada .

Alguém sabe como como fazer isto ( somente o download ).
Nota - Neste caso trata-se de php ( me parece )

kleber