/
Enviando notificações aos usuários de aplicativos externos

Enviando notificações aos usuários de aplicativos externos

Este artigo descreve como usar a API de notificação para enviar notificações dos aplicativos externos para os usuários da agente virtual. É útil enviar notificações aos usuários quando ocorre uma interrupção, em comunicados da empresa, quando uma solicitação ou um serviço é concluído, e assim por diante.

Este artigo aborda as seguintes áreas:


Observação

A partir desta release, oferecemos suporte apenas ao método POST para notificar o usuário. Esse método insere um registro na tabela especificada.

Notificando usuários

Vamos usar um exemplo em que a API de notificação será útil. Um usuário solicita que o bot reinicialize um servidor. A habilidade chama um aplicativo externo para atender à solicitação. O sistema externo conclui a reinicialização do servidor. Usando a API de notificação, o aplicativo externo informa o usuário por meio do bate-papo que a solicitação foi concluída.  Nesse caso, a API seguinte precisa ser chamada, fornecendo os cabeçalhos, o URL e os parâmetros obrigatórios para receber a resposta.

Formato do URL

Especifique o URL da API fornecido abaixo:

NomeValorExemplo de terminal
URL padrão{{ENDPOINT}}/api/v1/bulk/notificationhttps://luma2.serviceaide.com/gateway/api/v1/bulk/notification

Cabeçalhos

Veja a seguir os cabeçalhos necessários. 

NomeDescrição
AutorizaçãoInclua a chave de acesso à API (API_TOKEN) fornecida aos aplicativos externos.
ID externa do tenantA ID externa do tenant da Luma. 
Content-TypeEspecifique em que formato de dados deseja que a resposta seja fornecida; por exemplo: carga XML, JSON, TEXT.

Parâmetros da solicitação (dados)

A seção corpo/solicitação da API inclui o seguinte:

NomeDescrição
Destinatários

Forneça os detalhes dos destinatários que receberão as notificações.  Isso inclui: 

  • CCA (Contact Channel Authentication - Autenticação do Canal de Contato), que inclui channel-ID e channelscope-ID.
  • Usuários, lista de usuários a serem notificados.
  • Grupos, informações sobre o grupo.
  • ChannelID (opcional, use o canal padrão): as informações do canal em que o usuário deve ser notificado.
  • BotExternalId (opcional, use o bot padrão): a ID da agente virtual a ser notificada.
Tipo de respostaEspecifique o formato em que deseja receber a resposta. No momento, há suporte apenas para o formato JSON. 
MensagemEspecifique a mensagem que você deseja que a Luma envie aos usuários. Por exemplo, "Reiniciei o servidor. Caso encontre algum problema, crie um ticket de suporte"


Usar os elementos acima, incluindo o URL, os parâmetros e os cabeçalhos, permite criar a solicitação para notificar os usuários. Neste exemplo, usaremos uma solicitação JSON, conforme especificado a seguir. 

Bloco de código de solicitação
curl -X POST 'http://localhost:90/gateway/api/v1/bulk/notification' \
--header 'Content-Type: application/json' \
--header 'Luma-tenant-externalId: ' \
--header 'Luma-api-access-key: ' \
--data-raw '{      "agentChannels": [
       {
          "agentExternalId": null,
          "channelTypes": [
          "WEB_WIDGET",
          "TEST_WIDGET"
        ]
     }
],
       "configuration": {
             "id": null,
              "name": "ISM Outage",
              "recipient": {
              "users": [
                {
                   "id": -3,
                    "userName": null
                  },
               {
                    "id": null,
                     "userName": "admin@dev.com"
               },
              {
                    "id": null,
                     "userName": "admin@betatwothree.com"
              }
          ],
     "groups": [
        {
           "id": 1,
            "name": null
          },
        {
          "id": null,
          "name": "Administrators"
         }
      ],
     "contactChannels": [
         {
           "id": null,
            "channelScopeId": "8560f2ef-3dea-4701-ae4a-a66101784acb",
             "channelScopeContactId": "89d83c3e-a14a-11e9-870d-a44cc82a824c",
             "agentChannel": {
                 "id": null,
                  "channelType": "TEST_WIDGET"
               }
         }
       ]
     },
   "message": "[   {           \"format\": \"CAROUSEL\", \"content\": {\"cards\": [{\"title\": \"Create Support Issue : \", \"buttons\": [{\"type\": \"postBack\", \"title\": \"Create Ticket in ISM\", \"value\": \"val1\"}], \"subtitle\": null}], \"title\": \"Hey, I have rebooted the server, If you have an issue please create a support ticket\"}, \"sendButtonTextAsPayload\": true}]"
    }
}

