1 | TNA Rest Gateway
Fornece acesso seguro aos serviços da plataforma Terranoha para qualquer serviço externo.
4 | TNA Intent Service
Reflete todas as solicitações verbais recebidas para traduzir o texto do usuário em intenções estruturadas que podem ser convertidas em solicitações digitais compreensíveis pela maioria dos servidores.
6 | NLP / NLU
O coração da cozinha de linguagem natural. Traduz frases em texto livre em estruturas de nome/valor e vice-versa.
2 | TNA Bot Service
Alinhado com os requisitos de um serviço de mensagens (chat) externo para conduzir uma conversa de forma totalmente automatizada.
3 | TNA Smart Access Gateway
Roteia o tráfego de comunicação de solicitação/resposta de acordo com as regras de trânsito estabelecidas.
5 | TNA Core Service
Inclui todos os tipos de processadores de lógica de negócios necessários para atender às solicitações recebidas.
7 | TNA Market Connect Service
Oferece a capacidade de receber e acomodar feeds de dados externos, juntamente com o processo de unificação de dados.
1 | TNA Core Service
Verificação de segurança contextual baseada no contexto de segurança fornecido pelo nível de Segurança de Acesso e com base na tabela de direitos de acesso.
A plataforma Terranoha é construída sobre um subconjunto de microsserviços. Entre eles, temos:
- Smart Gateway para autenticar usuários
- Bot Service para coordenar o fluxo de trabalho do bot
- Intent Service para esclarecer as intenções dos usuários
- NLU Service para processar linguagem natural
Cada solicitação recebida e ação realizada é auditada e registrada. Estamos em conformidade com WhatsApp, Microsoft Teams, Slack, Telegram, Webex.
O relatório de auditoria pode ser baixado sob demanda pelo Emmie (bot Terranoha) ou via API REST, de acordo com as permissões concedidas pelo usuário.
Abaixo, alguns exemplos de registros de auditoria
Usuário inicia uma conversa :
{
“ctoken”: “42d30d29-79ce-42b6-aef0-74988a054a7e”,
“channel”: “MSTEAMS”,
“client”: “ACME”
}
In this request, user is identified by the ctoken field, which is the id of the user messaging system account. This ctoken is link to a user account.
Usuário recebe um link para autenticar com segurança :
{
“ctoken”: “42d30d29-79ce-42b6-aef0-74988a054a7e”,
“channel”: “MSTEAMS”,
“client”: “ACME”,
“callback”: “https:\/\/service.terranoha.net\/tna\/service\/auth-status”,
“ttl”: 1621260188716
}
The Stream-id is linked to a time stamp and some other metadata fields. Emmie bot creates the report, joins the dependencies needed to have a full view on the audit trail details and provides a readable format.
O usuário solicita uma cotação ao serviço de bot:
{
“data”: {
“message”: “mkt eurusd 100k”,
“id”: “620633749000”,
“channel”: “MSTEAMS”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”
},
“action”: “message.crack”,
“auth”: {
“channel”: “MSTEAMS”,
“ctoken”: “42d30d29-79ce-42b6-aef0-74988a054a7e”,
“client”: “ACME”
}
}
Mensagem é interpretada pelo assistente de intenção :
{
“data”: {
“context”: {
“ccy1”: “EUR”,
“ccy2”: “USD”,
“qty”: “100000.0”
},
“id”: “620633749000”,
“language”: “en”,
“intermediate”: “false”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”,
“context-type”: “forex”,
“intent”: “request”,
“scope”: “quote”
},
“action”: “message.crack.result”
}
O usuário faz uma solicitação de pedido ao serviço de bot:
{
“data”: {
“message”: “buy 1m eurusd 1W 360t”,
“id”: “620633749013”,
“channel”: “MSTEAMS”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”
},
“action”: “message.crack”,
“auth”: {
“channel”: “MSTEAMS”,
“ctoken”: “42d30d29-79ce-42b6-aef0-74988a054a7e”,
“client”: “ACME”
}
}
Mensagem é interpretada pelo assistente de intenção :
{
“data”: {
“context”: {
“side”: “buy”,
“ccy1”: “EUR”,
“ccy2”: “USD”,
“qty”: “1000000.0”,
“counterparty”: “360t”,
“set-type”: “1W”
},
“id”: “620633749013”,
“language”: “en”,
“intermediate”: “false”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”,
“context-type”: “forex”,
“intent”: “request”,
“scope”: “order”
},
“action”: “message.crack.result”
}
Usuário confirma o pedido :
{
“data”: {
“message”: “c”,
“id”: “620633749014”,
“channel”: “MSTEAMS”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”
},
“action”: “message.crack”,
“auth”: {
“channel”: “MSTEAMS”,
“ctoken”: “42d30d29-79ce-42b6-aef0-74988a054a7e”,
“client”: “ACME”
}
}
Mensagem é interpretada pelo assistente de intenção :
{
“data”: {
“context”: {
“side”: “buy”,
“ccy1”: “EUR”,
“ccy2”: “USD”,
“qty”: “1000000.0”,
“counterparty”: “360t”,
“set-type”: “1W”
},
“id”: “620633749014”,
“language”: “en”,
“intermediate”: “false”,
“stream-id”: “a:1LAcxPeLEaF5yWwQUhM2_T8UMHMqYm-sjOxbg8WMG0AXV3bfgcPlFoej3qC2j0MO6IYC4LdSlDWtG9Yp2qWQ8bFP6t0TJp3DJjn_WcHbQAd0r3MUMU-D94rnhemsA7LLo”,
“context-type”: “forex”,
“intent”: “request.confirm”,
“scope”: “order”
},
“action”: “message.crack.result”
}
360t aceita o pedido :
{
“data”: {
“symbol”: “EUR/USD”,
“id”: “620633742668”,
“type”: “market”,
“status”: “accept”,
“price-near”: 0.0,
“price-far”: 0.0,
“qty-min”: 0.0,
“qty-near-last”: 0.0,
“qty-far-last”: 0.0,
“qty-near-residual”: 1000000.0,
“qty-far-residual”: 0.0,
“price-spot”: 0.0,
“settl-date-near”: “2021-05-13”,
“fwd-points-near”: 0.0,
“fwd-points-far”: 0.0,
“price-near-last”: 0.0,
“price-far-last”: 0.0,
“price-near-average”: 0.0,
“price-far-average”: 0.0,
“time-in-force”: “ioc”,
“counterparty-order-id”: “308500007”,
“counterparty-exec-id”: “nm6lro”,
“status-last”: “accept”,
“qty-near”: 1000000.0,
“qty-far”: 0.0,
“cause-id”: “620633742668”,
“side”: “buy”,
“counterparty”: “360t”
},
“action”: “order.fx.request.result”
}
Pedido é preenchido:
{
“data”: {
“symbol”: “EUR/USD”,
“id”: “620633742668”,
“type”: “market”,
“status”: “fill”,
“price-near”: 0.0,
“price-far”: 0.0,
“qty-min”: 0.0,
“qty-near-last”: 1000000.0,
“qty-far-last”: 0.0,
“qty-near-residual”: 0.0,
“qty-far-residual”: 0.0,
“price-spot”: 0.0,
“settl-date-near”: “2021-05-13”,
“fwd-points-near”: 0.0,
“fwd-points-far”: 0.0,
“price-near-last”: 1.21469,
“price-far-last”: 0.0,
“price-near-average”: 1.21469,
“price-far-average”: 0.0,
“time-in-force”: “ioc”,
“counterparty-order-id”: “308500007”,
“counterparty-exec-id”: “903448414.2”,
“status-last”: “fill”,
“qty-near”: 1000000.0,
“qty-far”: 0.0,
“cause-id”: “620633742668”,
“side”: “buy”,
“counterparty”: “360t”
},
“action”: “order.fx.request.result”
}{
“data”: {
“id”: “620633742668”
},
“action”: “request.completion.ack”
}