FreeSwitch: ESL Inbound內聯模式下如何設置單腿變量


outbound外聯模式下,可以參考我先前寫的文章:freeswitch: ESL中如何自定義事件及自定義事件的監聽,使用export導出變量。但是inbound模式下,ESL client並未封裝export命令,如果要給某條腿附加一個變量值,可以借助uuid_setvar命令。

一、命令行驗證

1.1 啟動freeswitch控制台,手動originate發起呼叫

originate {origination_uuid=abd2d52e-6074-4a46-aa0e-c73d04f566f6}user/1000 &park()

注:外呼freeswitch內置的1000賬號,同時指定該腿的uuid為abd2d52e-6074-4a46-aa0e-c73d04f566f6 (前提:要先用一個網絡電話程序,以1000賬號注冊到freeswitch上)

點擊Answer接通,保持這條腿的通話

1.2 設置變量

uuid_setvar abd2d52e-6074-4a46-aa0e-c73d04f566f6 test-var value-a value-b value-c

正常的話,會回顯+OK

1.3 獲取變量

uuid_getvar abd2d52e-6074-4a46-aa0e-c73d04f566f6 test-var

輸出結果,參考下圖:

 

二、ESL Inbound示例代碼

try {
    //inbound test
    final Client inboundClient = new Client();
    inboundClient.connect("localhost", 8021, "ClueCon", 10);
    inboundClient.setEventSubscriptions(EventFormat.PLAIN, "ALL");
    inboundClient.addEventListener(new IInboundEslEventListener() {

        @Override
        public void onEslEvent(Context ctx, EslEvent eslEvent) {
            String eventName = eslEvent.getEventName();
            if (eventName.startsWith("CHANNEL")) {
                if (eventName.startsWith("CHANNEL_ANSWER")) {
                    //接通時,設置test變量
                    String uuid = eslEvent.getEventHeaders().get(EslEventConstant.UNIQUE_ID);
                    ctx.sendAsyncApiCommand("uuid_setvar " + uuid + " test 123123123");
                }
                if (eventName.startsWith("CHANNEL_HANGUP_COMPLETE")) {
                    //掛斷時,獲取test變量
                    String testValue = eslEvent.getEventHeaders().get("variable_test");
                    System.out.println("test:" + testValue);
                }
            }
        }

        @Override
        public void onDisconnect(Context ctx, EslMessage eslMsg) {
            System.out.println("message:" + eslMsg);
        }
    });
} catch (Exception e) {
    e.printStackTrace();
}

斷點調試結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM