I use the Asterisk-Manager package for NodeJs
https://www.npmjs.com/package/asterisk-manager
and have a tape announcement as a text which must be translated via text to speech. When I try to call an outgoing phone number how can I setup the text to speech variable and the recipient? An example would be
ami.action({
'action': 'originate',
'??? phonenumber ???': '12345',
'??? text to be spoken ???': 'Hello, this is a tape announcement'
}, (err, res) => {
if (err) {
throw err;
}
console.log('everything was fine');
});
Edit:
I know that FreePbx is used for administration. As far as I know there is a TTS module for the Asterisk engine.
I think I could go for this code
const { phoneNumber, announcement } = phoneInfo; // the required data
ami.action({
channel: `SIP/${phoneNumber}`,
application: 'SendText',
data: announcement
}, (err, res) => {
if (err) {
throw err;
}
console.log(res);
});
and the engine would manage the data property
The Originate application itself will only send the called number to an application or extension. You should have an audio file created before calling the playback app. So you code will look like this:
let filePath = await yourTtsService.generateAudioFile('Hello, this is a tape announcement')
ami.action({
'action': 'originate',
'channel': 'SIP/123', // target number, depend on your trunk type
'application': 'Playback',
'data': filePath
})
To generate the audio file you can use the google api, see examples at https://cloud.google.com/text-to-speech/docs/reference/libraries