적응형 대화에서 상태 관리 - 참조 가이드Managing state in adaptive dialogs - reference guide

적용 대상: SDK v4APPLIES TO: SDK v4

이 문서에서는 적응형 대화에서 메모리 범위를 작업하는 데 도움이 되는 기술 세부 정보를 제공합니다.This article provides technical details that will help you work with memory scopes in adaptive dialogs. 적응형 대화 상자에서 메모리 범위 및 상태 관리에 대한 소개는 대화 흐름 및 메모리 작성기 개념 문서를 참조하세요.For an introduction to memory scopes and managing state in adaptive dialogs, see the Conversation flow and memory Composer concept article.

모든 속성 경로는 대/소문자를 구분하지 않습니다.All property paths are case-insensitive. 예를 들어 user.nameuser.Name과 동일합니다.For example, user.name is the same as user.Name. 또한 user.name이라는 속성이 없고 user.name.first라는 속성을 만들면 user.name 개체가 자동으로 생성됩니다.Also, if you do not have a property named user.name and you create a property named user.name.first the user.name object will automatically be created for you.

사용자 범위User scope

사용자 범위는 대화하는 사용자의 ID로 범위가 지정된 영구 데이터입니다.User scope is persistent data scoped to the ID of the user you are conversing with.

예제:Examples:

  • user.name
  • user.address.city

대화 범위Conversation scope

대화 범위는 보유하고 있는 대화의 ID로 범위가 지정된 영구 데이터입니다.Conversation scope is persistent data scoped to the ID of the conversation you are having.

예제:Examples:

  • conversation.hasAccepted
  • conversation.dateStarted
  • conversation.lastMaleReference
  • conversation.lastFemaleReference
  • conversation.lastLocationReference

대화 상자 범위Dialog scope

대화 상자 범위는 연결된 대화 상자의 수명 동안 데이터를 유지하고 각 대화 상자에 대한 메모리 공간을 제공하여 내부 지속 기록을 갖습니다.Dialog scope persists data for the life of the associated dialog, providing memory space for each dialog to have internal persistent bookkeeping. 연결된 대화 상자가 종료되면 대화 상자 범위가 지워집니다.Dialog scope is cleared when the associated dialog ends.

대화 상자 범위 축약형 예제:Dialog scope shorthand examples:

  • dialog.orderStarted 약식은 $orderStarted 입니다.The shorthand for dialog.orderStarted is $orderStarted.
  • dialog.shoppingCart 약식은 $shoppingCart 입니다.The shorthand for dialog.shoppingCart is $shoppingCart.

새 적응 대화 상자를 만들 때 BeginDialog에 전달되는 모든 옵션은 해당 대화 상자의 속성이 되며 범위 내에 있는 동안 액세스할 수 있습니다.All options passed into BeginDialog when creating a new adaptive dialog become properties of that dialog and can be accessed as long as it is in scope. 이러한 속성은 이름(dialog.<propertyName>)으로 액세스합니다.You access these properties by name: dialog.<propertyName>. 예를 들어 호출자가 {a : '1', b: '2'}를 전달하면 dialog.a와 dialog.b로 설정됩니다.For example, if the caller passed {a : '1', b: '2'} then they will be set as dialog.a and dialog.b.

대화 상자 하위 범위Dialog sub-scopes

적응 대화 상자의 모든 트리거 작업에는 고유한 하위 범위가 있으며 이름으로 액세스됩니다. 예를 들어 Foreach 작업은 dialog.Foreach로 액세스됩니다.All trigger actions in an adaptive dialog have their own sub-scopes and are accessed by name, for example the Foreach action is accessed as dialog.Foreach. 기본적으로 인덱스 및 값은 dialog.Foreach.indexdialog.Foreach.value로 액세스할 수 있는 dialog.foreach 범위에 설정됩니다.By default, the index and value are set in the dialog.foreach scope, which can be accessed as dialog.Foreach.index and dialog.Foreach.value.

턴 범위Turn scope

턴 범위에는 현재 턴에 대해서만 범위가 지정되는 비영구 데이터가 포함됩니다.The turn scope contains non-persistent data that is only scoped for the current turn. 턴 범위는 현재 턴의 수명 동안 데이터를 공유할 수 있는 위치를 제공합니다.The turn scope provides a place to share data for the lifetime of the current turn.

예:Examples:

  • turn.bookingConfirmation
  • turn.activityProcessed

턴 하위 범위Turn sub-scopes

turn.activityturn.activity

봇에 들어오는 작업을 각각 turn.activity 범위를 통해 사용할 수 있습니다.Each incoming activity to the bot is available via turn.activity scope.

