Enviar notificações do FyneDesk para o Microsoft Teams

Receba uma mensagem no seu canal do Teams sempre que um ticket for criado, comentado ou mudar de status. O FyneDesk envia o evento para um webhook, e um curto fluxo do Power Automate o transforma em uma mensagem do Teams. Siga os passos abaixo na ordem — leva cerca de dez minutos.

Testou e viu "enviado com sucesso", mas nada no Teams? Isso é esperado — e você está quase lá. O "sucesso" significa apenas que a Microsoft recebeu os dados; ele não publica nada sozinho. Adicione a única ação de publicação na Parte 3 abaixo e as mensagens começarão a aparecer.

Como funciona

O FyneDesk envia cada evento (novo ticket, novo comentário e assim por diante) como um pequeno pacote de dados JSON para a URL que você fornecer. O Microsoft Teams não exibe esse pacote sozinho — o seu fluxo do Power Automate precisa pegar os dados e publicá-los como uma mensagem.

É por isso que um teste pode dizer "enviado com sucesso" enquanto nada aparece no Teams: o Power Automate responde 202 Accepted no instante em que recebe uma solicitação, então "sucesso" significa apenas que a Microsoft recebeu os dados. Não diz nada sobre se uma mensagem foi publicada. Assim que você adicionar a etapa de publicação na Parte 3, as mensagens aparecerão.

Antes de começar

  • Um team e um canal do Microsoft Teams onde você quer as notificações, e uma conta do Power Automate com uma licença que possa publicar no Teams.
  • Acesso de administrador aos webhooks do FyneDesk, em Admin Settings → Advanced → Webhooks (também acessível por Settings → Connections → Webhooks).
  • Cerca de dez minutos. Você vai criar um fluxo a partir de um template pronto, colar a URL dele no FyneDesk e depois adicionar uma etapa que publica a mensagem.
Já colou uma URL do Power Automate no FyneDesk? Então você já fez a parte difícil. Pule para a Parte 3 — você só precisa adicionar a etapa de publicação.

Configurar

Este é exatamente o caminho que a nossa equipe usa, de ponta a ponta. Ele produz uma mensagem de texto simples e legível. (Quer que a mensagem nomeie cada tipo de evento, ou prefere um cartão formatado? Veja as opções avançadas abaixo.)

Parte 1 — Crie o fluxo a partir de um template

Acesse make.powerautomate.com e faça login. No menu à esquerda, escolha Templates, digite webhook na caixa de pesquisa e abra Send webhook alerts to a channel — o simples, não as versões "(TEST)". Clique em Continue (faça login novamente se for solicitado).

A tela de Templates do Power Automate com webhook digitado na caixa de pesquisa. Quatro templates são exibidos; o primeiro, Send webhook alerts to a channel, é o que deve ser aberto.

O template mostra que vai conectar Teams → Microsoft Teams e gerar uma URL de webhook. Antes de clicar em Create, defina o Team e o Channel em que você quer que as notificações sejam publicadas — é fácil deixar passar, e faz diferença.

A tela do template Send webhook alerts to a channel, mostrando que vai conectar o Teams ao Microsoft Teams, com a conta do Microsoft Teams conectada e um botão Continue. A configuração do template com uma lista suspensa Team do Microsoft Teams definida para um team e uma lista suspensa Channel do Microsoft Teams, acima de um botão Create. O valor do canal está oculto.

Escolha o seu Team e o canal, depois clique em Create. Quando o fluxo abrir, clique em Edit para começar a editá-lo.

Parte 2 — Forneça a URL ao FyneDesk

No fluxo, clique na primeira caixa, "When a Teams webhook request is received," e copie a HTTP URL que ela mostra.

O gatilho When a Teams webhook request is received expandido, mostrando uma lista suspensa Who can trigger the flow definida como Anyone e um campo HTTP URL com um botão de copiar. O valor da URL está oculto.

Depois, no FyneDesk, vá em Admin Settings → Advanced → Webhooks e clique em Add webhook:

  • Dê um nome que você reconheça depois, por exemplo, Microsoft Teams.
  • Cole a URL do Power Automate em Endpoint URL (deve ser um link HTTPS).
  • Deixe ticket.created marcado — é tudo o que você precisa para começar. (Você pode adicionar mais eventos depois.)
  • Clique em Save.