No exemplo acima, o campo message é usado para criar a mensagem de notificação a ser enviada ao usuário. O modelo JSON no campo cria uma mensagem bem formatada com cabeçalhos, subtítulos, mensagem e botões acionáveis.

Para enviar uma mensagem de texto simples, você pode usar o campo textmessage em vez do campo message. O campo textmessage pode ser usado para enviar uma mensagem de texto simples ao usuário, sem nenhuma formatação especial ou ação vinculada. No exemplo, vamos adicionar uma mensagem de texto simples. 

Bloco de código de solicitação
curl -X POST 'http://localhost:90/gateway/api/v1/bulk/notification' \
--header 'Content-Type: application/json' \
--header 'Luma-tenant-externalId: ' \
--header 'Luma-api-access-key: ' \
--data-raw '{      "agentChannels": [
       {
          "agentExternalId": null,
          "channelTypes": [
          "WEB_WIDGET",
          "TEST_WIDGET"
        ]
     }
],
       "configuration": {
             "id": null,
              "name": "ISM Outage",
              "recipient": {
              "users": [
                {
                   "id": -3,
                    "userName": null
                  },
               {
                    "id": null,
                     "userName": "admin@dev.com"
               },
              {
                    "id": null,
                     "userName": "admin@betatwothree.com"
              }
          ],
     "groups": [
        {
           "id": 1,
            "name": null
          },
        {
          "id": null,
          "name": "Administrators"
         }
      ],
     "contactChannels": [
         {
           "id": null,
            "channelScopeId": "8560f2ef-3dea-4701-ae4a-a66101784acb",
             "channelScopeContactId": "89d83c3e-a14a-11e9-870d-a44cc82a824c",
             "agentChannel": {
                 "id": null,
                  "channelType": "TEST_WIDGET"
               }
         }
       ]
     },
   "message": null,
   "textMessage": "You server reboot is complete. We recommend you to test your applications and contact the support team in case of any issue"
    }
}

Resposta

Depois que a solicitação POST é executada, a seguinte resposta é recebida no formato JSON. 

Bloco de código de resposta
{
    "status": "Success",
    "statusCode": 0,
    "statusLine": null,
    "errors": null,
    "resultData": "39136311-ca49-43fd-990a-9d998858761f",
    "warnings": null,
    "timestamp": 1577094803197,
    "reasonPhrase": null,
    "metaInfo": null
}
  • O carimbo de data e hora é a data e a hora da mensagem exibida no formato UNIX.
  • O status é o resultado de sua solicitação. Para obter mais detalhes, consulte Códigos de status.
  • Erro mostra se há algum erro que possa ter ocorrido ao exibir a mensagem.

Códigos de status

Os códigos de status transmitem os resultados da sua solicitação. O código de status a seguir se aplica à API Post. 

NomeDescrição
200Isso indica que a solicitação foi concluída com êxito. No entanto, se nenhum resultado for retornado, isso significa que o corpo da resposta contém apenas uma matriz de resultados vazia.
204Ele indica que a API REST se recusa a enviar de volta qualquer mensagem de status no corpo da mensagem de resposta.
400Isso indica que a solicitação pode conter erros, como sintaxe de solicitação malformada, parâmetros de mensagem de solicitação inválidos ou roteamento de solicitação enganosa, e assim por diante. Identifique o erro e reenvie a solicitação com a modificação necessária.

Se a solicitação for bem-sucedida com o código de status 200, a Luma notificará os usuários sobre a interrupção; Caso contrário, a Luma solicita que os usuários verifiquem os erros na solicitação e tentem novamente após corrigir os erros.

Disparando API de notificação a partir de uma habilidade

Uma habilidade pode chamar a API de notificação e a resposta da API pode ser acessada usando @resp.data.

Quando você usa a API de notificação como parte do fluxo de conversa na habilidade, o desenvolvedor ou administrador pode verificar ou depurar a resposta da API de notificação no utilitário de depuração do widget de teste, ou pode acessar os dados nas seções Histórico da conversa da agente virtualPara obter mais informações sobre como depurar uma habilidade ou acessar o histórico da conversa, consulte estes artigos Depurar habilidadesHistórico da conversa.

Exibir notificação da Luma

Assim que a solicitação da API de notificação for bem-sucedida, a mensagem será entregue a todos os usuários registrados que são especificados como parte da solicitação da API de notificação.

Related content