2012-10-19 5 views
0

다음은 프리 스왑을 위해 lua로 작성된 IVR입니다. 전체 IVR을 복사하지 않았으며 파일 시작 부분부터 일부만 복사했습니다.별표 vs freeswitch 구성

session:set_tts_parms("flite", "kar"); 
    session:speak("Welcome to the VoIP World!"); 
    while(session:ready() == true) do 
      session:speak("to go to the next level, press 1"); 
      session:speak("to hear my voice some more, press 2"); 
      session:speak("to go to the default IVR demo, press 5"); 
      session:speak("to exit, press 9"); 
      digits = session:getDigits(1, "", 3000); 
      freeswitch.consoleLog("info", "Got dtmf: ".. digits .."\n"); 



if (digits == "1") then 
       --next level stuff 
       session:speak("you selected 1"); 
       while(session:ready() == true) do 
         session:speak("to hear me speak, press 1"); 
         session:speak("to go back to the previous menu, press 2"); 
         session:speak("to exit, press 9"); 
        digits = session:getDigits(1, "", 3000); 
        freeswitch.consoleLog("info", "Got dtmf, level2: ".. digits .."\n"); 
        if (digits == "1") then 
          session:speak("Some people will tell you that life is good"); 
        elseif (digits == "2") then 
          break; 
        elseif (digits == "9") then 
          session:hangup(); 
        end 
      end 
    elseif (digits == "2") then 
      session:speak("What a Ride!"); 

가 나는 또한 IVR 다이얼 플랜을 사용하여 별표 서버, 즉이 아래와 같습니다 (반드시 동일하지 그냥 예)를 작성했습니다.

[incoming] 
exten => 123,1,Answer() 
same => n(menuprompt),Background(main-menu) 

exten => 1,1,Playback(digits/1) 
same => n,Goto(menuprompt) 

exten => 2,1,Playback(digits/2) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

[main-menu] 
exten => n(menuprompt),Background(main-menu) 

exten => 3,1,Playback(digits/3) 
same => n,Goto(menuprompt) 

exten => 4,1,Playback(digits/4) 
same => n,Goto(menuprompt) 

exten => 9,1,Hangup() 

지금 내 질문은 좀 글루 코드가 필요하거나 못해 같이 위의 IVR 내가 하나 개의 SIP 서버에 IVR을 프로그래밍하고 SIP 서버에 SIP 전화에서 전화하면된다 위의 기능에 루아 코드를 에뮬레이션 메뉴가 재생됩니까? 나는 건축을 이해하려고 노력 중이고 일부분을 놓치고있는 것처럼 보입니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

동일한 기능을 가진 2 대의 IVR 서버가 필요한 이유는 없습니다. 별표 다이얼 플랜에서 전화를 FreeSWITCH로 전달하는 규칙을 만들면 별표 사용자가 거기에 연결됩니다.

+1

는 이미 freeswitch server.I이 asterisk.I는 별표 (*)를 배우고 별표 서버에서 동일한 기능을 구현하기 위해 노력하고 있습니다로 마이그레이션 할 두 servers.I을 위해 노력하고 있지 않다. – liv2hak

2

당신은 가깝지만 꽤 아닙니다.

컨텍스트를 물리적 상자로 생각하십시오. 상자 안의 벽을 통과 할 수는 없습니다. 따라서, "nl (menuprompt)와 같은"레이블 "및 확장은 해당 특정 상자/컨텍스트에있는 항목에만 적용됩니다.

[수신] 컨텍스트에서 "Goto (menuprompt)"에 대한 호출은 [수신] 컨텍스트의 "(menuprompt)"레이블을 참조합니다.

[main-menu] 컨텍스트에서 [Goto (menuprompt)]를 호출하면 [main-menu] 컨텍스트의 "(menuprompt)"레이블을 참조하게됩니다.

"n"우선 순위는 "이 컨텍스트에서이 확장에 대한 이전 우선 순위보다 하나"를 의미하는 구성입니다.

다이얼 플랜에서 가장 큰 문제는 새로운 컨텍스트 [메인 메뉴]가 있지만 초기 내선 번호가 없다는 것입니다. 그래서 귀하의

exten => n(menuprompt),Background(main-menu) 

... "죽은"코드입니다. 연결된 확장이 없기 때문에 아무 것도하지 않습니다.

그래서, 코드를 해결하기 위해, 당신은 [메인 메뉴]에 [입력]에서 점프 할 수 있도록 ...

exten => 1,1,Playback(digits/1) 
same => n,Goto(main-menu,3,1) 

처럼 뭔가를해야합니다. 뒤로 건너 뛰려면 반전을하십시오.

추가 읽기 : https://wiki.asterisk.org/wiki/display/AST/Contexts,+Extensions,+and+Priorities