Apps interativos do Google Chat para SAP

Este documento descreve uma arquitetura de referência para criar apps interativos do Google Chat para SAP usando a edição no local ou na nuvem do ABAP SDK for Google Cloud. Com os apps interativos do Chat, além de receber notificações, os usuários podem realizar ações em fluxos de trabalho do SAP, como aprovar ou rejeitar solicitações, diretamente no Google Workspace.

O público-alvo deste documento inclui desenvolvedores ABAP, arquitetos de soluções SAP e arquitetos de nuvem. Este documento pressupõe que você já conhece os apps de chat disponíveis no Google Workspace.

Arquitetura

O diagrama a seguir mostra uma arquitetura de referência para implementar apps de chat interativo para SAP:

Apps de chat interativo para SAP

Esta arquitetura de referência inclui os seguintes componentes:

# Componente Detalhes
1 Processos ou transações do SAP Qualquer processo ou transação da SAP que precise enviar mensagens aos usuários. É o ponto de partida para acionar a comunicação pelo Google Chat.
2 SDK do ABAP para Google Cloud Funciona como uma ponte entre os sistemas SAP e o Google Cloud, permitindo a comunicação HTTPS segura com a API Google Chat.
3 Projeto do app Google Chat O projeto do Google Cloud em que você ativou a API Google Chat e configurou o app do Chat.
4 espaço do Chat

Uma sala dedicada no Google Chat em que o sistema SAP pode se comunicar com os usuários.

Os apps do Chat ficam nesse espaço, fornecendo um fluxo de informações em tempo real dos seus sistemas SAP pela API Google Chat.

5 Projeto do Apps Script

O projeto do Apps Script em que você implementa a lógica do app Chat para receber e processar mensagens.

6 Pub/Sub

O projeto do Apps Script publica ações do usuário, como aprovações ou rejeições, como mensagens em um tópico do Pub/Sub.

O SDK ABAP para Google Cloud usa uma assinatura do Pub/Sub para extrair essas mensagens do tópico. Isso permite que o sistema SAP processe essas ações e acione as atualizações necessárias nos processos de negócios.

Produtos usados

Esta arquitetura de referência usa os seguintes produtos do Google:

  • ABAP SDK for Google Cloud: ajuda você a desenvolver aplicativos ABAP que conectam seus sistemas SAP a serviços do Google Cloud, como o Google Chat.
  • Google Chat: ajuda a criar apps de chat interativos e colaborativos, melhorando a comunicação e a produtividade.

  • Apps Script: permite integrar e automatizar tarefas em produtos do Google.

  • Pub/Sub: permite enviar e receber mensagens entre aplicativos independentes.

Casos de uso

Os apps de chat interativo permitem que você realize ações nos fluxos de trabalho do SAP, como aprovar ou rejeitar solicitações. O diagrama a seguir ilustra um padrão de chat interativo para fluxos de trabalho de aprovação de pedidos de compra (PO) e de venda (SO):

Aprovação do fluxo de trabalho de apps de chat interativo

A lista a seguir mostra alguns casos de uso de apps de chat interativo para SAP:

  • Gerenciamento de eventos do fluxo de trabalho: é possível interagir com um app de chat para gerenciar seu fluxo de trabalho. Por exemplo, se uma ordem de compra precisar da sua atenção, faça o seguinte no app Chat:

    • Aprovar o pedido
    • Rejeitar o pedido
    • Solicitar mais detalhes
  • Alertas do sistema: é possível enviar alertas para um espaço do Chat para alertar os administradores do sistema sobre vários limites do sistema que foram alcançados. Por exemplo, uso de espaço em disco, operações de longa duração, bloqueios de cache ou expiração de licença.

  • Atualizações de status de jobs: é possível enviar atualizações de jobs personalizados de longa duração para um conjunto de usuários que estão aguardando a conclusão desses jobs e realizar operações pós-processamento.

Considerações sobre o design

Ao projetar apps de chat para seus casos de uso, vários fatores podem influenciar suas decisões de design. Esta seção fornece orientações para ajudar você a usar essa arquitetura de referência para desenvolver arquiteturas que atendam aos seus requisitos específicos de segurança, privacidade, compliance e custo.

