Share via


보조 전화 통신 개요

전화 통신의 중요한 기능은 보조 전화 통신이라는 작은 함수 집합입니다. 보조 전화 통신은 전화 통신 기능 전용 전화뿐만 아니라 모든 애플리케이션에서 음성 통화 및 미디어 통화를 사용할 수 있도록 설계되었습니다. 즉, 보조 전화 통신을 사용하면 애플리케이션이 전체 전화 통신 API의 서비스에 대한 세부 정보를 알 필요 없이 전화를 걸 수 있습니다. 전화 통신을 워드 프로세싱 애플리케이션, 스프레드시트, 데이터베이스, 개인 정보 관리자 및 기타 비 전화 통신 애플리케이션으로 확장합니다.

기본 전화 통신의 TAPI 2.x 보조 전화 통신 함수 목록은 TAPI 빠른 함수 참조를 참조하세요. TAPI 3.x는 ITRequest 인터페이스를 통해 지원되는 전화 통신을 지원합니다.

보조 전화 통신의 유용성은 다음 예제에서 확인할 수 있습니다. 스프레드시트 애플리케이션은 음성 통화를 위해 전화 번호로 전화를 걸 수 있는 함수를 통합할 수 있습니다. 애플리케이션에 전체 전화 통신 API에서 제공하는 자세한 호출 제어가 필요하지 않은 한, 보조 전화 통신은 전화 통신 기능을 제공하는 가장 쉽고 효율적인 방법입니다.

스프레드시트 애플리케이션을 사용하는 지원 전화 통신

보조 전화 통신 및 전체 전화 통신 API는 다양한 방식으로 사용 및 구현되므로 보조 전화 통신 함수 호출과 전화 통신 API 함수 호출을 단일 애플리케이션 내에서 혼합하지 않는 것이 좋습니다.

보조 전화 통신 사용

보조 전화 통신 서비스를 사용하는 애플리케이션은 TAPI에서 일시적으로 큐에 대기하는 호출 요청만 시작합니다. 요청 수신자 애플리케이션은 이러한 요청을 검색하고 지원 전화 통신 애플리케이션을 대신하여 실행합니다. tapiRequestMakeCall 함수는 음성 통화의 설정을 요청합니다. 요청 애플리케이션이 호출을 제어하지 않습니다.

TAPI를 사용하면 사용자가 이러한 각 서비스에 대해 서로 다른 또는 동일한 요청 받는 사람 애플리케이션을 설정할 수 있습니다. 애플리케이션은 lineRegisterRequestRecipient에 등록하여 요청 수신자가 되며, 이 경우 TRUEbEnable 매개 변수의 값으로 지정됩니다. (FALSE를 지정하면 애플리케이션이 요청 수신자로 등록 취소되며, 수신자 업무가 현재 세션에 대해 수행되는 것으로 확인되면 수행해야 합니다.) 애플리케이션은 lineRegisterRequestRecipientdwRequestMode 매개 변수에서 처리하려는 서비스를 선택합니다. 요청의 가능한 값은 LINEREQUESTMODE_MAKECALL 애플리케이션이 tapiRequestMakeCall 요청을 처리할 것임을 보여 줍니다. 여러 애플리케이션이 동일한 서비스에 등록하는 경우 우선 순위 체계를 사용하여 사용자가 요청을 처리하는 데 선호되는 애플리케이션을 선택할 수 있습니다. 이 우선 순위 체계는 레지스트리의 HandoffPriorities 에 있는 파일 이름 목록을 기반으로 호출 핸드오프 및 수신 호출 라우팅에 사용되는 것과 동일합니다.

통화 요청

보조 전화 통신은 개발자가 전화 통신을 완전히 읽지 않아도 전화를 걸 수 있는 사용하기 쉬운 메커니즘을 전화 통신 지원 애플리케이션에 제공합니다.

tapiRequestMakeCall 함수는 사용자와 해당 전화 번호로 지정된 원격 파티 간의 음성 통화를 요청합니다. 요청은 TAPI에 수행되며, 이 요청은 이러한 요청의 수신자로 등록된 애플리케이션에 전달됩니다. 이 수신자는 통화 관리자 애플리케이션입니다.

