在Asterisk java AGi中使用GoogleAGI



我正在使用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应用程序。

相关内容

  • 没有找到相关文章