1
我正在開發一個java應用程序,它應該能夠使用Java-Asterisk調用另一方並從用戶那裏獲得DTMF值。我正在使用AMI的originate
命令,我卡住了。我可以給對方打電話,但電話在接聽後立即結束並返回success
。
如何發起呼叫並讀取DTMF值?如何使用asterisk-java發起呼叫並讀取DTMF值?
我正在開發一個java應用程序,它應該能夠使用Java-Asterisk調用另一方並從用戶那裏獲得DTMF值。我正在使用AMI的originate
命令,我卡住了。我可以給對方打電話,但電話在接聽後立即結束並返回success
。
如何發起呼叫並讀取DTMF值?如何使用asterisk-java發起呼叫並讀取DTMF值?
OriginateAction originateAction = new OriginateAction();
originateAction.setChannel("SIP/1001");
originateAction.setContext("from-internal");
originateAction.setExten("1002");
originateAction.setCallerId("Server");
originateAction.setPriority(1);
originateAction.setTimeout(30000);
// connect to Asterisk and log in
managerConnection.login();
//send the originate action and wait for a maximum of 30 seconds for Asterisk
// to send a reply
ManagerResponse response= managerConnection.sendAction(originateAction, 30000);
AMI中的Originate操作允許您通過TCP連接發送請求,以便Asterisk撥打電話。這是從定製應用程序發起呼叫的最流行的方法。解決方案中提供的示例首先讓Asterisk撥打SIP/1001
的新電話。如果手機在30秒內沒有應答,呼叫將被中止。如果該呼叫得到應答,則它在撥號方案的from-internal
環境中連接到分機1002。 致電1002分機畢竟我需要閱讀DTMF是這樣的:
public class HelloAgiScript extends BaseAgiScript {
public void service(AgiRequest request, AgiChannel channel) throws AgiException
{
// Answer the channel...
answer();
// ...say hello and get DTMF data...
String data = getData("welcome");
// ...and hangup.
hangup();
}
}
這個問題是完全一樣的,你問2天前。 http://stackoverflow.com/questions/23472983/read-dtmf-using-asterisk-java。我很抱歉,你已經閱讀了一些書來理解答案。 – arheops
我相信我可以使用AMI的原始函數將用戶連接到應用程序,但無法確定方式。文檔非常薄弱。因爲知道我使用通話文件,但我不喜歡它! – hkazemi
我已經讀過這本書:「Asterisk Cookbook - O'Reilly - 第2章 - 呼叫控制」。我必須能夠使用發起功能 – hkazemi