Configuração do app Google Chat

  • Nome do app de chat: forneça um nome claro e significativo para o app de chat. Para uma experiência do usuário perfeita, verifique se o nome do app de chat reflete com precisão as funcionalidades ou os serviços com que ele se integra.

  • Fusos horários: um espaço do Chat pode ser compartilhado por participantes de vários fusos horários. Portanto, configurar apps de chat para transmitir mensagens em um horário conveniente para todos os usuários do espaço é essencial. Como alternativa, para alertas ou notificações importantes, você pode designar membros para espaços do Chat com um fuso horário compartilhado e criar uma lógica para determinar para qual espaço o app do Chat pode enviar mensagens.

segurança, privacidade e conformidade

Para manter a confidencialidade, é crucial implementar controles rígidos sobre o compartilhamento de informações sensíveis, como detalhes de contato do cliente, IBAN ou outros dados necessários nos espaços de chat. Além disso, quando novos usuários são adicionados aos espaços do Chat, onde os apps do Chat são adicionados, é essencial estabelecer regulamentos claros para garantir o gerenciamento adequado dessa atividade.

Você também pode usar a API Cloud Data Loss Prevention (DLP) para remover a sensibilidade do conteúdo da mensagem. Para saber como proteger dados corporativos confidenciais no SAP usando a API DLP, consulte Proteção de dados no SAP com a API DLP.

Para garantir a segurança, verifique se os administradores do Google Workspace seguem as práticas recomendadas do Google.

Cotas e limites

A API Google Chat é um serviço compartilhado, portanto, as cotas e limitações são aplicáveis. Se você exceder uma cota, vai receber uma resposta de código de status HTTP 429: Too many requests. Para mais informações sobre cotas e limites, consulte Limites de uso.

A API Google Chat não tem taxas de uso, mas é um produto do Google Workspace. O Google Workspace, um pacote de ferramentas de produtividade, inclui o Gmail, os apps Documentos, Planilhas, Apresentações, Google Chat e muito mais. A estrutura de preços é holística, o que significa que você não pode selecionar e comprar componentes individuais. Para mais informações sobre preços, consulte Preços do Google Workspace.

Opções de configuração de conexão

Para processar interações no Google Chat, esta arquitetura de referência usa o Apps Script como back-end. O código, hospedado em um projeto do Apps Script, precisa ser escrito em JavaScript.

Como alternativa, crie seu app de chat interativo usando funções do Cloud Run ou do App Engine com um endpoint HTTP. Para saber como usar as funções do Cloud Run para o Google Chat, consulte Criar um app HTTP do Google Chat. Para criar a lógica do app Chat nas funções do Cloud Run, use as bibliotecas do Cloud e escolha entre vários idiomas, como Node.js, Java ou Python. Depois de implantar a função do Cloud Run, na configuração do app Chat, em Configurações de conexão, selecione URL do endpoint HTTP e informe o URL do acionador da função do Cloud Run.

Antes de começar

Antes de implementar uma solução baseada nesta arquitetura de referência, verifique se você concluiu os seguintes pré-requisitos:

Configurar um projeto do Apps Script

Para receber e processar mensagens, implemente a lógica do app Chat em um projeto do Apps Script. O Apps Script fornece a lógica e a automação do back-end. Ele permite que você escreva código para processar eventos, como extrair mensagens do usuário, processar cliques de botão e acionar ações downstream.

Para configurar um projeto do Apps Script, siga estas etapas:

  1. Acesse o Apps Script.
  2. Crie um script para processar a lógica do app de chat para receber e processar mensagens. Para saber como criar um script, consulte o Guia de início rápido do Google Apps Script.

    Por exemplo, você precisa escrever código JavaScript para processar vários tipos de função. O exemplo de código abaixo ilustra como processar o evento OnCardClicked:

    function onCardClick(event) {
    console.info(event);
    let message = 'Button Clicked';
    // Get the function name from parameter
    var functionToCall = event.action.parameters[0].value;
    // Get the action name from parameter
    var actionTaken = event.action.parameters[1].value;
    // Call the function dynamically
    if (this[functionToCall]) {
      this[functionToCall](actionTaken);
    } else {
      // Handle invalid function name
      console.log('Function not found:', functionToCall);
    }
    return { "text": message };
    }
    

    Este exemplo de código executa as seguintes funções:

    • Lê o clique no botão: determina o botão clicado e a ação pretendida do usuário.
    • Encontra o código certo para executar: usa as informações do clique no botão para encontrar um código correspondente no app de chat.
    • Executa o código: executa o código correspondente para realizar a ação solicitada pelo usuário.
    • Processa erros: se não encontrar o código correspondente, uma mensagem de erro será mostrada.
  3. Vincule seu projeto do Google Cloud ao projeto do Apps Script. Para saber como vincular seus projetos, consulte Vincular seu projeto do Google Cloud.

  4. Crie uma implantação para o script. Para saber como implantar seu script, consulte Criar e gerenciar implantações.

  5. Anote o ID da implantação. Para saber como encontrar um ID de implantação, consulte Encontrar um ID de implantação.

