2014-07-13 2 views
0

C# 및 Julmar.tapi3 (itapi) 라이브러리를 사용하는 유선 전화 용 응용 프로그램을 개발 중입니다 callerId의 동작이 일치하지 않을 때 코드를 단계별로 추적 할 때 때로는 callerid를 반환하고 아무것도 반환하지 않는 대부분의 시간을 반환합니다.C#, julmar Itapi/tapi3 CallerId 빈 문자열 반환

내가 검색 할 때 발견 된 코드를 사용하지만

This Link 발신자 내가 시도 아이디하지만 여전히 같은 문제를 얻을 모니터 모드에서 라인을 열 설명 빈 문자열을 반환합니다.

나는 CallerId를 얻기 위해 CallInfoChange 이벤트를 발생시켜야하지만 내 경우에는 발포하지 않는 어딘가를 읽었습니다.

는 Itapi 아래는

발신자

지원합니다 내가 발신자에게 대부분의 시스템 발신자 ID에

private void IncomingForm_Load(object sender, EventArgs e) 
    { 
     _tapiMgr.Initialize(); 

     foreach (TAddress addr in _tapiMgr.Addresses) 
     { 
      if (addr.QueryMediaType(TAPIMEDIATYPES.AUDIO)) 
      { 
       try 
       { 
        TAPIMEDIATYPES mt = TAPIMEDIATYPES.AUDIO; 
        addr.OpenAndMonitor(mt); 
        // addr.Open(mt); 
       } 
       catch(TapiException ex) 
       { 

       } 
      } 
     } 
    } 

    private void OnNewCall(object sender, TapiCallNotificationEventArgs e) 
      { 
       if (e.Call.Privilege == CALL_PRIVILEGE.CP_OWNER) 
       {    MessageBox.Show(e.Call.get_CallInfo(CALLINFO_STRING.CIS_CALLERIDNUMBER).ToString()); 
       } 
      } 

답변

0

를 얻기 위해 사용되는 코드를 즉시 사용할 수 없습니다 않습니다. 북미 발신자 ID는 첫 번째 링 이후에 전송됩니다. 호출자 ID를 안정적으로 얻으려면 NewCall 이벤트 외에도 CallInfo 이벤트를 처리해야합니다. NewCall 이벤트 처리기에서 호출자 ID를 사용할 수없는 경우 나중에 CallInfo 이벤트가 발생하면 호출자 ID를 사용할 수 있습니다.