예를 들어 .lg 파일에 정의된 것과 같이 사용 기간에 대한 메시지가 표시될 때 잘못된 값을 입력한 사용자에게 응답하는 것과 같은 내용이 있을 수 있습니다.For example, you might have something like this defined in our .lg file to respond to a user that entered an invalid value when prompted for their age:

Sorry, I do not understand '${turn.activity.text}'. ${GetAge()}

turn.recognizedturn.recognized

지정된 턴의 인식기에서 반환된 모든 의도 및 엔터티는 turn.recognized 범위에서 자동으로 설정되고 다음 턴이 발생할 때까지 계속 사용할 수 있습니다.All intents and entities returned from a recognizer on any given turn, are automatically set in the turn.recognized scope and remain available until the next turn occurs. turn.recognized 범위에는 세 가지 속성이 있습니다.the turn.recognized scope has three properties:

  • turn.recognized.intents.xxx: 인식기가 해당 턴에 대해 분류한 최상위 의도 목록입니다.turn.recognized.intents.xxx: A list of the top intents classified by the recognizer for that turn.
  • turn.recognized.entities.xxx: 해당 턴을 인식한 엔터티의 목록입니다.turn.recognized.entities.xxx: A list of entities recognized that turn.
  • turn.recognized.score: 해당 턴의 가장 높은 점수 매기기 의도의 신뢰도 점수 입니다.turn.recognized.score: The confidence score of the top scoring intent for that turn.

turn.dialogEventturn.dialogEvent

turn.dialogEvent는 시스템 또는 코드에 의해 발생한 이벤트의 페이로드를 포함합니다.turn.dialogEvent contains the payload of an event raised either by the system or your code. turn.dialogEvent.<eventName>.value 범위에 액세스하여 페이로드에 포함된 정보에 액세스할 수 있습니다.You can access the information contained in the payload by accessing the turn.dialogEvent.<eventName>.value scope.

turn.lastResultturn.lastResult

turn.lastResult 범위에서 호출된 마지막 대화 상자에서 결과에 액세스할 수 있습니다.You can access the results from the last dialog that was called from the turn.lastResult scope.

turn.activityProcessedturn.activityProcessed

부울 속성 turn.activityProcessed는 설정된 경우 turnContext.activity가 시스템의 일부 구성 요소에서 사용되었음을 의미합니다.turn.activityProcessed, a boolean property which if set means that turnContext.activity has been consumed by some component in the system.

turn.interruptedturn.interrupted

부울 속성 turn.interrupted, true는 중단이 발생했음을 나타냅니다.turn.interrupted, a Boolean property; true indicates that an interruption has occurred.

설정 범위Settings scope

이는 플랫폼별 설정 구성 시스템을 통해 봇에서 사용할 수 있는 모든 설정을 나타냅니다. 예를 들어 C#을 사용하여 봇을 개발하는 경우 이러한 설정은 파일의 appsettings.js표시됩니다.This represents any settings that are made available to the bot via the platform specific settings configuration system, for example if you are developing your bot using C#, these settings will appear in the appsettings.json file..

설정 범위 예제Settings scope example

다음은 봇의 구성 설정을 포함하는 appsettings.json 파일의 예입니다.This is an example of an appsettings.json file that holds configuration settings for your bot:

{
    "MicrosoftAppId": "<yourMicrosoftAppId>",
    "MicrosoftAppPassword": "<yourMicrosoftAppPassword>",
    "QnAMaker": {
        "knowledgebaseId": "<yourQnAKnowledgebaseId>",
        "hostname": "https://<YourHostName>.azurewebsites.net/qnamaker",
        "endpointKey": "yourEndpointKey"
    }
}

이 범위This scope

this 범위는 활성 작업의 속성 모음과 관련이 있습니다.The this scope pertains the active action's property bag. 이는 수명 유형이 일반적으로 대화의 단일 턴 이상으로 지속되기 때문에 입력 작업에 유용합니다.This is helpful for input actions since their life type typically lasts beyond a single turn of the conversation.

  • this.value는 입력에 대해 현재 인식된 값을 보유합니다.this.value holds the current recognized value for the input.
  • this.turnCount는 누락된 정보에 이 입력에 대한 메시지가 표시된 횟수를 포함합니다.this.turnCount holds the number of times the missing information has been prompted for this input.

클래스 범위Class scope

활성 대화 상자의 인스턴스 속성을 포함합니다.This holds the instance properties of the active dialog. 이 범위를 다음과 같이 참조합니다. ${class.<propertyName>}you reference this scope as follows: ${class.<propertyName>}.

추가 정보Additional information