Para mais informações sobre como configurar seu projeto do Apps Script, consulte o Guia de início rápido do app Chat do Google Apps Script.

Configurar o app Google Chat

Para configurar o app Google Chat, siga estas etapas:

  1. No console do Google Cloud, pesquise "API Google Chat" e clique em API Google Chat e em Gerenciar.

    Acessar a API Chat

  2. Clique em Configuração e configure o app Google Chat:

    1. Em Nome do app, insira Quickstart SAP App.
    2. No URL do avatar, digite https://developers.google.com/chat/images/quickstart-app-avatar.png.
    3. Em Descrição, insira Quickstart app for SAP.
  3. Em Configurações de conexão, selecione Apps Script.

  4. Insira o ID de implantação do script que você criou na seção Configurar um projeto do Apps Script.

  5. Clique em Salvar.

Configurar a autenticação de apps do Google Chat

É possível fazer a autenticação nos apps do Google Chat de duas maneiras: como um app ou como um usuário.

Quando o app precisa realizar tarefas automatizadas, como enviar notificações do sistema sem interação direta do usuário, ele usa uma conta de serviço. Se você quiser que o app aja em nome de um usuário, como enviar uma mensagem como essa pessoa específica, será necessário fazer a autenticação do usuário. Essa abordagem de autenticação dupla oferece flexibilidade e controle sobre como o app interage com o Google Chat.

O ABAP SDK for Google Cloud permite configurar os dois tipos de autenticação. Para informações sobre como configurar a autenticação para apps do Google Chat, consulte:

Para saber mais sobre os métodos da API Google Chat e os escopos de autorização com suporte, consulte Autenticar e autorizar apps do Chat e solicitações da API Google Chat.

A arquitetura de referência explicada neste documento usa a autenticação como um app de chat e usa tokens de acesso para autenticação.

Para configurar a autenticação como um app de chat, siga estas etapas:

  1. No console do Google Cloud, configure a tela de consentimento OAuth e escolha os escopos.
  2. No console do Google Cloud, crie uma conta de serviço.
  3. Opcional: atribua papéis do IAM à conta de serviço para conceder acesso aos recursos do projeto do Google Cloud. Para mais informações, consulte Gerenciar o acesso a contas de serviço.
  4. No sistema SAP, configure uma chave de cliente com os seguintes detalhes:

    Campo Descrição
    Nome da chave do Google Cloud Especifique um nome para a configuração da chave do cliente. Por exemplo, ABAP_SDK_CHAT
    Nome da conta de serviço do Google Cloud

    Especifique o nome da conta de serviço a que você concedeu permissões para acessar a API Google Chat. Por exemplo, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

    Escopo do Google Cloud Especifique o escopo de acesso à API: https://www.googleapis.com/auth/chat.bot.
    Identificador de projeto do Google Cloud Especifique o ID do projeto do Google Cloud que contém a API Google Chat ativada.
    Nome do comando Deixe esse campo em branco.
    Classe de autorização

    Especifique a classe de autorização, conforme apropriado:

    • Para autenticação usando tokens de acesso: /GOOG/CL_AUTH_GOOGLE
    • Para autenticação usando JWT: /GOOG/CL_AUTH_JWT
    Armazenamento de tokens em cache

    A sinalização que determina se os tokens de acesso recuperados do Google Cloud são armazenados em cache.

    Recomendamos que você ative o armazenamento em cache do token depois de concluir a configuração e o teste da sua conexão com o Google Cloud. Para mais informações sobre o armazenamento do token em cache, consulte Ativar o armazenamento do token em cache.

    Token de atualização em segundos O tempo (em segundos) que um token de acesso expira e precisa ser atualizado. O valor padrão é 3500.
    Parâmetro de autorização 1 Deixe esse campo em branco.
    Parâmetro de autorização 2 Deixe esse campo em branco.

