Compartilhar via


Personalização do Cartão de Chat – Operadores

Em alguns cenários, pode surgir uma necessidade em que diferentes usuários possam precisar exibir diferentes cartão de chat, que podem ser baseadas em alguns atributos. Para habilitar esses cenários, o Kaizala fornece Operadores, que permite que os Criadores de Ações personalizem o chat cartão exibições para a mesma instância de Ação de forma diferente para diferentes cenários/usuários.

Vamos dar um exemplo:

Digamos que queremos mostrar a exibição cartão diferente de remetente do que seus receptores. Usando operadores, podemos alcançar esse cenário facilmente, abaixo está a exibição de chat personalizada JSON para isso:


                  { 

                      "schemaVersion": 3, 

                      "schema": { 

                        "type": "container", 

                        "layout": "vertical", 

                        "children": [ 

                          { 

                            "type": "text", 

                            "string": "Title: ${Form.title}" 

                          }, 

                          { 

                            "type": "text", 

                            "string": "Who am I: ${Operators.custom_text}" 

                          } 

                        ] 

                      }, 

                      "Operators": { 

                        "custom_text": { 

                          "operator": "conditional_value", 

                          "condition": { 

                            "operator": "is_it_me", 

                            "value": { 

                              "operator": "property_value", 

                              "property": "creator", 

                              "src": "local" 

                            } 

                          }, 

                          "value": "Sender", 

                          "default": "Receiver" 

                        } 

                      } 

                  } 

Aqui você pode observar que o operador "conditional_value" obtém o valor booliano do operador aninhado "is_it_me" que aninhado ainda mais com o operador "property_value". Da mesma forma, isso pode ser facilmente estendido a qualquer um desses cenários, mesmo um complexo. Além disso, a seguinte entrada deve ser adicionada ao manifesto do pacote: ActionStoreSchema: "". Para obter mais detalhes, consulte esquema JSON do manifesto do pacote .

Lista de operadores com suporte:

Observação : as variáveis x, y, z usadas nos exemplos de sintaxe podem ser valores simples ou resultado retornado por operadores aninhados

Nome do operador Nome do Parâmetro Tipo de parâmetro Funcionalidade Sintaxe Sintaxe minimizada Observação
Valor condicional 1. Condição 2. Valor 3. Padrão 1. Boolean 2. Valor Json 3. Valor Json Esse operador é usado para retornar um valor especificado, se uma condição definida for verdadeira. Se a condição for falsa, ela retornará o falso. {
"operator": "conditional_value","condition": x",value": { y },"default": { z }
}
[ "conditional_value", X, Y, Z]
Igual a 1. Valor 2.Valor 1. Cadeia de caracteres 2.Cadeia de caracteres Esse operador retornará true se os valores fornecidos (valor1, valor2) forem iguais. Caso contrário, ele retorna falso {
"operator": "eq","value1": x"value2": y
}
["eq", x, y]
FormatProfileName 1. Propriedade 2. Src 1. String 2.PropertyType Obtém a Propriedade do Src 'PropertyType' e formata a lista de userIds como:

'<Nome do Usuário 1> & n mais'

n é o número de usuários presentes na lista – 1
{
"operator":"format_profile_names",
"property": x, "src":P ropertyType
}
["format_profile_names", PropertyType, x] PropertyType
{
local,server
}

1. Esse operador pressupõe que a propriedade x fornecida retorna a matriz de userIds

2. UserName1 será você se o usuário conectado atual estiver presente na lista de userIds.
FormatString 1. Formatar 2. Agrs 1. Cadeia de caracteres 2.Matriz de argumentos esperados pela cadeia de caracteres Formatar Esse operador permite formatar uma cadeia de caracteres usando especificadores de formato.

Esse operador é igual a qualquer outro operador de cadeia de caracteres de formato presente no cpp ou java
{
"operator": "format_string","format": x"args": [y, z ...]
}
["format_string", x, [y, z ...]] X pode conter especificadores como %s, %d etc e os operadores esperam que os argumentos estejam presentes do mesmo tipo na mesma ordem

