Cortana 디자인 지침

Warning

이 기능은 Windows 10 2020년 5월 업데이트(버전 2004, 코드명 “20H1”)부터 더 이상 지원되지 않습니다.

Cortana가 최신적인 생산성 환경을 어떻게 변화시키고 있는지 알아보려면 Microsoft 365의 Cortana를 참조하세요.

이러한 지침 및 권장 사항은 앱이 Cortana를 사용하여 사용자와 상호 작용하고, 작업을 수행하는 데 도움을 주고, 모든 상황을 명확하게 전달하는 방법을 설명합니다.

Cortana를 사용하면 백그라운드에서 실행 중인 애플리케이션이 사용자에게 확인 또는 명확성을 묻는 메시지를 표시하고, 음성 명령의 상태에 대한 피드백을 사용자에게 제공할 수 있습니다. 이 프로세스는 간단하고 빠르며, 강제로 사용자가 Cortana 환경을 나가거나 컨텍스트를 애플리케이션으로 전환하도록 하지 않습니다.

사용자는 Cortana를 통해 프로세스가 간단해지고 쉬워진다는 것을 느낄 수 있지만, 여러분은 Cortana가 앱이 작업을 완료하고 있음을 명시적으로 나타내도록 하려고 할 수 있습니다.

여기에 표시된 것처럼 Cortana UI에 통합된 Adventure Works라는 여행 계획 및 관리 앱을 사용하여 논의한 많은 개념과 기능을 보여 줍니다. 자세한 내용은 Cortana 음성 명령 샘플을 참조하세요.

Screenshot of the Cortana canvas

대화형 쓰기

성공적인 Cortana 상호 작용을 위해서는 TTS(텍스트 음성 변환) 및 GUI 문자열을 사용할 때 몇 가지 기본 원칙을 따라야 합니다.

원칙 잘못된 예제 좋은 예제

효율적인 경우

가능한 한 적은 단어를 사용하고 가장 중요한 정보를 맨 앞에 배치합니다.

오늘은 어떤 영화를 검색할까요? 대규모 컬렉션이 있습니다.

어떤 영화를 찾고 있나요?

관련성

작업, 콘텐츠 및 컨텍스트에만 관련 정보를 제공합니다.

재생 목록에 추가했습니다. 아시다시피 배터리가 부족해지고 있습니다.

재생 목록에 추가했습니다.

Clear

모호성을 방지합니다. 기술 전문 용어 대신 일상적인 언어를 사용합니다.

쿼리 “Trips to Las Vegas”에 대한 결과가 없습니다.

라스베이거스 여행을 찾을 수 없습니다.

신뢰

가능한 한 정확하게 해야 합니다. 백그라운드에서 진행되는 작업을 투명하게 알립니다. 작업이 아직 완료되지 않았는데 완료되었다고 말하지 마세요. 개인 정보 보호 — 개인 정보를 크게 읽지 마세요.

해당 영화를 찾을 수 없습니다. 아직 개봉되지 않은 것입니다.

카탈로그에서 해당 영화를 찾을 수 없습니다.

사람들이 말하는 방식을 기록합니다. 자연스러운 소리보다 문법적 정확도를 강조하지 마세요. 예를 들어 “wanna” 또는 “gotta”와 같은 귀에 친숙한 줄임말은 TTS 읽기에 적합합니다.

가능하며 자연스럽다면 암시적 1인칭 시제를 사용합니다. 예를 들어 “Looking for your next Adventure Works trip”은 누군가가 찾고 있음을 의미하지만 “I”라는 단어를 사용하여 주어를 지정하지 않습니다.

몇 가지 변형을 사용하여 앱이 더 자연스럽게 들리게 합니다. 여러 다른 버전의 TTS 및 GUI 문자열을 제공하여 결과적으로 동일한 내용을 말합니다. 예를 들어 “What movie do you wanna see?”에는 “What movie would you like to watch?”와 같은 대체 표현이 있을 수 있습니다. 사람들은 매번 똑같은 방식으로 같은 말을 하지 않습니다. TTS 및 GUI 버전을 동기화 상태로 유지해야 합니다.

응답에서 “OK” 및 “Alright”와 같은 구를 신중하게 사용합니다. 승인 및 진행 상황을 제공할 수 있지만 변형하지 않고 너무 자주 사용하는 경우 반복적일 수도 있습니다.

참고 항목

TTS에서만 승인 구를 사용합니다. Cortana 캔버스는 공간이 제한되기 때문에 해당 GUI 문자열에서 반복하지 마세요.