애플리케이션이 요청을 수행한 후에는 지원 전화 통신 애플리케이션이 통화를 관리할 수 없으므로 호출 관리자 애플리케이션에서 호출이 완전히 제어됩니다. 전화 통신 및 모든 사용자 인터페이스 작업의 더 복잡한 측면은 호출 관리자 애플리케이션에서 처리되므로 전화 통신 사용 애플리케이션은 상당한 방식으로 수정할 필요가 없습니다. 실제로 기본 제공 스크립트 언어에서 이 작업을 호출할 수 있는 애플리케이션은 전혀 수정할 필요가 없습니다.

tapiGetLocationInfo 함수는 사용자가 전화 통신 제어판 현재 위치 매개 변수에 설정한 국가 또는 지역 코드 및 도시(영역) 코드를 애플리케이션에 반환합니다. 애플리케이션은 이 정보를 사용하여 사용자가 전화 번호부 항목 또는 데이터베이스 레코드에 새 번호를 입력할 때 기본값으로 제공하는 등 적절한 정식 전화 번호를 형성하는 데 도움을 줄 수 있습니다.

받는 사람 요청

보조 전화 통신을 실행하려면 두 가지 종류의 애플리케이션이 필요합니다. 보조 전화 통신 클라이언트 는 접두사 "tapi"가 있는 함수를 호출하여 보조 전화 통신을 사용하는 애플리케이션입니다. 이러한 클라이언트 애플리케이션의 예로 다이얼 메뉴 명령 또는 도구 모음 단추가 추가되는 스프레드시트가 있습니다.

보조 전화 통신 서버 는 "tapi" 접두사 함수에 대한 다른 애플리케이션의 호출로 인해 발생하는 전화 통신 API 함수를 실행할 수 있는 애플리케이션입니다. 자신을 보조 전화 통신 서버라고 하기 위해 이러한 애플리케이션은 lineRegisterRequestRecipient 함수를 사용하여 하나로 등록됩니다.

보조 전화 통신의 함수(접두사 "tapi"로 시작)를 요청 함수라고 합니다. 이러한 요청(보조 전화 통신 서버)을 처리하는 보조 전화 통신 애플리케이션을 요청 수신자라고 합니다.

보조 전화 통신 요청 처리

요청이 전달되고 서비스되는 프로세스는 다음과 같습니다.

  1. TAPI는 보조 전화 통신 요청을 받으면 요청 수신자, 즉 현재 해당 유형의 요청을 처리하기 위해 등록된 애플리케이션을 확인합니다. 요청 수신자가 있는 경우 요청이 큐에 대기되고 해당 요청의 서비스에 대해 등록된 우선 순위가 가장 높은 애플리케이션이 LINE_REQUEST 메시지를 보냅니다. 이 메시지는 요청 수신자에게 새 요청이 도착했음을 알리고 요청 모드를 나타냅니다.

  2. TAPI가 이러한 요청을 처리하기 위해 현재 실행 중인 애플리케이션을 찾을 수 없는 경우 이를 수행할 수 있는 것으로 등록된 애플리케이션을 시작하려고 합니다. 이 등록 정보는 레지스트리의 HandoffPriorities 에 기록됩니다. TAPI는 HandoffPriorities 섹션에 나열된 순서대로 애플리케이션을 시작하려고 합니다. (다음 단계를 참조하세요.)

    현재 등록된 애플리케이션이 없는 경우 TAPI는 HandoffPriorities의 연결된 항목에서 요청 처리 애플리케이션 목록을 검사합니다. 연결된 줄이 파일에서 누락되거나, 나열된 애플리케이션이 없거나, 목록에 있는 애플리케이션을 시작할 수 없는 경우 오류 TAPIERR_NOREQUESTRECIPIENT 요청이 거부됩니다.

    요청 수신자가 시작되면(TAPI에서 시작되었는지 여부) 시작 프로세스 중에 lineRegisterRequestRecipient 를 호출하고 자신을 요청 수신자로 등록해야 합니다.

  3. 항목에 하나 이상의 애플리케이션이 나열된 경우 TAPI는 첫 번째 나열된 애플리케이션(가장 높은 우선 순위)으로 시작하고 CreateProcess 함수를 사용하여 시작하려고 시도합니다. 애플리케이션을 시작하려는 시도가 실패하면 TAPI는 목록에서 다음 애플리케이션을 시작하려고 시도합니다. 애플리케이션이 성공적으로 시작되면 TAPI는 요청을 큐에 대기하고 요청 수신자에게 아직 신호가 전송되지 않았더라도 애플리케이션에 성공 표시를 반환합니다.

    요청 수신자 애플리케이션이 시작된 후 lineRegisterRequestRecipient를 호출하여 LINE_REQUEST 메시지를 보내 요청이 큐에 대기 중임을 알릴 수 있습니다. 어떤 이유로 시작된 애플리케이션이 등록되지 않는 경우 요청은 큐에 남아 있으며 애플리케이션이 해당 유형의 요청에 등록할 때까지 무기한 큐에 유지됩니다.

  4. TAPI가 이미 실행 중이거나 성공적으로 실행되는 등록된 애플리케이션을 찾은 경우 요청을 큐에 대기하고 서버 애플리케이션에 LINE_REQUEST 메시지를 보내고 보조 전화 통신 애플리케이션에 대한 함수 호출에 대한 성공 표시를 반환합니다. 이 성공 메시지는 요청이 성공적으로 실행되지 않고 요청이 수락되고 큐에 대기되었음을 나타냅니다.