Para por exemplo, String pode ser
{
"operador": "format_string",
"format": "Meu nome é %s e minha idade é %d",
"args": [y, z]
}

Onde y é uma variável de cadeia de caracteres e z é um inteiro
IsCurrentUser 1.Valor 1. uuid Compara o uuid fornecido (UserId) com o uuid (UserId) do usuário conectado atual. Ele retorna true se corresponder e retornar false caso contrário {
"operator": "is_it_me","
value": x
}
["is_it_me"x]
JSONPathValue 1. 1. Entidade 2.Path 1.EntityType 2.Caminho json válido Busca o valor que reside na chave na entidade json do tipo determinado. Ele retorna o primeiro valor encontrado no caminho. {
"operator": "jsonpath_value",
"entity": EntityType,
"path": ValidJsonPath
}
["jsonpath_value", EntityType, ValidJsonPath] {
"operator":
"jsonpath_value",
"entity": Message,
"path": "$.. SenderName"
}

"$.." Atravesse recursivamente

"$". Percorrer apenas o 1º nível de entidade
MessageConversationName 1. Valor 1. messageId Retorna o nome da conversa ao qual a mensagem com determinada messageId pertence. {"operator": "message_conversation_name","value": x} ["message_conversation_name",x]
MessageCreationTime 1. Valor 1. messageId Retorna a cadeia de caracteres de carimbo de data/hora legível humano para o carimbo de data/hora de criação da mensagem com a mensagem dadaId {
"operator": "message_creation_time","
value": x
}
["message_creation_time", x]
ProfileName 1. id 1. uuid Retornar o nome de exibição do usuário quando uuid (UserId) for fornecido {
"operator": "profile_name","id": x
}
["profile_name", x]
Propertyvalue 1.Src 2.Property 1.PropertyType 2.String Obtém a propriedade do Src PropertyType {
"operator": "property_value",
"property": x"src": PropertyType
}
["property_value", PropertyType, x] PropertyType

{
local,server
}
AdditionOperation 1. Arg1 1. Matriz de argumentos necessários pela operação de adição Ele avalia todos os valores dentro dos args e os adiciona {
"operator":"addition",
"args":[{
"operator".}
,2,4]
}
["adição", [1, 2, 3]] Certifique-se de avaliar args que resultam em tipo flutuante
SubtractionOperation 1.Arg1 2.Arg2 1. Argumento do qual subtrair
2. Argumento que precisa ser subtraído
Ele avalia os valores dentro do args e subtrai o segundo do primeiro {
"operator":"subtraction",
"arg1":
{
"operator".}
,
"arg2":2
}
["subtração", [4, 3]] Certifique-se de avaliar args que resultam em tipo flutuante
MultiplicationOperation 1. Arg1 1. Matriz de argumentos necessários pela operação de multiplicação Ele avalia todos os valores dentro dos args e os multiplica {
"operator":"multiplication",
"args":[
{
"operator".
},2,4]
}
["multiplicação", [1, 2, 3] Certifique-se de avaliar args que resultam em tipo flutuante
DivisionOperation 1. Arg1
2. Arg2
1. Argumento do qual dividir
2. Argumento que precisa ser dividido
Ele avalia os valores dentro do args e divide o segundo do primeiro {
"operator":"division",
"arg1":
{
"operator"..
},
"arg2":2
}
["division", [4, 3]] Certifique-se de avaliar args que resultam em tipo flutuante
ModuloOperation 1. Arg1
2. Arg2
1. Argumento do qual dividir
2. Argumento que precisa ser dividido para obter o restante
Ele avalia os valores dentro do args e divide o segundo do primeiro e retorna o restante {
"operator":"modulo",
"arg1":
{
"operator".}
,
"arg2":2
}
["modulo", [4, 3]] Certifique-se de avaliar args que resultam em tipo flutuante