Cortana 캔버스에서 보다 자연스러운 상호 작용 및 추가적인 공간 절약을 위해 응답에 축소를 사용합니다. 예를 들어 “I was unable to find that movie” 대신 “ I can’t find that movie”를 사용합니다. 보이는 것보다 들리는 것에 신경을 씁니다.

시스템에서 이해하는 언어를 사용합니다. 사용자는 제시된 용어를 반복하는 경향이 있습니다. 표시되는 내용을 파악합니다.

대체 응답 컬렉션에서 순환하거나 무작위로 선택하여 응답을 약간씩 변형합니다. 예를 들어, “What movie do you wanna see?” 및 “What film would you like to watch?”를 사용할 수 있습니다. 이렇게 하면 앱 사운드가 더 자연스럽고 독특하게 들립니다.

지역화

음성 명령을 사용하여 작업을 시작하려면 앱은 사용자가 디바이스에서 선택한 언어로 음성 명령을 등록해야 합니다(설정 > 시스템 > 음성 > 음성 언어).

앱이 응답하는 음성 명령과 모든 TTS 및 GUI 문자열을 지역화해야 합니다.

긴 GUI 문자열을 피해야 합니다. Cortana 캔버스는 응답을 위해 3줄을 제공하며 더 긴 문자열은 잘립니다.

자세한 내용은 전역화 및 지역화 섹션을 참조하세요.

이미지 리소스 및 스케일링

UWP(유니버설 Windows 플랫폼) 앱에서는 특정 설정 및 디바이스 기능(고대비, 유효 픽셀, 로케일 등)에 따라 가장 적합한 앱 로고 이미지를 자동으로 선택할 수 있습니다. 이미지를 제공하고 다른 리소스 버전에 대해 앱 프로젝트 내에서 적절한 명명 규칙과 폴더 구성을 사용하는지 확인해야 합니다. 권장 리소스 버전을 제공하지 않으면 사용자의 기본 설정, 기능, 디바이스 유형, 위치에 따라 접근성, 지역화, 이미지 품질이 저하될 수 있습니다.

고대비 및 스케일링 요소의 이미지 리소스에 대한 자세한 내용은 타일 및 아이콘 자산에 대한 지침을 참조하세요.

한정자를 사용하여 리소스 이름을 지정합니다. 리소스 한정자는 특정 버전의 리소스를 사용해야 하는 컨텍스트를 식별하는 폴더 및 파일 이름 한정자입니다.

표준 명명 규칙은 “foldername/qualifiername-value[_qualifiername-value]/filename.qualifiername-value[_qualifiername-value].ext”입니다. 예를 들어 images/logo.scale-100_contrast-white.png는 코드에서 간단히 루트 폴더와 파일 이름(images/logo.png)을 사용하여 참조됩니다. 언어 및 지역 관리한정자를 사용하여 리소스 이름을 지정하는 방법을 참조하세요.

현재 지역화되거나 다중 해상도 리소스를 제공할 계획이 없더라도 문자열 리소스 파일(예: “en-US\resources.resw”)의 기본 언어와 이미지의 기본 스케일링 요소(예: “logo.scale-100.png”)를 표시하는 것이 좋습니다. 그러나 최소한 100, 200, 400 스케일링 요소에 대한 자산을 제공하는 것이 좋습니다.

Important

Cortana 캔버스의 제목 영역에 사용되는 앱 아이콘은 “Package.appxmanifest” 파일에 지정된 Square44x44Logo 아이콘입니다.

사용자 쿼리의 각 결과 타일에 대한 아이콘을 지정할 수도 있습니다. 결과 아이콘의 유효한 이미지 크기는 다음과 같습니다.

  • 68w x 68h
  • 68w x 92h
  • 280w x 140h

결과 타일 템플릿

Cortana 캔버스에 표시되는 결과 타일에 대한 템플릿 집합이 제공됩니다. 이러한 템플릿을 사용하여 타일 제목 및 타일에 텍스트 및 결과 아이콘 이미지가 포함되는지 여부를 지정합니다. 각 타일에는 지정된 템플릿에 따라 최대 3줄의 텍스트와 하나의 이미지가 포함될 수 있습니다.

지원되는 템플릿은 다음과 같습니다(예제 사용).