Para informações detalhadas sobre as etapas de configuração da autenticação, consulte Autenticar usando tokens de acesso ou Autenticar usando tokens JSON da Web.

Adicionar o app do Google Chat a espaços

  1. Abra o app Google Chat ou o app Gmail.
  2. Adicione o app do Chat a um espaço do Chat. Para saber como adicionar apps a um espaço do Chat, consulte Adicionar apps a conversas ou espaços.

Criar cards interativos para ações do usuário

Os cards oferecem uma maneira visualmente atraente e interativa de apresentar informações, melhorando a experiência geral do usuário. Eles podem incluir elementos como títulos, imagens, botões e muito mais, permitindo que os usuários interajam com o conteúdo diretamente na interface do Chat. Por exemplo, um card de fluxo de trabalho de pedido de compra pode incluir as seguintes informações:

  • Número da ordem de compra
  • Data do documento
  • Tipo de documento
  • Fornecedor
  • Tipo de frete
  • Link para abrir a tela de ordens de compra no app SAP Fiori e um botão para aprovar a ordem de compra

Para projetar cards interativos usando o SDK ABAP para Google Cloud, use a interface personalizada ZGOOG_IF_CHAT_CARDS_V2 do repositório do GitHub. Essa interface personalizada contém os tipos ABAP necessários para criar cards. Você pode criar cards como o exemplo de fluxo de trabalho de pedidos a seguir:

Card de apps de chat

Para mais informações sobre como projetar mensagens de cards, consulte Criar cards para apps do Google Chat.

Para enviar mensagens de um sistema SAP para um espaço do Chat usando o SDK do ABAP para Google Cloud, use o método CREATE_MESSAGES da classe /GOOG/CL_CHAT_V1.

O exemplo de código abaixo ilustra como enviar uma mensagem de cartão de um sistema SAP para um espaço do Chat:

REPORT zsend_interactive_card

DATA lv_client_key TYPE /goog/keyname.
DATA ls_input      TYPE /goog/cl_chat_v1=>ty_072.
DATA lv_space_id   TYPE string.
DATA ls_widget     TYPE zgoog_if_chat_cards_v2=>ty_widget.
DATA ls_section    TYPE zgoog_if_chat_cards_v2=>ty_sections.
DATA ls_card_v2    TYPE zgoog_if_chat_cards_v2=>ty_cards_v2.
DATA ls_card       TYPE /goog/cl_chat_v1=>ty_012.
DATA ls_rb         TYPE zgoog_if_chat_cards_v2=>ty_selection_item.
DATA ls_button     TYPE zgoog_if_chat_cards_v2=>ty_button.
DATA ls_param      TYPE zgoog_if_chat_cards_v2=>ty_action_parameters.

lv_client_key = 'CLIENT_KEY'.
lv_space_id   = 'SPACE_ID'.

TRY.

    DATA(lo_chat) = NEW /goog/cl_chat_v1( iv_key_name = lv_client_key ).
  CATCH /goog/cx_sdk INTO DATA(lo_excp).
    " Handle exception here
ENDTRY.

"Building the Cards Structure
ls_card_v2-header-title     = 'Purchase Order Workflow - Level 2 Approval Alert!'.
ls_card_v2-header-subtitle  = 'PO Number: 8700000034'.
ls_card_v2-header-image_url = 'https://developers.google.com/chat/images/quickstart-app-avatar.png'.
ls_section-header = 'Purchase Order Details'.

ls_widget-decorated_text-icon-known_icon = 'INVITE'.
ls_widget-decorated_text-text = 'Document Date: 2024-10-23'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.

ls_widget-decorated_text-icon-material_icon-name = 'category'.
ls_widget-decorated_text-text = 'Document Type: Standard PO'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.

ls_widget-decorated_text-icon-material_icon-name = 'conveyor_belt'.
ls_widget-decorated_text-text = 'Supplier: 5300000061 - Cymbal Industries'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.

ls_widget-decorated_text-icon-known_icon = 'TRAIN'.
ls_widget-decorated_text-text = 'Shipping Type: RAIL'.
APPEND ls_widget TO ls_section-widgets.
CLEAR ls_widget.

