Apps do Google Chat para SAP

Este documento descreve uma arquitetura de referência para criar apps do Google Chat para SAP usando o ABAP SDK for Google Cloud no local ou em qualquer edição na nuvem. Com os apps do Chat, você pode transferir seus processos e fluxos de trabalho do SAP para o Google Chat, permitindo que os usuários recebam notificações, como relatórios de alarme, alertas de fluxo de trabalho, alertas do sistema e atualizações de conclusão de trabalho 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 a implementação de apps de chat unidirecionais para SAP que podem enviar mensagens para um espaço do Chat de um sistema SAP ERP:

Apps de chat 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 do SAP que precise enviar notificações ao usuário. É 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.

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.

Casos de uso

Os apps de chat unidirecionais não são interativos e permitem que você envie mensagens aos usuários do espaço do Chat, mas eles não podem responder aos apps. O diagrama a seguir ilustra o padrão de chat para apps de chat unidirecional:

Padrão de apps de chat

A lista a seguir mostra alguns casos de uso do Google Chat para SAP:

  • Notificação de evento do fluxo de trabalho: é possível enviar mensagens para os apps do Chat em diferentes etapas envolvidas no processo do fluxo de trabalho para alertar um conjunto específico de usuários presentes em um espaço do Chat. Por exemplo, uma ordem de compra é aprovada ou rejeitada por um usuário.

  • 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 informações sobre 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.

Alternativa de design

Embora este documento se concentre na edição no local ou em qualquer nuvem do ABAP SDK for Google Cloud, você pode conseguir resultados semelhantes usando a edição SAP BTP do ABAP SDK for Google Cloud. É possível adaptar os recursos fornecidos para criar soluções semelhantes no seu ambiente SAP BTP.

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 o app Google Chat

  1. 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. Desative os recursos interativos.

  4. 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 do 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 à sua 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 da 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 mais informações sobre as etapas, consulte Adicionar apps a conversas ou espaços.

Enviar uma mensagem do seu ambiente ABAP

O Google Chat e os apps de chat usam um formato de mensagem baseado em JSON, com cada mensagem contendo detalhes como ID do usuário, estilo e conteúdo. Os apps de chat podem enviar os seguintes tipos de mensagens:

  • Mensagens de texto: contêm conteúdo de texto simples com formatação limitada.
  • Mensagens de card: definem o formato, o conteúdo e o comportamento dos cards que serão exibidos em um espaço. Por exemplo, uma mensagem de card pode incluir um botão com um link que abre uma caixa de diálogo para coletar informações de um usuário.

Para mais informações sobre as mensagens do Google Chat, consulte Visão geral das mensagens 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.

Enviar uma mensagem de texto

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

REPORT zsend_text_message.

DATA lv_client_key TYPE /goog/keyname.
DATA ls_input      TYPE /goog/cl_chat_v1=>ty_072.
DATA lv_space_id   TYPE string.

lv_client_key = 'CLIENT_KEY'.
ls_input-text = 'TEXT_MESSAGE'.
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.

TRY.
    lo_chat->create_messages( EXPORTING iv_p_spaces_id = lv_space_id
                                        is_input       = ls_input
                              IMPORTING ev_ret_code    = DATA(return_code)
                                        ev_err_text    = DATA(error_text)
                                        es_err_resp    = DATA(err_resp) ).
  CATCH /goog/cx_sdk INTO lo_excp.
    " Handle exception here
ENDTRY.

IF /goog/cl_chat_v1=>is_success( iv_code = return_code ) = abap_true.
  " Handle success here
ELSE.
  " Handle error here
ENDIF.

Substitua:

  • CLIENT_KEY: a chave do cliente configurada para autenticação.
  • TEXT_MESSAGE: uma mensagem de texto a ser enviada para o espaço do Chat.
  • 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

Enviar uma mensagem de cartão

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

Para o desenvolvimento de cards com o SDK ABAP for 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:

ID do espaço dos apps de chat

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

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_card_message.

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 Card Structure

" Set the header
ls_card_v2-header = VALUE zgoog_if_chat_cards_v2=>ty_header(
                              title     = 'Purchase Order Workflow - Level 2 Approval Alert!'
                              subtitle  = 'PO Number: 8700000034'
                              image_url = 'https://developers.google.com/chat/images/quickstart-app-avatar.png' ).

" Create sections
ls_section-header = 'Purchase Order Details'.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
                                     icon = VALUE zgoog_if_chat_cards_v2=>ty_icon( known_icon = 'INVITE' )
                                     text = 'Document Date: 2024-10-23' ).
ls_section-widgets = VALUE #( ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
    icon = VALUE zgoog_if_chat_cards_v2=>ty_icon(
                     material_icon = VALUE zgoog_if_chat_cards_v2=>ty_material_icon( name = 'category' ) )
    text = 'Document Type: Standard PO'  ).

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
    icon = VALUE zgoog_if_chat_cards_v2=>ty_icon(
                     material_icon = VALUE zgoog_if_chat_cards_v2=>ty_material_icon( name = 'conveyor_belt' ) )
    text = 'Supplier: 5300000061 - Cymbal Industries'  ).

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text(
                                     icon = VALUE zgoog_if_chat_cards_v2=>ty_icon( known_icon = 'TRAIN' )
                                     text = 'Shipping Type: RAIL' ).
ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_widget-decorated_text = VALUE zgoog_if_chat_cards_v2=>ty_decorated_text( text = 'Approved By: User-Name' ).
ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).
CLEAR ls_widget.

ls_section-widgets = VALUE #( BASE ls_section-widgets
                              ( ls_widget ) ).

ls_card_v2-sections = VALUE #( ( ls_section ) ).

ls_card-card = REF #( ls_card_v2 ).
ls_input-cards_v2 = VALUE #( (  ls_card ) ).

TRY.
    lo_chat->create_messages( EXPORTING iv_p_spaces_id = lv_space_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 lo_excp.
    " Handle exception here
ENDTRY.

IF lo_chat->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

A seguir

Colaboradores

Autor: Satish Inamdar | Engenheiro de aplicativos SAP

Outro colaborador: Vikash Kumar | Redator técnico