house-lights 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/cli.mjs +3 -2
- package/package.json +4 -3
- package/skills/cast-list/assets/VERSION +2 -0
- package/skills/cast-list/assets/lesson.html +182 -0
- package/skills/cast-list/assets/map.html +244 -0
- package/skills/cast-list/examples/LICENSE-microsoft-skills-for-copilot-studio +21 -0
- package/skills/cast-list/examples/NOTICE.md +27 -0
- package/skills/cast-list/examples/agents/bodega-cupons/actions/ConsultarCuponsAtivos.mcs.yml +34 -0
- package/skills/cast-list/examples/agents/bodega-cupons/actions/EnviarCupomEmail.mcs.yml +34 -0
- package/skills/cast-list/examples/agents/bodega-cupons/actions/PromocoesMCP.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-cupons/agent.mcs.yml +27 -0
- package/skills/cast-list/examples/agents/bodega-cupons/connectionreferences.mcs.yml +17 -0
- package/skills/cast-list/examples/agents/bodega-cupons/knowledge/RegulamentoCupons.knowledge.mcs.yml +7 -0
- package/skills/cast-list/examples/agents/bodega-cupons/settings.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/ConsultarRegulamentoCupons.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Escalate.topic.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Fallback.topic.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/OnError.topic.mcs.yml +48 -0
- package/skills/cast-list/examples/agents/bodega-cupons/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
- package/skills/cast-list/examples/agents/bodega-cupons/variables/CategoriaSolicitacao.mcs.yml +10 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/actions/AbrirSolicitacaoDevolucao.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/agent.mcs.yml +26 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/connectionreferences.mcs.yml +6 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/knowledge/PoliticaTrocasDevolucoes.knowledge.mcs.yml +7 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/settings.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/ConsultarPoliticaDevolucoes.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Escalate.topic.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Fallback.topic.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/OnError.topic.mcs.yml +48 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
- package/skills/cast-list/examples/agents/bodega-devolucoes/variables/CategoriaSolicitacao.mcs.yml +10 -0
- package/skills/cast-list/examples/agents/bodega-frete/actions/EnviarOpcoesFrete.mcs.yml +34 -0
- package/skills/cast-list/examples/agents/bodega-frete/agent.mcs.yml +26 -0
- package/skills/cast-list/examples/agents/bodega-frete/connectionreferences.mcs.yml +6 -0
- package/skills/cast-list/examples/agents/bodega-frete/knowledge/TabelaFreteEntregas.knowledge.mcs.yml +7 -0
- package/skills/cast-list/examples/agents/bodega-frete/settings.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/ConsultarTabelaFrete.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/Fallback.topic.mcs.yml +31 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/OnError.topic.mcs.yml +48 -0
- package/skills/cast-list/examples/agents/bodega-frete/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
- package/skills/cast-list/examples/agents/bodega-frete/variables/CategoriaSolicitacao.mcs.yml +10 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/actions/EnviarInstrucoesRetirada.mcs.yml +34 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/agent.mcs.yml +27 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/connectionreferences.mcs.yml +6 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/knowledge/GuiaLojaFisica.knowledge.mcs.yml +8 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/settings.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/ConsultarGuiaLojaFisica.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Escalate.topic.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Fallback.topic.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/OnError.topic.mcs.yml +43 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
- package/skills/cast-list/examples/agents/bodega-loja-fisica/variables/CategoriaSolicitacao.mcs.yml +10 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteCupons.mcs.yml +24 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteDevolucoes.mcs.yml +24 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteFrete.mcs.yml +24 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgenteLojaFisica.mcs.yml +24 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/actions/AgentePedidos.mcs.yml +24 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/agent.mcs.yml +35 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/agents/SobreBodegaAzul/agent.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/settings.mcs.yml +12 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/topics/ClassificarSolicitacao.topic.mcs.yml +35 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Escalate.topic.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Fallback.topic.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/topics/OnError.topic.mcs.yml +48 -0
- package/skills/cast-list/examples/agents/bodega-orquestrador/variables/CategoriaSolicitacao.mcs.yml +9 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/actions/EnviarResumoPedido.mcs.yml +34 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/agent.mcs.yml +26 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/connectionreferences.mcs.yml +6 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/knowledge/PoliticasPedidos.knowledge.mcs.yml +7 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/settings.mcs.yml +13 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/ConsultarPoliticasPedidos.topic.mcs.yml +56 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/Escalate.topic.mcs.yml +20 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/Fallback.topic.mcs.yml +32 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/Greeting.topic.mcs.yml +14 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/OnError.topic.mcs.yml +48 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/topics/RecebimentoOrquestrador.topic.mcs.yml +16 -0
- package/skills/cast-list/examples/agents/bodega-pedidos/variables/CategoriaSolicitacao.mcs.yml +10 -0
- package/skills/cast-list/examples/demo.cast.yaml +10 -0
- package/skills/cast-list/examples/profile.cast.yaml +15 -0
- package/skills/cast-list/references/format.md +50 -0
- package/skills/cast-list/references/keys.md +107 -0
- package/skills/cast-list/references/profile.md +32 -0
- package/skills/cast-list/scripts/browser.mjs +198 -0
- package/skills/cast-list/scripts/build.mjs +179 -0
- package/skills/cast-list/scripts/engine.mjs +155 -0
- package/skills/cast-list/scripts/page.mjs +15 -0
- package/skills/cast-list/scripts/read-xlsx.mjs +67 -0
- package/skills/cast-list/vendor/microsoft/LICENSE +21 -0
- package/skills/cast-list/vendor/microsoft/NOTICE +9 -0
- package/skills/cast-list/vendor/microsoft/package.json +1 -0
- package/skills/cast-list/vendor/microsoft/reference/bot.schema.yaml-authoring.json +27605 -0
- package/skills/cast-list/vendor/microsoft/scripts/schema-lookup.bundle.js +3495 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Em caso de erro
|
|
3
|
+
description: Tratamento de erros do agente.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
startBehavior: UseLatestPublishedContentAndCancelOtherTopics
|
|
6
|
+
beginDialog:
|
|
7
|
+
kind: OnError
|
|
8
|
+
id: main
|
|
9
|
+
actions:
|
|
10
|
+
- kind: SetVariable
|
|
11
|
+
id: setVariable_RIabDw
|
|
12
|
+
variable: init:Topic.CurrentTime
|
|
13
|
+
value: =Text(Now(), DateTimeFormat.UTC)
|
|
14
|
+
|
|
15
|
+
- kind: ConditionGroup
|
|
16
|
+
id: conditionGroup_7KIeB2
|
|
17
|
+
conditions:
|
|
18
|
+
- id: conditionItem_OUWMhQ
|
|
19
|
+
condition: =System.Conversation.InTestMode = true
|
|
20
|
+
actions:
|
|
21
|
+
- kind: SendActivity
|
|
22
|
+
id: sendMessage_oRG6YM
|
|
23
|
+
activity: |-
|
|
24
|
+
Mensagem de erro: {System.Error.Message}
|
|
25
|
+
Código do erro: {System.Error.Code}
|
|
26
|
+
Id da conversa: {System.Conversation.Id}
|
|
27
|
+
Horário (UTC): {Topic.CurrentTime}
|
|
28
|
+
|
|
29
|
+
elseActions:
|
|
30
|
+
- kind: SendActivity
|
|
31
|
+
id: sendMessage_gs4KHI
|
|
32
|
+
activity:
|
|
33
|
+
text:
|
|
34
|
+
- |-
|
|
35
|
+
Ocorreu um erro.
|
|
36
|
+
Código do erro: {System.Error.Code}
|
|
37
|
+
Id da conversa: {System.Conversation.Id}
|
|
38
|
+
Horário (UTC): {Topic.CurrentTime}.
|
|
39
|
+
speak:
|
|
40
|
+
- Ocorreu um erro, por favor tente novamente.
|
|
41
|
+
|
|
42
|
+
- kind: LogCustomTelemetryEvent
|
|
43
|
+
id: logTelemetry_g4OeHX
|
|
44
|
+
eventName: BodegaOrquestrador_OnError
|
|
45
|
+
properties: "={Agente: \"bodega-orquestrador\", ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}"
|
|
46
|
+
|
|
47
|
+
- kind: CancelAllDialogs
|
|
48
|
+
id: cancelAllDialogs_BYhsPO
|
package/skills/cast-list/examples/agents/bodega-orquestrador/variables/CategoriaSolicitacao.mcs.yml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Name: Categoria da Solicitação
|
|
2
|
+
# Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
|
|
3
|
+
name: CategoriaSolicitacao
|
|
4
|
+
aIVisibility: UseInAIContext
|
|
5
|
+
scope: Conversation
|
|
6
|
+
description: Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
|
|
7
|
+
schemaName: cr7b2_bodegaOrquestrador.globalvariable.CategoriaSolicitacao
|
|
8
|
+
kind: GlobalVariableComponent
|
|
9
|
+
defaultValue: Outro
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Enviar resumo do pedido por e-mail
|
|
3
|
+
description: "Envia ao cliente um e-mail com o resumo do atendimento sobre o pedido."
|
|
4
|
+
kind: TaskDialog
|
|
5
|
+
inputs:
|
|
6
|
+
- kind: AutomaticTaskInput
|
|
7
|
+
propertyName: To
|
|
8
|
+
description: "Endereço de e-mail do cliente que vai receber o resumo do pedido."
|
|
9
|
+
entity: EmailPrebuiltEntity
|
|
10
|
+
shouldPromptUser: true
|
|
11
|
+
|
|
12
|
+
- kind: AutomaticTaskInput
|
|
13
|
+
propertyName: Subject
|
|
14
|
+
description: Assunto do e-mail, curto e em português.
|
|
15
|
+
entity: StringPrebuiltEntity
|
|
16
|
+
shouldPromptUser: false
|
|
17
|
+
|
|
18
|
+
- kind: AutomaticTaskInput
|
|
19
|
+
propertyName: Body
|
|
20
|
+
description: Corpo do e-mail em HTML simples, em português, com o resumo do que foi tratado na conversa.
|
|
21
|
+
entity: StringPrebuiltEntity
|
|
22
|
+
shouldPromptUser: false
|
|
23
|
+
|
|
24
|
+
modelDisplayName: Enviar resumo do pedido por e-mail
|
|
25
|
+
modelDescription: "Envia ao cliente, pelo Outlook, um e-mail com o resumo do atendimento sobre o pedido. Use somente quando o cliente pedir o resumo por e-mail."
|
|
26
|
+
action:
|
|
27
|
+
kind: InvokeConnectorTaskAction
|
|
28
|
+
connectionReference: cr7b2_bodegaPedidos.shared_office365.shared-office365-1fd81bee-61e1-4016-a98e-c7e0977d7f43
|
|
29
|
+
connectionProperties:
|
|
30
|
+
mode: Maker
|
|
31
|
+
|
|
32
|
+
operationId: SendEmailV2
|
|
33
|
+
|
|
34
|
+
outputMode: All
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Bodega Azul - Pedidos
|
|
3
|
+
kind: GptComponentMetadata
|
|
4
|
+
displayName: Bodega Azul - Pedidos
|
|
5
|
+
instructions: |
|
|
6
|
+
Você é o especialista em pedidos da Bodega Azul, uma loja online.
|
|
7
|
+
|
|
8
|
+
Responsabilidades:
|
|
9
|
+
- Explicar status de pedido, prazos de processamento e formas de pagamento aceitas
|
|
10
|
+
- Usar a base "Políticas de Pedidos" para responder dúvidas sobre regras de compra
|
|
11
|
+
- Enviar ao cliente, quando ele pedir, um e-mail com o resumo do atendimento
|
|
12
|
+
|
|
13
|
+
Regras:
|
|
14
|
+
- Responda sempre em português do Brasil, de forma curta e cordial
|
|
15
|
+
- Nunca invente números de pedido, valores ou prazos
|
|
16
|
+
- Se a dúvida for sobre devolução, frete, cupom ou loja física, diga que é outro especialista que cuida disso
|
|
17
|
+
conversationStarters:
|
|
18
|
+
- title: "Status do pedido"
|
|
19
|
+
text: "Como acompanho o meu pedido?"
|
|
20
|
+
|
|
21
|
+
- title: "Pagamento"
|
|
22
|
+
text: "Quais formas de pagamento vocês aceitam?"
|
|
23
|
+
|
|
24
|
+
aISettings:
|
|
25
|
+
model:
|
|
26
|
+
modelNameHint: GPT5Chat
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
kind: ConnectionReferencesSourceFile
|
|
2
|
+
connectionReferences:
|
|
3
|
+
- id: eea3db2a-a0a9-4d63-b0d6-612861c4c67c
|
|
4
|
+
connectionReferenceLogicalName: cr7b2_bodegaPedidos.shared_office365.shared-office365-1fd81bee-61e1-4016-a98e-c7e0977d7f43
|
|
5
|
+
connectorId: /providers/Microsoft.PowerApps/apis/shared_office365
|
|
6
|
+
displayName: Office 365 Outlook
|
package/skills/cast-list/examples/agents/bodega-pedidos/knowledge/PoliticasPedidos.knowledge.mcs.yml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Políticas de Pedidos
|
|
3
|
+
description: "Políticas de compra, status de pedido, cancelamento e formas de pagamento da Bodega Azul."
|
|
4
|
+
kind: KnowledgeSourceConfiguration
|
|
5
|
+
source:
|
|
6
|
+
kind: SharePointSearchSource
|
|
7
|
+
site: https://bodegaazul.sharepoint.com/sites/Atendimento/Shared%20Documents/Pedidos
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
displayName: Bodega Azul - Pedidos
|
|
2
|
+
schemaName: cr7b2_bodegaPedidos
|
|
3
|
+
accessControlPolicy: ChatbotReaders
|
|
4
|
+
authenticationMode: None
|
|
5
|
+
configuration:
|
|
6
|
+
isAgentConnectable: true
|
|
7
|
+
settings:
|
|
8
|
+
GenerativeActionsEnabled: true
|
|
9
|
+
|
|
10
|
+
recognizer:
|
|
11
|
+
kind: GenerativeAIRecognizer
|
|
12
|
+
|
|
13
|
+
language: 1046
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Consultar Políticas de Pedidos
|
|
3
|
+
description: "Responde dúvidas sobre pedidos com base nas políticas publicadas no SharePoint."
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
inputs:
|
|
6
|
+
- kind: AutomaticTaskInput
|
|
7
|
+
propertyName: PerguntaCliente
|
|
8
|
+
description: "A pergunta do cliente sobre pedidos, status, cancelamento ou pagamento."
|
|
9
|
+
shouldPromptUser: true
|
|
10
|
+
|
|
11
|
+
modelDescription: "Responde perguntas sobre status de pedido, prazos de processamento, cancelamento antes do envio e formas de pagamento da Bodega Azul."
|
|
12
|
+
beginDialog:
|
|
13
|
+
kind: OnRecognizedIntent
|
|
14
|
+
id: main
|
|
15
|
+
intent: {}
|
|
16
|
+
actions:
|
|
17
|
+
- kind: CreateSearchQuery
|
|
18
|
+
id: createSearchQuery_UGdqz4
|
|
19
|
+
userInput: =Topic.PerguntaCliente
|
|
20
|
+
result: Topic.SearchQuery
|
|
21
|
+
|
|
22
|
+
- kind: SearchAndSummarizeContent
|
|
23
|
+
id: searchContent_eeKb0X
|
|
24
|
+
autoSend: false
|
|
25
|
+
variable: Topic.SearchResult
|
|
26
|
+
userInput: =Topic.SearchQuery.SearchQuery
|
|
27
|
+
fileSearchDataSource:
|
|
28
|
+
searchFilesMode:
|
|
29
|
+
kind: DoNotSearchFiles
|
|
30
|
+
|
|
31
|
+
knowledgeSources:
|
|
32
|
+
kind: SearchSpecificKnowledgeSources
|
|
33
|
+
knowledgeSources:
|
|
34
|
+
- cr7b2_bodegaPedidos.knowledge.PoliticasPedidos
|
|
35
|
+
|
|
36
|
+
applyModelKnowledgeSetting: false
|
|
37
|
+
responseCaptureType: FullResponse
|
|
38
|
+
|
|
39
|
+
- kind: SetVariable
|
|
40
|
+
id: setVariable_0EUmtv
|
|
41
|
+
variable: Topic.Resposta
|
|
42
|
+
value: =Topic.SearchResult.Text.Content
|
|
43
|
+
|
|
44
|
+
inputType:
|
|
45
|
+
properties:
|
|
46
|
+
PerguntaCliente:
|
|
47
|
+
displayName: PerguntaCliente
|
|
48
|
+
description: "A pergunta do cliente sobre pedidos, status, cancelamento ou pagamento."
|
|
49
|
+
type: String
|
|
50
|
+
|
|
51
|
+
outputType:
|
|
52
|
+
properties:
|
|
53
|
+
Resposta:
|
|
54
|
+
displayName: Resposta
|
|
55
|
+
description: Resposta fundamentada na base de conhecimento do agente.
|
|
56
|
+
type: String
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Escalar
|
|
3
|
+
description: Acionado quando o cliente pede para falar com uma pessoa.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
beginDialog:
|
|
6
|
+
kind: OnEscalate
|
|
7
|
+
id: main
|
|
8
|
+
intent:
|
|
9
|
+
displayName: Escalar
|
|
10
|
+
includeInOnSelectIntent: false
|
|
11
|
+
triggerQueries:
|
|
12
|
+
- Falar com um atendente
|
|
13
|
+
- Quero falar com uma pessoa
|
|
14
|
+
- Atendimento humano
|
|
15
|
+
- Me transfere para alguém
|
|
16
|
+
|
|
17
|
+
actions:
|
|
18
|
+
- kind: SendActivity
|
|
19
|
+
id: sendMessage_X7qDFG
|
|
20
|
+
activity: "A transferência para um atendente ainda não está disponível neste canal. Fale com a nossa equipe pelo e-mail pedidos@bodegaazul.example, de segunda a sábado, das 9h às 18h."
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Fallback
|
|
3
|
+
description: Acionado quando nenhum tópico ou ferramenta corresponde à mensagem do cliente.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
beginDialog:
|
|
6
|
+
kind: OnUnknownIntent
|
|
7
|
+
id: main
|
|
8
|
+
priority: -1
|
|
9
|
+
actions:
|
|
10
|
+
- kind: ConditionGroup
|
|
11
|
+
id: conditionGroup_izfoCA
|
|
12
|
+
conditions:
|
|
13
|
+
- id: conditionItem_5rqart
|
|
14
|
+
condition: =System.FallbackCount < 3
|
|
15
|
+
actions:
|
|
16
|
+
- kind: SendActivity
|
|
17
|
+
id: sendMessage_fkqT0j
|
|
18
|
+
activity:
|
|
19
|
+
text:
|
|
20
|
+
- "Desculpe, não entendi. Pode reformular a sua pergunta?"
|
|
21
|
+
- "Não captei bem. Pode tentar explicar de outro jeito?"
|
|
22
|
+
|
|
23
|
+
elseActions:
|
|
24
|
+
- kind: SendActivity
|
|
25
|
+
id: sendMessage_b7FkRT
|
|
26
|
+
activity:
|
|
27
|
+
text:
|
|
28
|
+
- "Estou com dificuldade para entender o seu pedido. Vou te encaminhar para alguém da equipe Bodega Azul."
|
|
29
|
+
|
|
30
|
+
- kind: BeginDialog
|
|
31
|
+
id: beginDialog_wvH06B
|
|
32
|
+
dialog: cr7b2_bodegaPedidos.topic.Escalate
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Saudação
|
|
3
|
+
description: Mensagem de boas-vindas enviada no início da conversa.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
beginDialog:
|
|
6
|
+
kind: OnConversationStart
|
|
7
|
+
id: main
|
|
8
|
+
actions:
|
|
9
|
+
- kind: SendActivity
|
|
10
|
+
id: sendMessage_u1hET4
|
|
11
|
+
activity:
|
|
12
|
+
text:
|
|
13
|
+
- "Olá! Eu sou o {System.Bot.Name}. Posso te ajudar com o seu pedido na Bodega Azul?"
|
|
14
|
+
- "Oi! Aqui é o especialista em pedidos da Bodega Azul. Em que posso ajudar?"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Em caso de erro
|
|
3
|
+
description: Tratamento de erros do agente.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
startBehavior: UseLatestPublishedContentAndCancelOtherTopics
|
|
6
|
+
beginDialog:
|
|
7
|
+
kind: OnError
|
|
8
|
+
id: main
|
|
9
|
+
actions:
|
|
10
|
+
- kind: SetVariable
|
|
11
|
+
id: setVariable_gMi1ol
|
|
12
|
+
variable: init:Topic.CurrentTime
|
|
13
|
+
value: =Text(Now(), DateTimeFormat.UTC)
|
|
14
|
+
|
|
15
|
+
- kind: ConditionGroup
|
|
16
|
+
id: conditionGroup_lvYXTl
|
|
17
|
+
conditions:
|
|
18
|
+
- id: conditionItem_kUCycx
|
|
19
|
+
condition: =System.Conversation.InTestMode = true
|
|
20
|
+
actions:
|
|
21
|
+
- kind: SendActivity
|
|
22
|
+
id: sendMessage_vRisIU
|
|
23
|
+
activity: |-
|
|
24
|
+
Mensagem de erro: {System.Error.Message}
|
|
25
|
+
Código do erro: {System.Error.Code}
|
|
26
|
+
Id da conversa: {System.Conversation.Id}
|
|
27
|
+
Horário (UTC): {Topic.CurrentTime}
|
|
28
|
+
|
|
29
|
+
elseActions:
|
|
30
|
+
- kind: SendActivity
|
|
31
|
+
id: sendMessage_AHsENQ
|
|
32
|
+
activity:
|
|
33
|
+
text:
|
|
34
|
+
- |-
|
|
35
|
+
Ocorreu um erro.
|
|
36
|
+
Código do erro: {System.Error.Code}
|
|
37
|
+
Id da conversa: {System.Conversation.Id}
|
|
38
|
+
Horário (UTC): {Topic.CurrentTime}.
|
|
39
|
+
speak:
|
|
40
|
+
- Ocorreu um erro, por favor tente novamente.
|
|
41
|
+
|
|
42
|
+
- kind: LogCustomTelemetryEvent
|
|
43
|
+
id: logTelemetry_4FeX9f
|
|
44
|
+
eventName: BodegaPedidos_OnError
|
|
45
|
+
properties: "={Agente: \"bodega-pedidos\", ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}"
|
|
46
|
+
|
|
47
|
+
- kind: CancelAllDialogs
|
|
48
|
+
id: cancelAllDialogs_BwS5B0
|
package/skills/cast-list/examples/agents/bodega-pedidos/topics/RecebimentoOrquestrador.topic.mcs.yml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
mcs.metadata:
|
|
2
|
+
componentName: Recebimento do Orquestrador
|
|
3
|
+
description: Ponto de entrada quando o agente é chamado pelo orquestrador Bodega Azul como agente conectado.
|
|
4
|
+
kind: AdaptiveDialog
|
|
5
|
+
modelDescription: Inicializa o agente quando ele é chamado pelo orquestrador Bodega Azul e recebe a categoria da solicitação.
|
|
6
|
+
beginDialog:
|
|
7
|
+
kind: OnRedirect
|
|
8
|
+
id: main
|
|
9
|
+
actions:
|
|
10
|
+
- kind: SetVariable
|
|
11
|
+
id: setVariable_JFCD4c
|
|
12
|
+
variable: Global.CategoriaSolicitacao
|
|
13
|
+
value: =System.Activity.Value.CategoriaSolicitacao
|
|
14
|
+
|
|
15
|
+
inputType: {}
|
|
16
|
+
outputType: {}
|
package/skills/cast-list/examples/agents/bodega-pedidos/variables/CategoriaSolicitacao.mcs.yml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Name: Categoria da Solicitação
|
|
2
|
+
# Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
|
|
3
|
+
name: CategoriaSolicitacao
|
|
4
|
+
aIVisibility: UseInAIContext
|
|
5
|
+
scope: Conversation
|
|
6
|
+
description: Categoria da solicitação do cliente definida pelo orquestrador Bodega Azul (Pedidos, Devolucoes, Frete, Cupons, LojaFisica, Outro).
|
|
7
|
+
schemaName: cr7b2_bodegaPedidos.globalvariable.CategoriaSolicitacao
|
|
8
|
+
kind: GlobalVariableComponent
|
|
9
|
+
isExternalInitializationAllowed: true
|
|
10
|
+
defaultValue: =Blank()
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# What people said about the agents, and what was decided. build.mjs keeps it up to date; edit it, or fill the
|
|
2
|
+
# workbook's «Declared» sheet and the «Decision» column and read it back with --from.
|
|
3
|
+
format: cast-list/cast-v1
|
|
4
|
+
name: Bodega Azul — atendimento
|
|
5
|
+
declared:
|
|
6
|
+
# the handoff document says frete escalates; the YAML says it does not
|
|
7
|
+
- { agent: bodega-frete, key: "trigger:OnEscalate", value: sim, source: "handoff do frete, seção 4" }
|
|
8
|
+
- { agent: bodega-pedidos, key: kpi, value: "tempo até a resposta < 2 min", source: backlog }
|
|
9
|
+
decisions:
|
|
10
|
+
- { key: "trigger:OnEscalate", status: accepted, scope: platform, why: "Ninguém fica sem saída para uma pessoa" }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# The team's standard, written so a run can check it. Private: it names your agents — keep it in your environment.
|
|
2
|
+
format: cast-list/profile-v1
|
|
3
|
+
name: Bodega Azul — atendimento
|
|
4
|
+
roles:
|
|
5
|
+
orchestrator: [bodega-orquestrador]
|
|
6
|
+
specialist: "*"
|
|
7
|
+
threshold: 0.7 # a pattern: in at least 70% of the agents of a role…
|
|
8
|
+
min_agents: 3 # …with at least 3 agents in that role
|
|
9
|
+
rules:
|
|
10
|
+
- { id: escala, role: specialist, has: "trigger:OnEscalate", says: "Todo especialista escala para humano" }
|
|
11
|
+
- { id: kpi, role: specialist, has: "declared:kpi", says: "Todo especialista tem KPI" }
|
|
12
|
+
focus_areas:
|
|
13
|
+
- { id: confiabilidade, name: Confiabilidade, facts: ["trigger:OnError", "node:LogCustomTelemetryEvent", "ms:rai-error-handling"] }
|
|
14
|
+
ignore: ["trigger:OnConversationStart"]
|
|
15
|
+
microsoft_patterns: on
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# The cast file and the facts
|
|
2
|
+
|
|
3
|
+
## `<id>.cast.yaml` — `cast-list/cast-v1`
|
|
4
|
+
|
|
5
|
+
What people said about the agents and what was decided. `scripts/build.mjs` writes it on the first run and keeps it
|
|
6
|
+
up to date (it is read again on every run); its comments and layout stay. Edit it by hand, or fill the workbook and read
|
|
7
|
+
it back with `--from` / `--take`. A problem in it is an error with its line.
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
format: cast-list/cast-v1
|
|
11
|
+
name: Customer service agents
|
|
12
|
+
agents: # the roles of the last run (an agent the profile does not name keeps its role here)
|
|
13
|
+
- { id: main-orchestrator, role: orchestrator }
|
|
14
|
+
- { id: returns, role: specialist }
|
|
15
|
+
declared: # what a document or a person says — always with its source
|
|
16
|
+
- { agent: returns, key: kpi, value: "time to answer < 2 min", source: "backlog, epic 12" }
|
|
17
|
+
- { agent: shipping, key: "trigger:OnEscalate", value: "yes", source: "handoff, section 4" }
|
|
18
|
+
decisions: # what the team decided about a pattern
|
|
19
|
+
- { key: "trigger:OnEscalate", status: accepted, scope: platform, why: "Nobody is left without a person" }
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- **declared**: `key` is either something only people know (`kpi`, `owner`, any word: it becomes `declared:<key>`) or a
|
|
23
|
+
fact key (`trigger:OnEscalate`, `references/keys.md`) when a document claims the agent does it. `value` `no` / `não` /
|
|
24
|
+
`false` claims it does **not**. A claim never changes what the YAML shows: when they disagree, it is a conflict.
|
|
25
|
+
- **decisions**: `status` is `accepted` or `rejected`; `scope` is `platform` (every agent), `specialist` or
|
|
26
|
+
`orchestrator`; `why` says it. An accepted pattern is checked on every agent of its scope on the next run — even when
|
|
27
|
+
its share would no longer make it a pattern. A rejected one is shown and nobody is off it.
|
|
28
|
+
|
|
29
|
+
## The workbook back
|
|
30
|
+
|
|
31
|
+
In Excel, fill the **Declared** sheet (who, key, value, source) and the **Decision** column of **Patterns** (`accepted` /
|
|
32
|
+
`aceito`, `rejected` / `rejeitado`; **Scope** and **Why** beside it). Then:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
node scripts/build.mjs <agents-folder> --from <filled>.xlsx the changes, each with a key (d1…, p1…)
|
|
36
|
+
node scripts/build.mjs <agents-folder> --from <filled>.xlsx --take d1,p1 writes the chosen ones (or --take all)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
A line deleted or a decision cleared is a change too.
|
|
40
|
+
|
|
41
|
+
## `<id>.facts.json` — `cast-list/facts-v1`
|
|
42
|
+
|
|
43
|
+
`--facts` writes what was seen, for a model to read before it adds what people declared:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{ "format": "cast-list/facts-v1",
|
|
47
|
+
"agents": [ { "id": "shipping", "schemaName": "cr7b2_shipping", "displayName": "Shipping",
|
|
48
|
+
"facts": { "trigger:OnUnknownIntent": [ { "file": "topics/Fallback.topic.mcs.yml", "line": 7 } ] },
|
|
49
|
+
"children": [], "unknown": [] } ] }
|
|
50
|
+
```
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Keys
|
|
2
|
+
|
|
3
|
+
GENERATED from dev/cast-list/src/labels.ts and microsoft.ts by tools/assets.mjs — do not edit.
|
|
4
|
+
|
|
5
|
+
Every fact cast-list finds is a key. The keys below have a name; any other key keeps its kind and value
|
|
6
|
+
(«Connector shared_office365»), and a kind cast-list does not know stays as it is.
|
|
7
|
+
|
|
8
|
+
## A. Conversation — Conversa
|
|
9
|
+
|
|
10
|
+
| Key | Name | Nome |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `trigger:OnConversationStart` | Greeting | Boas-vindas |
|
|
13
|
+
| `trigger:OnUnknownIntent` | Fallback (when it does not understand) | Fallback (quando não entende) |
|
|
14
|
+
| `trigger:OnEscalate` | Escalation to a person | Escalonamento para humano |
|
|
15
|
+
| `trigger:OnError` | Error handling | Tratamento de erro |
|
|
16
|
+
| `trigger:OnRecognizedIntent` | A topic of its own, by intent | Tópico próprio, por intenção |
|
|
17
|
+
| `trigger:OnSelectIntent` | Disambiguation («did you mean…») | Desambiguação («você quis dizer…») |
|
|
18
|
+
| `trigger:OnSignIn` | Sign-in | Login |
|
|
19
|
+
| `trigger:OnGeneratedResponse` | Reviews the generated answer | Revisa a resposta gerada |
|
|
20
|
+
| `trigger:OnActivity` | On every message | Em toda mensagem |
|
|
21
|
+
| `setting:generative=on` | Generative orchestration on | Orquestração generativa ligada |
|
|
22
|
+
| `setting:generative=off` | Generative orchestration off | Orquestração generativa desligada |
|
|
23
|
+
| `topics:with-model-description` | Topics described for the model | Tópicos descritos para o modelo |
|
|
24
|
+
| `calls:topic:<value>` | Calls the topic <value> | Chama o tópico <valor> |
|
|
25
|
+
| `trigger:<value>` | Trigger <value> | Gatilho <valor> |
|
|
26
|
+
| `setting:<value>` | Setting <value> | Configuração <valor> |
|
|
27
|
+
|
|
28
|
+
## B. Integrations — Integrações
|
|
29
|
+
|
|
30
|
+
| Key | Name | Nome |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `connector:<value>` | Connector <value> | Conector <valor> |
|
|
33
|
+
| `operation:<value>` | Operation <value> | Operação <valor> |
|
|
34
|
+
| `connref:<value>` | Connection reference <value> | Referência de conexão <valor> |
|
|
35
|
+
| `mcp:<value>` | MCP server <value> | Servidor MCP <valor> |
|
|
36
|
+
| `flow:<value>` | Flow <value> | Fluxo <valor> |
|
|
37
|
+
|
|
38
|
+
## C. Knowledge — Conhecimento
|
|
39
|
+
|
|
40
|
+
| Key | Name | Nome |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `trigger:OnKnowledgeRequested` | Before searching knowledge | Antes de buscar no conhecimento |
|
|
43
|
+
| `node:SearchAndSummarizeContent` | Generative answers from knowledge | Respostas generativas sobre o conhecimento |
|
|
44
|
+
| `node:SearchKnowledgeSources` | Searches the knowledge sources | Busca nas fontes de conhecimento |
|
|
45
|
+
| `yaml-only:triggerCondition` | Search condition only in YAML (the editor may erase it) | Condição de busca só no YAML (a tela pode apagar) |
|
|
46
|
+
| `knowledge:SharePointSearchSource` | Knowledge in SharePoint | Conhecimento no SharePoint |
|
|
47
|
+
| `knowledge:<value>` | Knowledge <value> | Conhecimento <valor> |
|
|
48
|
+
|
|
49
|
+
## D. Orchestrator — Orquestrador
|
|
50
|
+
|
|
51
|
+
| Key | Name | Nome |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| `trigger:OnRedirect` | Takes a call from the orchestrator | Recebe chamada do orquestrador |
|
|
54
|
+
| `trigger:OnToolSelected` | Child chosen as a tool | Filho escolhido como ferramenta |
|
|
55
|
+
| `setting:connectable` | Can be called by an orchestrator | Pode ser chamado por um orquestrador |
|
|
56
|
+
| `calls:<value>` | Calls <value> | Chama <valor> |
|
|
57
|
+
| `child:<value>` | Child <value> | Filho <valor> |
|
|
58
|
+
| `var-in:<value>` | Receives from the orchestrator <value> | Recebe do orquestrador <valor> |
|
|
59
|
+
| `var:<value>` | Global variable <value> | Variável global <valor> |
|
|
60
|
+
|
|
61
|
+
## E. Governance — Governança
|
|
62
|
+
|
|
63
|
+
| Key | Name | Nome |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| `instructions:present` | Has instructions | Tem instruções |
|
|
66
|
+
| `node:LogCustomTelemetryEvent` | Logs telemetry | Registra telemetria |
|
|
67
|
+
| `node:CSATQuestion` | Asks for satisfaction (CSAT) | Pergunta a satisfação (CSAT) |
|
|
68
|
+
| `node:<value>` | Node <value> | Nó <valor> |
|
|
69
|
+
| `model:<value>` | Model <value> | Modelo <valor> |
|
|
70
|
+
| `auth:<value>` | Sign-in <value> | Login <valor> |
|
|
71
|
+
|
|
72
|
+
## Microsoft patterns — Padrões Microsoft
|
|
73
|
+
|
|
74
|
+
| Key | Name | Nome |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `ms:<value>` | Microsoft pattern: <value> | Padrão Microsoft: <valor> |
|
|
77
|
+
|
|
78
|
+
## Declared — Declarado
|
|
79
|
+
|
|
80
|
+
| Key | Name | Nome |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `declared:kpi` | KPI declared | KPI declarado |
|
|
83
|
+
| `declared:owner` | Owner declared | Dono declarado |
|
|
84
|
+
| `declared:<value>` | Declared: <value> | Declarado: <valor> |
|
|
85
|
+
|
|
86
|
+
## The Microsoft patterns
|
|
87
|
+
|
|
88
|
+
From [microsoft/skills-for-copilot-studio](https://github.com/microsoft/skills-for-copilot-studio/blob/main/patterns). With a mark in the YAML, cast-list finds them (`ms:<id>`);
|
|
89
|
+
the others only a person can say (in the cast file, `declared` with the key `ms:<id>`).
|
|
90
|
+
|
|
91
|
+
| Pattern | How cast-list knows |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `orchestrator-variables` — Orchestrator-Generated Variables | an OnRecognizedIntent topic with an AutomaticTaskInput that has shouldPromptUser: false |
|
|
94
|
+
| `rai-error-handling` — RAI Error Handling | the OnError topic reads System.Error.SubCode |
|
|
95
|
+
| `knowledge-hold-message` — Knowledge Hold Message | an OnKnowledgeRequested topic that sends a message |
|
|
96
|
+
| `prevent-tool-call-leaks` — Prevent Tool Call Leaks | an OnGeneratedResponse topic that sets System.ContinueResponse |
|
|
97
|
+
| `dynamic-topic-redirect` — Dynamic Topic Redirect | a BeginDialog whose dialog is a =Switch( expression |
|
|
98
|
+
| `channel-aware-behavior` — Channel-Aware Behavior | a condition or SetVariable that reads System.Activity.ChannelId (not a tool input) |
|
|
99
|
+
| `date-context` — Date Context | the instructions use Today() or Now() |
|
|
100
|
+
| `line-breaks-in-messages` — Line Breaks in Messages | <br /> inside a SendActivity or Question |
|
|
101
|
+
| `conversation-history-variable` — Conversation History Variable | declared only |
|
|
102
|
+
| `chain-of-thought-logging` — Chain of Thought Logging | declared only |
|
|
103
|
+
| `deterministic-mcp-calls` — Deterministic MCP Calls | declared only |
|
|
104
|
+
| `prevent-child-agent-responses` — Prevent Child Agent Responses | declared only |
|
|
105
|
+
| `jit-glossary` — JIT Glossary | declared only |
|
|
106
|
+
| `jit-user-context` — JIT User Context | declared only |
|
|
107
|
+
| `teams-production-hardening` — Teams Production Hardening | declared only |
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# The profile — `cast-list/profile-v1`
|
|
2
|
+
|
|
3
|
+
The team's standard, written so a run can check it. **Private**: it names the team's agents. Pass it with
|
|
4
|
+
`--profile <file>`; with none, the defaults below hold. A field that is not one of these (a typo) is an error with its
|
|
5
|
+
line, so a misspelled `treshold` never goes unnoticed.
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
format: cast-list/profile-v1
|
|
9
|
+
name: Customer service agents # the title of the map and the lesson
|
|
10
|
+
roles:
|
|
11
|
+
orchestrator: [main-orchestrator] # agent folders by name, or "*"
|
|
12
|
+
specialist: "*" # everyone not named elsewhere
|
|
13
|
+
threshold: 0.7 # a pattern: in at least 70% of a role's agents…
|
|
14
|
+
min_agents: 3 # …when the role has at least 3 agents
|
|
15
|
+
rules: # what every agent of a role must have
|
|
16
|
+
- { id: escalate, role: specialist, has: "trigger:OnEscalate", says: "Every specialist escalates to a person" }
|
|
17
|
+
- { id: kpi, role: specialist, has: "declared:kpi", says: "Every specialist has a KPI" }
|
|
18
|
+
focus_areas: # filters on the map
|
|
19
|
+
- { id: reliability, name: Reliability, facts: ["trigger:OnError", "node:LogCustomTelemetryEvent"] }
|
|
20
|
+
ignore: ["trigger:OnConversationStart"] # facts left out everywhere
|
|
21
|
+
microsoft_patterns: on # off leaves the ms: facts out
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
| Field | Default | What it does |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `roles` | the orchestrator is whoever calls another agent; the rest are specialists | An agent named here has that role; then the role in the cast file; then `"*"`; then the default. A name with no folder is told in «to look at». |
|
|
27
|
+
| `threshold`, `min_agents` | 0.7, 3 | A pattern of a role. It is the **platform's** when the other role has it too. With one orchestrator there is no majority among orchestrators: what only it does is shown apart. |
|
|
28
|
+
| `rules` | none | `role` is `orchestrator` or `specialist`; `has` is a key (`references/keys.md`), `declared:<thing>` for what only people know. |
|
|
29
|
+
| `focus_areas` | none | Each a filter of the matrix. |
|
|
30
|
+
| `ignore` | none | Keys that say nothing for this team. |
|
|
31
|
+
|
|
32
|
+
The keys are the same in any language; only the screen words change with `--lang`.
|