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.
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.
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).
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.
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.
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.createdmarcado — é tudo o que você precisa para começar. (Você pode adicionar mais eventos depois.) - Clique em 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".
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:
| Campo | Defina como |
|---|---|
| Post as | Flow bot |
| Post in | Channel |
| Team | O seu team |
| Channel | O 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']))
4. Salve. Clique em Save (canto superior direito). Você deve ver "Your flow is ready to go."
- 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.
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
}
}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〉| Placeholder | Cole 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.
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.