이름 예시
제목만 Screenshot of the Cortana canvas showing Title only
텍스트가 있는 제목 Screenshot of the Cortana canvas showing Title with text
68x68 아이콘이 있는 제목 이미지 없음
68x68 아이콘 및 텍스트가 있는 제목 Screenshot of the Cortana canvas showing Title with 68x68 icon and text
68x92 아이콘이 있는 제목 이미지 없음
68x92 아이콘 및 텍스트가 있는 제목 Screenshot of the Cortana canvas showing Title with 68x92 icon and text
280x140 아이콘이 있는 제목 이미지 없음
280x140 아이콘 및 텍스트가 있는 제목 Screenshot of the Cortana canvas showing Title with 280x140 icon and text

Cortana 템플릿에 대한 자세한 내용은 VoiceCommandContentTileType을 참조하세요.

예시

이 예제에서는 Cortana의 백그라운드 앱에 대한 엔드투엔드 작업 흐름을 보여 줍니다. Adventure Works 앱을 사용하여 라스베이거스 여행을 취소하려고 합니다. 이 예제에서는 “68x68 아이콘 및 텍스트가 있는 제목” 템플릿을 사용합니다.

Screenshot of the Cortana canvas for end to end Cortana background app flow

이 이미지에 설명된 단계는 다음과 같습니다.

  1. 사용자가 마이크를 탭하여 Cortana를 시작합니다.
  2. 사용자가 “Cancel my Adventure Works trip to Vegas”라고 말하여 백그라운드에서 Adventure Works 앱을 시작합니다. 앱은 Cortana 음성 및 캔버스를 모두 사용하여 사용자와 상호 작용합니다.
  3. Cortana는 사용자 승인 피드백(“I’ll get Adventure Works on that.”), 상태 표시줄 및 취소 단추를 제공하는 핸드오프 화면으로 전환합니다.
  4. 이 경우 쿼리와 일치하는 여러 번의 여행이 있으므로 앱은 일치하는 결과를 모두 나열하고 “Which one do you wanna cancel?”라고 묻는 명확성 화면을 제공합니다.
  5. 사용자는 “Vegas Tech Conference” 항목을 지정합니다.
  6. 취소를 실행 취소할 수 없으므로 앱은 사용자가 의도를 확인하도록 요청하는 확인 화면을 제공합니다.
  7. 사용자는 “Yes”라고 말합니다.
  8. 그러면 앱이 작업 결과를 보여 주는 완료 화면을 제공합니다.

여기서는 이러한 단계는 좀 더 자세히 살펴봅니다.

Handoff

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with no handoff핸드오프 화면이 없는 AdventureWorks "향후 여행"

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with handoff핸드오프 화면이 있는 AdventureWorks "향후 여정"

앱에서 500ms 이내에 응답하며 사용자가 추가 정보를 요구하지 않는 작업은 완료 화면을 표시하는 것 외에 Cortana의 추가 개입 없이 완료될 수 있습니다.

앱에서 응답하는 데 500ms 이상 소요되는 경우 Cortana는 핸드오프 화면을 제공합니다. 앱 아이콘 및 이름이 표시되고, GUI와 TTS 핸드오프 문자열을 모두 제공하여 음성 명령이 올바르게 인식되었음을 나타내야 합니다. 핸드오프 화면은 최대 5초 동안 표시됩니다. 앱이 이 시간 내에 응답하지 않는 경우 Cortana는 일반 오류 화면을 표시합니다.

핸드오프 화면에 대한 GUI 및 TTS 지침

작업이 진행 중임을 명확하게 나타냅니다.

현재 시제를 사용합니다.

시작 중인 작업을 확인하는 동작 동사를 사용하고 특정 엔터티를 참조합니다.

요청된 불완전한 작업을 커밋하지 않는 제네릭 동사를 사용합니다. 예를 들어 “Canceling your trip” 대신 “Looking for your trip”을 사용합니다. 이 경우 결과가 반환되지 않으면 사용자는 “Cancelling your trip to Las Vegas… I couldn’t find a trip to Las Vegas”와 같은 소리를 듣지 못합니다.

앱에서 요청된 엔터티를 계속 확인해야 하는 경우에는 작업이 아직 수행되지 않은 것입니다. 예를 들어, 0개 이상의 여행이 검색될 수 있으며 결과를 아직 알 수 없기 때문에 “Cancelling your trip” 대신 “Looking for your trip”이라고 말할 수 있습니다.

GUI 및 TTS 문자열은 동일할 수 있지만 반드시 같을 필요는 없습니다. 다른 시각적 자산의 잘림 및 중복을 방지하기 위해 GUI 문자열을 짧게 유지합니다.

