Este documento refere-se ao uso API Nerdgraph para a nova plataforma de notificação usando destinos e mensagens de notificação. As mensagens de notificação também são chamadas de canais, que são diferentes do legado canal de notificação.
A consulta channels permite paginar todos os seus canais por conta. Também permite algumas funcionalidades de filtragem.
Aqui está um exemplo:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
channels{
entities{
id
name
}
error{
details
}
}
}
}
}
}
Para paginar seus canais, você deve solicitar o campo nextCursor na sua consulta inicial.
Com a paginação do cursor, você continua fazendo uma solicitação por meio do conjunto de resultados até que nextCursor retornado da resposta retorne vazio. Isso significa que você chegou ao fim dos seus resultados.
Aqui está um exemplo:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
channels(cursor:""){
nextCursor
entities{
id
name
}
totalCount
}
}
}
}
}
O código acima retorna um conjunto de resultados como este:
A API permite a consulta de canais por nome. O filtro name retorna correspondências exatas e parciais. Não faz distinção entre maiúsculas e minúsculas. Isso retornará apenas as informações dos canais que correspondem ao nome fornecido.
Neste exemplo, queremos encontrar canais com "DevOps" no nome:
A API permite consultar por tipo de canal. A consulta a seguir retornará todos os canais de e-mail da conta escolhida:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
channels(filters:{type:EMAIL}){
entities{
id
name
}
}
}
}
}
}
Crie um canal
Para criar um canal, devem ser fornecidas diferentes entradas para cada tipo de canal. Cada canal está conectado a um destino. Para obter informações sobre destinos, consulte o tutorial sobre destinos do NerdGraph.
As práticas recomendadas são usar o endpoint channelSchema para ver quais campos devem ser enviados em properties assim:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
channelSchema(
channelType:CHANNEL_TYPE
destinationId:YOUR_DESTINATION_ID
product:YOUR_PRODUCT
constraints:[]
){
schema{
fields{
mandatory
label
key
component
}
}
result
}
}
}
}
}
Jira é um sistema de tickets configurável e, portanto, não existe uma maneira estática de criar esse canal.
Existem dois campos estáticos - project e issuetype.
Busque as sugestões project e use um dos valores como restrição para issuetype, conforme mostrado aqui:
Se você já sabe o ID da sua equipe e o ID do canal, pode pular as etapas 1 e 2 e ir diretamente para a etapa 3 para configurar o canal de notificação.
Esta consulta descobre quais instâncias do Microsoft Teams estão acessíveis a partir do seu destino. Você fornece o destinationId e especifica que deseja os IDs das equipes (via key: "teamId"), e a API retorna uma lista de equipes disponíveis com seus nomes e IDs:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
suggestions(
destinationId:YOUR_DESTINATION_ID
key:"teamId"
channelType:MICROSOFT_TEAMS
constraints:[]
){
entities{
displayValue
value
}
errors{
description
details
type
}
}
}
}
}
}
A resposta conterá uma lista de equipes com seus nomes de exibição e IDs de equipe exclusivos:
{
"data":{
"actor":{
"account":{
"aiNotifications":{
"suggestions":{
"entities":[
{
"displayValue":"Engineering Team",
"value":"389e7f6c-xxxx-47f0-aa77-xxxxxxxxxxxx"
},
{
"displayValue":"DevOps Team",
"value":"834dc358-xxxx-4445-9938-xxxxxxxxxxxx"
}
],
"errors":[]
}
}
}
}
}
}
Dica
Se você não encontrar a equipe que procura nos resultados, pode usar o parâmetro filter para pesquisá-la pelo nome:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
suggestions(
destinationId:YOUR_DESTINATION_ID
key:"teamId"
channelType:MICROSOFT_TEAMS
constraints:[]
filter:{type:CONTAINS,value:"Engineering"}
){
entities{
displayValue
value
}
}
}
}
}
}
Etapa 2: Obtenha os IDs de canal disponíveis para uma equipe
Após obter o ID da equipe na Etapa 1, esta consulta descobre quais canais existem dentro dessa equipe específica. Você fornece destinationId e teamId (como uma restrição), e a API retorna uma lista de canais disponíveis com seus nomes e IDs:
{
actor{
account(id:YOUR_ACCOUNT_ID){
aiNotifications{
suggestions(
destinationId:YOUR_DESTINATION_ID
key:"channelId"
channelType:MICROSOFT_TEAMS
constraints:[{key:"teamId",value:"YOUR_TEAM_ID"}]
){
entities{
displayValue
value
}
errors{
description
details
type
}
}
}
}
}
}
A resposta conterá uma lista de canais dentro da equipe especificada:
Semelhante aos IDs de equipe, você pode filtrar canais por nome usando o parâmetro filter para pesquisar dentro da equipe especificada.
Etapa 3: Configure o canal de notificação do New Relic
Após obter o ID da equipe e o ID do canal, configure o canal de notificação do New Relic para enviar alertas para o seu canal do Microsoft Teams.
Importante
Essa mutação cria um objeto de canal de notificação do New Relic que se conecta a um canal existente do Microsoft Teams. O canal do Teams já deve existir no seu espaço de trabalho do Microsoft Teams. Esta API não cria novas equipes ou canais dentro do Microsoft Teams em si; ela apenas configura New Relic para enviar notificações aos seus canais existentes do Teams.
mutation{
aiNotificationsCreateChannel(
accountId:YOUR_ACCOUNT_ID
channel:{
type:MICROSOFT_TEAMS
name:"Channel Name"
destinationId:YOUR_DESTINATION_ID
product:YOUR_PRODUCT
properties:[
{key:"teamId",value:YOUR_TEAM_ID}
{key:"channelId",value:YOUR_CHANNEL_ID}
]
}
){
channel{
id
name
}
}
}
O parâmetro product especifica o produto New Relic que gera a notificação. Os valores válidos incluem:
IINT - inteligência aplicada (Inteligência de Incidentes)
ALERTS
ERROR_TRACKING
APM - monitoramento do desempenho de aplicativos (APM)
CHANGE_TRACKING
SECURITY
PD - Detecção proativa
Outros valores: CSSP, DISCUSSIONS, NTFC, SHARING
A propriedade payload é a carga que será enviada na notificação. Ele usa a sintaxe do guidão para inserir dinamicamente informações da solicitação.
O eventSource deve ser o URL completo de uma fonte de evento existente. O eventContent é a carga que será enviada no corpo da notificação, conforme mostrado aqui:
PagerDuty possui dois tipos de integração, nível de serviço e nível de conta. Para obter mais informações, consulte a documentação de integração do PagerDuty.
Ao atualizar um canal, observe que você não precisa fornecer todos os atributos do canal. Por exemplo, se você deseja atualizar apenas o nome, esse é o único atributo que você precisa atualizar, conforme mostrado aqui:
mutation{
aiNotificationsUpdateChannel(
accountId:YOUR_ACCOUNT_ID
channelId:YOUR_CHANNEL_ID
channel:{name:"Updated channel Name"}
){
channel{
id
name
}
}
}
Testando um canal
Você pode testar canais por meio da API NerdGraph. Isso pode ser feito antes ou depois da criação do canal.