ls_button-text = 'Display Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '1'.
ls_button-color-green = '0'.
ls_button-color-red = '0'.
ls_button-on_click-open_link-url = "Add url for fiori App
APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.

ls_button-text = 'Approve Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '0.2'.
ls_button-color-green = '0.4'.
ls_button-color-red = '0'.
ls_button-on_click-action-function = 'onCardClick'.
ls_param-key = 'functionToCall'.
ls_param-value = 'sendToPubSub'.  "Function name on Apps Script
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
ls_param-key = 'action'.
ls_param-value = 'approved'.    "Indicate approval action has taken place
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.

ls_button-text = 'Reject Purchase Order'.
ls_button-color-alpha = '1'.
ls_button-color-blue = '0'.
ls_button-color-green = '0'.
ls_button-color-red = '0.7'.
ls_button-on_click-action-function = 'onCardClick'.
ls_param-key = 'functionToCall'.
ls_param-value = 'sendToPubSub'.  "Function name on Apps Script
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.
ls_param-key = 'action'.
ls_param-value = 'rejected'.    "Indicate reject action has taken place
APPEND ls_param TO ls_button-on_click-action-parameters.
CLEAR ls_param.

APPEND ls_button TO ls_widget-button_list-buttons.
CLEAR ls_button.

APPEND ls_widget TO ls_section-widgets.

APPEND ls_section TO ls_card_v2-sections.
ls_card-card = REF #( ls_card_v2 ).
APPEND ls_card TO ls_input-cards_v2.

TRY.
  mo_chat_client->create_messages( EXPORTING iv_p_spaces_id = CONV #( p_spc_id )
                                             is_input       = ls_input
                                   IMPORTING es_output      = DATA(ls_output)
                                             ev_ret_code    = DATA(lv_ret_code)
                                             ev_err_text    = DATA(lv_err_text)
                                             es_err_resp    = DATA(ls_err_resp) ).
   CATCH /goog/cx_sdk INTO mo_excp.
       "Handle exception here
ENDTRY.

IF mo_chat_client->is_error( lv_ret_code ).
      "Handle error here
ELSE.
      "Handle success here
ENDIF.

Substitua:

  • CLIENT_KEY: a chave do cliente configurada para autenticação.
  • SPACE_ID: o ID de identificador exclusivo do espaço do Chat. Para encontrar o ID do espaço do Chat, abra o espaço do Google Chat no navegador da Web. Você pode encontrar o ID no URL, conforme ilustrado na captura de tela a seguir:

    ID do espaço dos apps de chat

Alternativa de design

Para seu sistema SAP S/4 HANA ou ECC hospedado no Google Cloud, considere a seguinte arquitetura de referência alternativa para projetar seus apps de chat interativos:

Opção de design alternativo para apps de chat interativo para SAP

Esta arquitetura de referência é baseada nas seguintes considerações:

  1. Os processos ou transações de origem do SAP responsáveis por enviar mensagens aos usuários.
  2. O SDK ABAP for Google Cloud envia mensagens chamando o método da API Google Chat: spaces.messages.create.
  3. A API Google Chat envia as mensagens para o espaço do Chat correspondente.
  4. Os usuários do espaço recebem notificações e depois respondem para realizar uma ação, como clicar em um botão.
  5. A ação do usuário invoca o projeto do Apps Script para processar o evento correspondente.
  6. O projeto do Apps Script invoca a API Pub/Sub para publicar as mensagens.
  7. A função do Cloud Run processa as mensagens e publica eventos usando o acionador do Eventarc.
  8. A função do Cloud Run chama o nó SICF por meio de um conector de VPC sem servidor.
  9. O sistema SAP processa o evento e aciona ações posteriores com base na lógica de negócios definida.

Essa arquitetura de referência exige a implementação da lógica em três camadas:

  • A camada ABAP para criar uma mensagem de chat, processar o evento e os processos de negócios subsequentes.
  • A camada do Apps Script para processar o evento no espaço do Chat e publicar mensagens em um tópico do Pub/Sub.
  • As funções do Cloud Run recebem mensagens da assinatura do Pub/Sub. Se preferir, você pode formatar as mensagens e chamar o serviço SICF hospedado no seu sistema SAP pelo conector da VPC.

A seguir

Colaboradores

Autor: Satish Inamdar | Engenheiro de aplicativos SAP

Outro colaborador: Vikash Kumar | Redator técnico