A tela Add webhook do FyneDesk com um campo Name definido como Microsoft Teams, um campo Endpoint URL para o link do Power Automate, uma lista de eventos a enviar com ticket.created marcado e um botão Save.

Parte 3 — Diga ao fluxo o que publicar

Esta é a etapa fácil de deixar passar — e é exatamente por isso que um teste pode dizer "enviado" enquanto nada aparece no Teams.

1. Exclua as duas etapas pré-criadas. O template adiciona uma ação Initialize variable (às vezes duas) e uma condição Attachments is null. Exclua as duas — clique nos de cada etapa e depois em Delete. Deixá-las é o que dispara o erro "AdaptiveCard".

O editor de fluxo mostrando o gatilho When a Teams webhook request is received seguido por duas etapas Initialize variable e uma condição Attachments is null — as etapas que devem ser excluídas.

2. Adicione a ação de publicação. Clique no + abaixo do gatilho e escolha Post message in a chat or channel (o conector do Microsoft Teams). Defina as listas suspensas:

CampoDefina como
Post asFlow bot
Post inChannel
TeamO seu team
ChannelO canal em que você quer as notificações

3. Monte a mensagem. Clique dentro da caixa Message, clique no botão azul fx (Insert expression), cole a expressão abaixo exatamente e depois clique em Add.

concat('New ticket ', triggerBody()?['data']?['ticket_number'], ' - ', triggerBody()?['data']?['title'], ' | Status: ', triggerBody()?['data']?['status'], ' | Priority: ', triggerBody()?['data']?['priority'], ' | https://fynedesk.ai/tickets/', string(triggerBody()?['data']?['id']))
A ação Post message in a chat or channel com Post as definido como Flow bot, Post in definido como Channel, um Team e um Channel selecionados, e a caixa Message contendo uma única expressão concat inserida pelo editor de expressões fx mostrado à direita.

4. Salve. Clique em Save (canto superior direito). Você deve ver "Your flow is ready to go."

Dois detalhes que fazem perder horas
  • Sempre insira a expressão com o botão fx — nunca a digite como texto simples e nunca a envolva em @{ }.
  • Se você usou uma caixa do Copilot em algum momento, limpe o campo Comment dessa etapa antes de salvar. Uma anotação longa ali (com mais de 256 caracteres) bloqueia o salvamento silenciosamente.

Parte 4 — Teste

Crie ou atualize um ticket real no FyneDesk. Uma mensagem aparece no seu canal do Teams em poucos segundos.

Sobre o botão Send test O Send test do FyneDesk envia um pequeno pacote ping sem número ou título de ticket, então a mensagem de teste parece esparsa (a maioria dos campos em branco). Isso é esperado. A prova real é criar ou comentar em um ticket real e observar o canal.

Opcional: rotule cada evento ou publique um cartão

A expressão acima sempre começa com "New ticket". Se você quiser que a mensagem nomeie o evento (novo comentário, mudança de status e assim por diante) ou preferir um cartão formatado, use uma das opções abaixo. A configuração é idêntica — só a expressão de Message muda.

O que o FyneDesk envia

O seu webhook pode assinar quatro eventos. Veja o formato de cada pacote (os valores são exemplos).

ticket.created

{
  "event": "ticket.created",
  "timestamp": "2026-05-30T22:19:59",
  "organization": { "id": 173, "name": "SafePACS" },
  "data": {
    "id": 6381,
    "ticket_number": "INC004736",
    "title": "Printer not working",
    "description": "The 3rd floor printer is offline",
    "status": "New",
    "priority": "Medium",
    "ticket_type": "Incident",
    "source": "Email",
    "created_at": "2026-05-30T22:19:59"
  }
}

ticket.updated e ticket.status_changed usam o mesmo formato acima, mais updated_at, assigned_to e assigned_team_id.

ticket.commented — observe que os nomes dos campos são um pouco diferentes aqui:

