Compartilhar via


Gerenciamento de estado em caixas de diálogo adaptáveis – guia de referência

APLICA-SE A: SDK v4

Este artigo fornece detalhes técnicos que ajudarão você a trabalhar com escopos de memória em caixas de diálogo adaptáveis. Para obter uma introdução aos escopos de memória e ao gerenciamento do estado em diálogos adaptáveis, consulte o artigo de conceitos do fluxo da conversa e memória do Composer.

Dica

Todos os caminhos de propriedade ignoram a diferença entre maiúsculas e minúsculas. Por exemplo, user.name é o mesmo que user.Name. Além disso, se você não tiver uma propriedade denominada user.name e criar uma propriedade denominada user.name.first, o objeto user.name será criado automaticamente para você.

Escopo do usuário

O escopo do usuário é um dado persistente no escopo relacionado à ID do usuário com quem você está conversando.

Exemplos:

  • user.name
  • user.address.city

Escopo da conversa

O escopo da conversa é composto por dados persistentes associados à ID da conversa atual.

Exemplos:

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

Escopo do diálogo

O escopo do diálogo mantém os dados durante a vida útil do diálogo associado, proporcionando espaço de memória para que cada diálogo tenha seu controle interno de dados persistente. O escopo da caixa de diálogo é limpo quando a caixa de diálogo associada termina.

Exemplos de abreviação do escopo de diálogo:

  • A abreviação é dialog.orderStarted$orderStarted.
  • A abreviação é dialog.shoppingCart$shoppingCart.

Todas as opções passadas para BeginDialog ao criar um novo diálogo adaptativo tornam-se propriedades desse diálogo e podem ser acessadas enquanto estiverem no escopo. Você acessa essas propriedades pelo nome: dialog.<propertyName>. Por exemplo, se o chamador passou {a: '1', b: '2'} então eles serão definidos como dialog.a e dialog.b.

Subescopos de diálogo

Todas as ações de gatilho em um diálogo adaptável têm seus próprios subescopos e são acessadas por nome. Por exemplo, a ação Foreach é acessada como dialog.Foreach. Por padrão, o índice e o valor são definidos no dialog.foreach escopo, que pode ser acessado como dialog.Foreach.index e dialog.Foreach.value.

Transformar escopo

O escopo do turno contém dados não persistentes que só têm escopo para o turno atual. O escopo de turno fornece um local para compartilhar dados durante o ciclo atual.

Exemplos:

  • turn.bookingConfirmation
  • turn.activityProcessed

Transformar subcópios

atividade.do.turno

Cada atividade recebida pelo bot está disponível por meio do turn.activity escopo.

Por exemplo, você pode ter algo assim definido em nosso arquivo .lg para responder a um usuário que inseriu um valor inválido quando solicitado para sua idade:

Sorry, I don't understand '${turn.activity.text}'. ${GetAge()}

ação reconhecida

Todas as intenções e entidades retornadas de um reconhecedor durante qualquer interação são automaticamente definidas no turn.recognized escopo e permanecem disponíveis até a próxima interação. O turn.recognized escopo tem três propriedades:

  • turn.recognized.intents.xxx: uma lista das principais intenções classificadas pelo reconhecedor para esse turno.
  • turn.recognized.entities.xxx: uma lista de entidades reconhecidas daquela vez.
  • turn.recognized.score: a pontuação de confiança da intenção de pontuação superior para esse turno.

turn.dialogEvent

turn.dialogEvent contém a carga útil de um evento gerado pelo sistema ou pelo seu código. Você pode acessar as informações contidas na carga útil acessando o escopo turn.dialogEvent.<eventName>.value.

turn.lastResult

Você pode acessar os resultados do último diálogo que foi chamado no escopo turn.lastResult.

turno.atividadeProcessada

turn.activityProcessed, uma propriedade booleana; true indica que o turnContext.activity foi consumido por algum componente do sistema.

turno.interrompido

turn.interrupted, uma propriedade booliana; true indica que ocorreu uma interrupção.

Escopo de configurações

Isso representa todas as configurações disponibilizadas para o bot por meio do sistema de configuração de configurações específicas da plataforma, por exemplo, se você estiver desenvolvendo seu bot usando C#, essas configurações aparecerão no arquivo appsettings.json .

Exemplo de escopo de configurações

Este é um exemplo de um arquivo appsettings.json que contém as configurações do bot:

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

Esse escopo

O this escopo pertence ao recipiente de propriedades da ação ativa. Isso é útil para ações de entrada, uma vez que sua natureza normalmente dura mais do que apenas um turno de conversa.

  • this.value contém o valor reconhecido atual para a entrada.
  • this.turnCount contém o número de vezes que as informações ausentes foram solicitadas para essa entrada.

Escopo da classe

Esta contém as propriedades da instância do diálogo ativo. você faz referência a esse escopo da seguinte maneira: ${class.<propertyName>}.

Informações adicionais

  • Para obter uma introdução ao gerenciamento de estado no Composer, consulte o artigo de conceito do Composer de fluxo de conversa e memória.