Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过星号java传出IVR_Java_Sip_Text To Speech_Asterisk_Ivr - Fatal编程技术网

通过星号java传出IVR

通过星号java传出IVR,java,sip,text-to-speech,asterisk,ivr,Java,Sip,Text To Speech,Asterisk,Ivr,我正在用星号和星号java构建简单的外向IVR 我在同一网络中的两台不同的计算机(A和B)上安装了Xlite软电话,并将它们设置在星号上,我可以成功地呼叫它们 这是我的星号java代码 public class PhoneUtility { private static ManagerConnection instanceManagerConnection; private static ManagerConnection getManagerConnectionInstan

我正在用星号和星号java构建简单的外向IVR 我在同一网络中的两台不同的计算机(A和B)上安装了Xlite软电话,并将它们设置在星号上,我可以成功地呼叫它们 这是我的星号java代码

public class PhoneUtility {

    private static ManagerConnection instanceManagerConnection;

    private static ManagerConnection getManagerConnectionInstance() {
        if (instanceManagerConnection == null) {
            ManagerConnectionFactory factory = new
                    ManagerConnectionFactory("192.132.0.01", "admin", "amp111");
            instanceManagerConnection = factory.createManagerConnection();
        }
        return instanceManagerConnection;
    }

    public static boolean phoneCall() {
        try {
            ManagerConnection managerConnection = getManagerConnectionInstance();
            OriginateAction originateAction;
            ManagerResponse originateResponse;

            originateAction = new OriginateAction();
            originateAction.setChannel("SIP/ivan");
            originateAction.setCallerId("1234");
            originateAction.setContext("ivr-ext");
            originateAction.setExten("1235");
            originateAction.setPriority(new Integer(1));
            originateAction.setActionId("2");
            originateAction.setTimeout(300000l);
            originateAction.setAsync(new Boolean(false));

            // connect to Asterisk and log in
            managerConnection.login();

            AsteriskServerImpl asteriskServer = new AsteriskServerImpl(managerConnection);
            AsteriskChannel asteriskChannel = asteriskServer.originate(originateAction);

            // Play a prompt by text to speach 


            Character dtmf = asteriskChannel.getDtmfSent();
            if (dtmf.equals("1")) {
                managerConnection.logoff();
                return true;
            } else {
                managerConnection.logoff();
                return false;
            }

        } catch (Exception e) {
            System.out.println(e);
            return false;
        }
    }
}
我在计算机A中执行代码(invoke phoneCall())来调用计算机B 当代码在计算机A中执行时,我的软电话首先在计算机A中响起,我必须在软电话计算机A上应答,然后计算机B的软电话响起,
如何通过编码自动为计算机a打开频道(我根本不想在计算机a中使用软电话)

您可以先让电话B响,如果有人接听,电话a就会响(IVR分机将由自动接听的IVR应用程序取代):

使用扩展插件交换CallerID,如下所示:
你的代码可以下载吗?
        originateAction = new OriginateAction();
        originateAction.setChannel("SIP/1235");
        originateAction.setCallerId("1235");//put the target extension here
        originateAction.setContext("ivr-ext");
        originateAction.setExten("1234"); //put IVR-extension  here
        originateAction.setPriority(new Integer(1));
        originateAction.setActionId("2");
        originateAction.setTimeout(300000l);
        originateAction.setAsync(new Boolean(false));