我正在使用Asterisk java AGi,我想在我的服务器中使用谷歌TTS AGi。我可以在我的agi中使用谷歌tts agi吗?有什么命令吗?
很抱歉花了4年时间才给你答案,但你可以使用命令"channel.exec()"来完成。
也许你可以自己解决这个问题。发布此答案只是为了记录目的。
public void service(AgiRequest request, AgiChannel channel)
throws AgiException
{
// Answer the channel...
answer();
// ...say hello...
channel.exec("AGI","googletts.agi","Olá Mundo!","pt-BR");
// ...and hangup.
hangup();
}
不幸的是,您不能在另一个AGI中使用AGI!
AGI使用STDIN/STDOUT从Asterisk读取/写入信息。。。
您真正想做的是(在拨号计划中)顺序调用两个AGI,并将信息传递给AGI脚本。
因此,在AGI脚本(使用Asterisk Java的脚本)中,将变量设置为TTS所需的值,然后。。。完成AGI脚本的执行并将其传递回拨号计划,然后将该变量用于googleTTS。
exten => your_exten,1,Noop(Begin here)
same => n, Answer()
same => n, AGI(/path/to/your/AGI.script) ; or fastAGI etc.
same => n, Noop(This is the variable I set in my agi script: ${TEXT_TO_SPEAK})
same => n, AGI(googletts.agi,${TEXT_TO_SPEAK},en)
same => n, Hangup()
不要陷入试图通过AGI脚本控制Asterisk中所有内容的陷阱。如果你这样做,你就是在浪费时间,而且使用Asterisk的效率很低。当您需要执行Asterisk无法执行的操作时,请调用AGI应用程序。