{
  "event": "ticket.commented",
  "timestamp": "2026-05-30T22:19:59",
  "organization": { "id": 173, "name": "SafePACS" },
  "data": {
    "ticket_id": 6381,
    "ticket_number": "INC004736",
    "ticket_title": "Printer not working",
    "ticket_status": "New",
    "content": "Any update on this?",
    "comment_id": 8809,
    "is_internal": false
  }
}
Um único fluxo cobre os quatro As expressões abaixo usam coalesce(...) para alternar entre os diferentes nomes de campo, de modo que um único fluxo cobre todos os tipos de evento. Para usá-las, marque os eventos extras no seu webhook do FyneDesk (Parte 2).

Opção A — Uma mensagem de texto mais rica

Em vez da expressão única, digite o layout abaixo na caixa Message. Tudo o que não for um 〈placeholder〉 é texto simples que você digita. Para cada 〈placeholder〉, clique no botão fx, cole a expressão correspondente da tabela e depois clique em Add.

〈eventLabel〉  〈ticketNumber〉
〈title〉

Status: 〈status〉   •   Priority: 〈priority〉

〈message〉

Open in FyneDesk: 〈link〉
PlaceholderCole isto na caixa de expressão fx
〈eventLabel〉if(equals(triggerBody()?['event'],'ticket.created'),'🎫 New ticket',if(equals(triggerBody()?['event'],'ticket.commented'),'💬 New comment',if(equals(triggerBody()?['event'],'ticket.status_changed'),'🔄 Status changed','✏️ Ticket updated')))
〈ticketNumber〉triggerBody()?['data']?['ticket_number']
〈title〉coalesce(triggerBody()?['data']?['title'],triggerBody()?['data']?['ticket_title'],'(no title)')
〈status〉coalesce(triggerBody()?['data']?['status'],triggerBody()?['data']?['ticket_status'],'-')
〈priority〉coalesce(triggerBody()?['data']?['priority'],'-')
〈message〉coalesce(triggerBody()?['data']?['content'],triggerBody()?['data']?['description'],'')
〈link〉concat('https://fynedesk.ai/',if(equals(triggerBody()?['data']?['ticket_type'],'Service Request'),'requests/','tickets/'),string(coalesce(triggerBody()?['data']?['id'],triggerBody()?['data']?['ticket_id'])))

Opção B — Um cartão formatado

Prefere um cartão? Use a ação Post card in a chat or channel e cole o seguinte no campo Adaptive Card. Ela usa as mesmas expressões, então são os mesmos dados em um layout mais organizado.

{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.2",
  "body": [
    {
      "type": "TextBlock",
      "size": "Medium",
      "weight": "Bolder",
      "text": "@{if(equals(triggerBody()?['event'],'ticket.created'),'🎫 New ticket',if(equals(triggerBody()?['event'],'ticket.commented'),'💬 New comment',if(equals(triggerBody()?['event'],'ticket.status_changed'),'🔄 Status changed','✏️ Ticket updated')))} @{triggerBody()?['data']?['ticket_number']}"
    },
    {
      "type": "TextBlock",
      "text": "@{coalesce(triggerBody()?['data']?['title'],triggerBody()?['data']?['ticket_title'],'(no title)')}",
      "wrap": true
    },
    {
      "type": "FactSet",
      "facts": [
        { "title": "Status", "value": "@{coalesce(triggerBody()?['data']?['status'],triggerBody()?['data']?['ticket_status'],'-')}" },
        { "title": "Priority", "value": "@{coalesce(triggerBody()?['data']?['priority'],'-')}" }
      ]
    },
    {
      "type": "TextBlock",
      "text": "@{coalesce(triggerBody()?['data']?['content'],triggerBody()?['data']?['description'],'')}",
      "wrap": true
    }
  ],
  "actions": [
    {
      "type": "Action.OpenUrl",
      "title": "Open in FyneDesk",
      "url": "@{concat('https://fynedesk.ai/',if(equals(triggerBody()?['data']?['ticket_type'],'Service Request'),'requests/','tickets/'),string(coalesce(triggerBody()?['data']?['id'],triggerBody()?['data']?['ticket_id'])))}"
    }
  ]
}

Solução de problemas

As mensagens ainda não aparecem — correções comuns