서버 애플리케이션이 요청을 처리할 준비가 되면 lineGetRequest 함수를 호출합니다. 이렇게 하면 전화 걸기 주소와 같이 필요한 모든 정보를 받을 수 있습니다. 그런 다음, 호출을 배치하는 데 사용되는 TAPI 함수(예: lineMakeCalllineDrop)를 사용하여 요청을 처리합니다. lineGetRequest를 호출하면 TAPI에서 요청이 제거되고 요청 매개 변수가 애플리케이션 할당 요청 버퍼에 복사됩니다. 버퍼 내용의 크기와 해석은 요청 모드에 따라 달라집니다.

서버는 요청을 실행할 때 올바른 매개 변수를 사용하는지 확인해야 합니다. 이렇게 하면 다음 단계를 수행합니다.

  1. 요청 수신자는 먼저 요청 큐에 요청이 있을 수 있음을 알리는 LINE_REQUEST 메시지를 받습니다. 이렇게 하면 애플리케이션에서 lineGetRequest 를 호출하고 큐가 드레이닝될 때까지(요청이 새 호출을 위한 경우) 또는 기존 호출을 삭제할 때까지 계속 호출하도록 지시합니다. 이 메시지는 기존 호출을 삭제하는 요청의 경우를 제외하고 요청에 대한 매개 변수를 포함하지 않습니다.
  2. 요청이 새 호출을 하는 경우 보조 전화 통신 서버는 lineGetRequest 함수를 사용하여 요청의 매개 변수를 포함하는 전체 요청을 검색합니다. 이제 서버에 전화 걸기 번호 또는 요청 작성자의 식별과 같이 필요한 모든 정보가 있습니다. 그러나 먼저 서버는 이 정보를 저장하는 데 필요한 메모리를 할당해야 합니다.
  3. 마지막으로 서버는 적절한 TAPI 함수 또는 함수 집합을 호출하여 요청을 실행합니다.

TAPI가 요청 수신자로 사용할 수 있는 애플리케이션을 시작할 수 없는 경우 보조 전화 통신 호출이 실패하고 오류 TAPIERR_NOREQUESTRECIPIENT 반환합니다.

받는 사람 작업 요청에 대한 참고 사항

다음 정보는 보조 전화 통신 요청이 처리되는 시스템과 관련이 있습니다.

  • 기본 레지스트리는 tapiRequestMakeCall에 대한 우선 순위 목록에 호출 관리자 애플리케이션을 나열해야 합니다. 호출 관리자 애플리케이션에 사용자가 가장 높은 우선 순위로 설정할 수 있는 메뉴 옵션이 있으면 도움이 되지만 필수는 아닙니다.
  • TAPI에서 보조 전화 통신 수신자 애플리케이션을 자동으로 시작하고 시스템에서 유일한 TAPI 애플리케이션인 경우 이 작업은 TAPI를 초기화합니다. 보조 전화 통신 수신자 애플리케이션이 지원 전화 통신 요청을 등록하기 전에 회선 디바이스를 초기화하고 종료하면 TAPI도 종료되고 보조 전화 통신 요청이 손실됩니다. 시작된 다른 TAPI 애플리케이션이 초기화 및 종료를 수행할 때 보조 전화 통신 요청도 손실될 수 있습니다.