TTS GUI
Looking for your next Adventure Works trip. Looking for your next trip…
Searching for your Adventure Works trip to Falls City. Searching for trip to Falls City...

진행률

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip progressAdventureWorks "여행 취소" 진행률

단계 사이의 작업에 다소 시간이 걸릴 경우 앱이 개입하여 진행 상황 화면에 상황을 업데이트해야 합니다. 앱 아이콘이 표시되며, 작업이 진행 중임을 나타내는 GUI 및 TTS 진행률 문자열을 모두 제공해야 합니다.

앱을 적절한 상태로 시작하려면 시작 매개 변수를 사용하여 앱에 대한 링크를 제공해야 합니다. 이렇게 하면 사용자가 작업을 직접 보거나 완료할 수 있습니다. Cortana는 링크 텍스트(예: “Go to Adventure Works”)를 제공합니다.

진행 상황 화면은 각각 5초 동안 표시됩니다. 그후에는 다른 화면이 표시되어야 합니다. 그렇지 않으면 작업이 시간 초과됩니다.

진행 상황 화면 다음에 다음 화면이 표시될 수 있습니다.

  • 진행률
  • 확인(명시적, 나중에 설명)
  • 명확성
  • 완성

진행 상황 화면에 대한 GUI 및 TTS 지침

현재 시제를 사용합니다.

작업이 진행 중임을 확인하는 동작 동사를 사용합니다.

GUI: 엔터티가 표시되면 해당 참조를 사용하고(“Cancelling this trip…”), 엔터티가 표시되지 않으면 해당 엔터티를 명시적으로 호출합니다(“Cancelling ‘Vegas Tech Conference’”).

TTS: 첫 번째 진행 상황 화면에는 TTS 문자열만 포함해야 합니다. 추가 진행 상황 화면이 필요한 경우에는 빈 문자열인 {}를 TTS 문자열로 보내고 GUI 문자열만 제공합니다.

조건 TTS GUI
이전 전환 시 엔터티 읽기/화면에 엔터티 표시 Cancelling this trip… Cancelling this trip…
이전 전환 시 엔터티를 읽지 않음/화면에 엔터티 표시 Cancelling your trip to Vegas… Cancelling this trip…
이전 전환 시 엔터티를 읽지 않음/엔터티가 표시되지 않음 Cancelling your trip to Vegas… Cancelling your trip to Vegas…

확인

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip confirmationAdventureWorks "여행 취소" 확인

사용자 명령의 특성에 따라 암시적으로 확인할 수 있는 작업도 있고, 잠재적으로 좀 더 중요하며 명시적 확인이 필요한 작업도 있습니다. 다음은 명시적 및 암시적 확인을 사용하는 경우에 대한 몇 가지 지침입니다.

확인 화면에서 GUI와 TTS 문자열이 모두 앱에서 지정되고, 앱 아이콘(제공된 경우)이 Cortana 아바타 대신 표시됩니다.

고객이 확인에 응답한 후에는 애플리케이션이 진행 상황 화면으로 이동하지 않도록 500ms 내에 다음 화면을 제공해야 합니다.

다음 경우에 명시적 사용...

  • 콘텐츠가 사용자를 떠납니다(예: 문자 메시지, 메일 또는 소셜 게시물).
  • 작업을 실행 취소할 수 없습니다(예: 구매 또는 항목 삭제).
  • 결과가 당황스러울 수 있습니다(예: 잘못된 사람 호출).
  • 좀 더 복잡한 인식이 필요합니다(예: 서술형 전사).

다음 경우에 암시적 사용...

  • 콘텐츠가 해당 사용자를 위해서만 저장됩니다(예: 자신에게 남긴 메모).
  • 쉽게 취소하는 방법이 있습니다(예: 경보 설정 또는 해제).
  • 작업은 신속하게 수행해야 합니다(예: 잊기 전에 아이디어를 빠르게 캡처).
  • 정확도가 높습니다(예: 간단한 메뉴).

확인 화면에 대한 GUI 및 TTS 지침

현재 시제를 사용합니다.

“Yes” 또는 “No”로 대답할 수 있는 명확한 질문을 사용자에게 물어봅니다. 질문은 사용자가 수행하려는 작업을 명시적으로 확인해야 하며 다른 명확한 옵션은 없어야 합니다.

처음에 음성 명령이 인식되지 않을 경우에 대비해서 다시 표시할 변형 질문을 제공합니다.

GUI: 엔터티가 표시되는 경우 해당 참조를 사용합니다. 엔터티가 표시되지 않으면 엔터티를 명시적으로 호출합니다.

