私はこのJavaScriptコードがあります。方法sendVoice()電報のボットは - ファイルは空です
bot.sendVoice(chatId, 'C:/Users/a.repetto/Desktop/repettobot/hello_world.ogg', {
disable_notification: true,
reply_to_message_id: msg.message_id
}).then(function() {
// reply sent!
});
ファイルが存在すると音声が含まれているが、私は全体のコードを実行しようとすると、私はこのエラーを取得:
""error_code":400,"description":"Bad Request: File must be non-empty "
私はsendAudio
でも試しましたが、これも機能しません。
編集1:より具体的には、
「sendAudio」または「sendVoice」のみを使用してスクリプトを書き込むと、そのファイルは電文に正しく送信されます。しかし、このスクリプトを使用すると、ファイルは空になります。
var Bot = require('node-telegram-bot-api');
var watson = require('watson-developer-cloud');
var request = require('request');
var fs = require('fs');
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
var speech_to_text = watson.speech_to_text({
username: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX, //username from VCAPSERVICES
password: 'XXXXXXXX', //password from VCAP SERVICES
version: 'v1',
url: 'https://stream.watsonplatform.net/speech-to-text/api'
});
var language_translation = watson.language_translator({
username: 'XXXXXXXXXXXXXXXXXX',
password: 'XXXXXXXX',
version: 'v2'
});
var text_to_speech = watson.text_to_speech({
username: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
password: 'XXXXXXXXXX',
version: 'v1'
});
var params = {
model: 'en-US_BroadbandModel', //you can change the language here
content_type: 'audio/ogg;codecs=opus',
continuous: true,
interim_results: false
};
var bot = new Bot('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', {polling: true }); //token generated by the bot you created
bot.on('message', function (msg) {
if(msg['voice']){ return onVoiceMessage(msg); }
});
function onVoiceMessage(msg) {
var chatId = msg.chat.id;
bot.getFileLink(msg.voice.file_id).then(function(link) {
var recognizeStream = speech_to_text.createRecognizeStream(params);
recognizeStream.setEncoding('utf8');
recognizeStream.on('results', function(data) {
var result = data.results[0].alternatives[0].transcript;
var c = result;
console.log("testo: " + result);
bot.sendMessage(chatId, result, {
disable_notification: true,
reply_to_message_id: msg.message_id
}).then(function(){})
language_translation.translate({
text: result,
source: 'en',
target: 'it'
}, function(err,translation) {
if (err) {
console.log(err);
}
else {
var trad = translation.translations[0].translation;
console.log("traduzione: " + trad + "\n")
}
bot.sendMessage(chatId, trad, {
disable_notification: true,
reply_to_message_id: msg.message_id
}).then(function(){})
var params1 = {
text: trad,
voice: 'it-IT_FrancescaVoice',
accept: 'audio/ogg;codecs=opus'
}
bot.sendVoice(chatId, text_to_speech.synthesize(params1), {
disable_notification: true,
reply_to_message_id: msg.message_id
}).then(function(promise){console.log(promise)})
})
})
request(link).pipe(recognizeStream);
})
}
Telegram APIにはどのライブラリを使用していますか? –
私はnode-telegram-bot-apiを使用します –