Você recebe um erro de "AdaptiveCard", ou o fluxo é executado mas nunca publica. As etapas pré-criadas Initialize variable e Attachments is null do template causam isso. Exclua as duas (Parte 3, passo 1) e publique a sua mensagem com uma única ação Post message in a chat or channel em vez delas.

O fluxo não salva. Se você tentou o Copilot em algum momento, limpe o campo Comment dessa etapa — uma anotação com mais de 256 caracteres bloqueia o salvamento silenciosamente.

Nada no Teams após uma ação de ticket real. No Power Automate, abra o seu fluxo e verifique o Run history (o registro de 28 dias). Cada evento do FyneDesk deve mostrar uma execução. Nenhuma execução significa que o webhook do FyneDesk não está apontado para a URL deste fluxo ou não está assinado nesse evento — verifique novamente no FyneDesk. Execuções com "Failed" significam que uma etapa deu erro; clique em uma para ver qual. Normalmente é o Team ou o Channel não selecionado, ou o proprietário do fluxo sem uma licença do Power Automate.

Uma mensagem é publicada, mas alguns campos ficam em branco. Eventos diferentes trazem campos diferentes (um comentário não tem priority, por exemplo). As expressões coalesce(...) nas opções avançadas fazem o fallback de forma elegante, então um campo em branco apenas significa que aquele evento não incluiu aquele campo.

Uma expressão mostra um erro em vermelho. Alguns tipos de gatilho expõem o corpo como triggerOutputs()?['body'] em vez de triggerBody(). Se triggerBody() der erro, troque-o — por exemplo, triggerOutputs()?['body']?['data']?['ticket_number'].

Uma observação sobre segurança

A sua URL do Power Automate contém uma assinatura secreta (a parte sig=...) — trate a URL inteira como uma senha e não a compartilhe. O FyneDesk também assina cada solicitação com um cabeçalho X-FyneDesk-Signature (HMAC-SHA256), caso você queira verificar a autenticidade dentro do fluxo, embora isso seja opcional e não seja necessário para receber as mensagens.

Prefere zero configuração? Agora existe um app nativo do Teams O FyneDesk agora publica notificações de tickets no Teams de forma nativa — cartões formatados e localizados, sem nenhum fluxo para criar, nos planos Pro e Business. Consulte Notificações do Microsoft Teams. Continue usando este guia quando quiser controle total sobre o formato da mensagem ou lógica de roteamento personalizada no Power Automate.

Perguntas frequentes

O FyneDesk diz "enviado com sucesso", mas nada aparece no Teams. Por quê?

"Enviado com sucesso" significa apenas que a Microsoft recebeu os dados — o Power Automate responde 202 Accepted no momento em que recebe uma solicitação. Não significa que uma mensagem foi publicada. O Teams não exibe o JSON bruto sozinho; o seu fluxo precisa de uma ação Post message in a chat or channel para formatá-lo e publicá-lo.

Qual template do Power Automate devo usar?

Abra Templates, pesquise por webhook e escolha Send webhook alerts to a channel — o simples, não as versões "(TEST)". Ele gera a URL do webhook que você cola no FyneDesk e permite escolher o Team e o canal onde publicar.

Por que recebo um erro de "AdaptiveCard", ou por que o fluxo nunca publica?

O template vem com duas etapas pré-criadas — uma ação Initialize variable e uma condição Attachments is null — e são elas que causam o erro de AdaptiveCard. Exclua as duas e adicione uma única ação Post message in a chat or channel com a sua própria expressão de mensagem.

O FyneDesk pode publicar no Teams sem o Power Automate?

Sim — o FyneDesk agora tem um app nativo do Microsoft Teams que publica cartões de notificação de tickets diretamente nos seus canais, nos planos Pro e Business, sem nenhum fluxo para criar. O caminho com webhook + Power Automate desta página continua funcionando e permanece útil quando você quer controle total sobre a formatação e o roteamento.

Quais eventos de ticket posso enviar para o Teams?

Um webhook do FyneDesk pode enviar ticket.created, ticket.updated, ticket.status_changed e ticket.commented. A configuração recomendada usa ticket.created; as expressões avançadas tratam os quatro automaticamente, então um único fluxo pode cobrir todos os eventos.