TTS: 명확하게 하기 위해 이전에 전환 시 시스템에서 읽지 않은 경우 항상 해당 특정 항목 또는 엔터티를 참조합니다.

조건 TTS GUI
이전 전환 시 엔터티를 읽지 않음/화면에 엔터티 표시 Do you wanna cancel Vegas Tech Conference? Cancel this trip?
이전 전환 시 엔터티를 읽지 않음/엔터티가 표시되지 않음 Do you wanna cancel Vegas Tech Conference? Cancel Vegas Tech Conference?
이전 전환 시 엔터티를 읽음/엔터티가 표시되지 않음 Do you wanna cancel this trip? Cancel this trip?
표시된 엔터티를 다시 확인 Did you wanna cancel this trip? Did you want to cancel this trip?
표시되지 않은 엔터티를 다시 확인 Did you wanna cancel this trip? Did you want to cancel Vegas Tech Conference?

명확성

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip disambiguationAdventureWorks "여행 취소" 중의성 해소

일부 작업의 경우 사용자가 엔터티 목록에서 선택하여 작업을 완료해야 할 수 있습니다.

명확성 화면에서 GUI와 TTS 문자열이 모두 앱에서 지정되고, 앱 아이콘(제공된 경우)이 Cortana 아바타 대신 표시됩니다.

고객이 명확성 질문에 응답한 후에는 애플리케이션이 진행 상황 화면으로 이동하지 않도록 500ms 내에 다음 화면을 제공해야 합니다.

명확성 화면에 대한 GUI 및 TTS 지침

현재 시제를 사용합니다.

엔터티의 제목 또는 텍스트 줄 표시될 때 대답할 수 있는 명확한 질문을 사용자에게 요청합니다.

최대 10개의 엔터티가 표시될 수 있습니다.

각 엔터티는 고유한 제목을 가져야 합니다.

처음에 음성 명령이 인식되지 않을 경우에 대비해서 다시 표시할 변형 질문을 제공합니다.

TTS: 명확하게 하기 위해 이전에 전환 시 말하지 않은 경우 항상 해당 특정 항목 또는 엔터티를 참조합니다.

TTS: 엔터티가 3개 이하이고 짧은 경우가 아니면 엔터티 목록을 읽지 마세요.

조건 TTS GUI
프롬프트 - 3개 이하의 항목 Which Vegas trip do you wanna cancel? Vegas Tech Conference or Party in Vegas? Which one do you want to cancel?
프롬프트 - 4개 이상의 항목 Which Vegas trip do you wanna cancel? Which one do you want to cancel?
재프롬프트 Which Vegas trip did you wanna cancel? Which one do you want to cancel?

완성

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip completionAdventureWorks "여행 취소" 완료

작업이 성공적으로 완료되면 앱에서 요청된 작업이 성공적으로 완료되었음을 사용자에게 알립니다.

완료 화면에서 GUI와 TTS 문자열이 모두 앱에서 지정되고, 앱 아이콘(제공된 경우)이 Cortana 아바타 대신 표시됩니다.

앱을 적절한 상태로 시작하려면 시작 매개 변수를 사용하여 앱에 대한 링크를 제공해야 합니다. 이렇게 하면 사용자가 작업을 직접 보거나 완료할 수 있습니다. Cortana는 링크 텍스트(예: “Go to Adventure Works”)를 제공합니다.

완료 화면에 대한 GUI 및 TTS 지침

과거 시제를 사용합니다.

동작 동사를 사용하여 작업이 완료되었음을 명시적으로 나타냅니다.

엔터티가 표시되거나 이전 전환 시 참조된 경우에만 참조합니다.

조건 TTS GUI
이전 전환 시 엔터티 표시/엔터티 읽음 I’ve cancelled this trip. Cancelled this trip.
이전 전환 시 엔터티가 표시되지 않음/엔터티를 읽지 않음 I’ve cancelled your Vegas Tech Conference trip. Cancelled “Vegas Tech Conference.”

오류

Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip errorAdventureWorks "여행 취소" 오류

다음 오류 중 하나가 발생하면 Cortana는 동일한 제네릭 오류 메시지를 표시합니다.

  • 앱 서비스가 예기치 않게 종료됩니다.
  • Cortana는 앱 서비스와 통신하지 못합니다.
  • 앱은 Cortana에 5초 동안 핸드오프 화면이나 진행 상황 화면이 표시된 후에 화면을 제공하지 못합니다.