FyneDeskの通知をMicrosoft Teamsに送信する

チケットが作成、コメント、またはステータス変更されるたびに、Teamsチャンネルにメッセージを受け取りましょう。FyneDeskがイベントをWebhookに送信し、短いPower AutomateフローがそれをTeamsのメッセージに変換します。以下のステップを順番に進めてください。約10分で完了します。

テストして「正常に送信されました」と表示されたのに、Teamsには何もありませんか? それは想定どおりで、あと少しで完了です。「成功」はMicrosoftがデータを受信したことを意味するだけで、それ自体では何も投稿されません。下記のパート3で投稿アクションを1つ追加すれば、メッセージが表示されるようになります。

仕組み

FyneDeskは、各イベント(新しいチケット、新しいコメントなど)を小さなJSONデータパケットとして、指定したURLに送信します。Microsoft Teamsはそのパケットをそれ自体で表示することはありません。Power Automateフローがデータを受け取り、メッセージとして投稿する必要があります。

これが、テストで「正常に送信されました」と表示されるのにTeamsには何も表示されない理由です。Power Automateはリクエストを受け取った瞬間に202 Acceptedと返すため、「成功」はMicrosoftがデータを受信したことを意味するだけです。メッセージが投稿されたかどうかについては何も示しません。パート3で投稿ステップを追加すると、メッセージが表示されます。

始める前に

  • 通知を表示したいMicrosoft Teamsのチームとチャンネル、そしてTeamsに投稿できるライセンスを持つPower Automateアカウント。
  • FyneDeskのWebhookへの管理者アクセス(管理者設定 → 詳細設定 → Webhook設定 → 接続 → Webhookからもアクセスできます)。
  • 10分。既製のテンプレートからフローを構築し、そのURLをFyneDeskに貼り付け、メッセージを投稿するステップを1つ追加します。
すでにPower AutomateのURLをFyneDeskに貼り付けましたか? それなら、難しい部分は終わっています。パート3に進んでください。投稿ステップを追加するだけです。

設定する

これは、私たちのチームが端から端まで使っているとおりの手順です。シンプルで読みやすいテキストメッセージが生成されます。(メッセージに各イベントタイプの名前を付けたい、または書式付きのカードがよいですか? 下記の高度なオプションをご覧ください。)

パート1 — テンプレートからフローを作成する

make.powerautomate.comにアクセスしてサインインします。左メニューでTemplatesを選び、検索ボックスにwebhookと入力し、Send webhook alerts to a channelを開きます。プレーンなもので、「(TEST)」バージョンではありませんContinueをクリックします(求められたら再度サインインします)。

検索ボックスにwebhookと入力されたPower AutomateのTemplates画面。4つのテンプレートが表示されており、最初のSend webhook alerts to a channelが開くべきものです。

テンプレートは、Teams → Microsoft Teamsを接続し、Webhook URLを生成することを示します。Createをクリックする前に、通知を投稿したいTeamChannelを設定してください。これは見落としやすく、重要です。

TeamsをMicrosoft Teamsに接続することを示すSend webhook alerts to a channelテンプレート画面。接続済みのMicrosoft TeamsアカウントとContinueボタンが表示されています。 Microsoft Teams Teamドロップダウンがチームに設定され、Microsoft Teams ChannelドロップダウンがCreateボタンの上にあるテンプレート設定。チャンネルの値は伏せられています。

TeamとChannelを選び、Createをクリックします。フローが開いたら、Editをクリックして編集を開始します。

パート2 — URLをFyneDeskに渡す

フローで、最初のボックス「When a Teams webhook request is received」をクリックし、表示されるHTTP URLをコピーします。

展開されたWhen a Teams webhook request is receivedトリガー。Who can trigger the flowドロップダウンがAnyoneに設定され、コピーボタン付きのHTTP URLフィールドが表示されています。URLの値は伏せられています。

次に、FyneDeskで管理者設定 → 詳細設定 → Webhookに移動し、Webhookを追加をクリックします:

  • 後で識別できる名前を付けます(例: Microsoft Teams)。
  • Power AutomateのURLをエンドポイントURLに貼り付けます(HTTPSリンクである必要があります)。
  • ticket.createdのチェックを入れたままにします。始めるにはこれだけで十分です。(後でイベントを追加できます。)
  • 保存をクリックします。
名前フィールドがMicrosoft Teamsに設定されたFyneDeskのWebhookを追加画面。Power Automateリンク用のエンドポイントURLフィールド、ticket.createdにチェックの入った送信するイベントの一覧、保存ボタンが表示されています。

パート3 — 何を投稿するかをフローに指定する

これが見落としやすいステップです。そして、これこそがテストで「送信されました」と表示されるのにTeamsには何も表示されない理由です。

1. あらかじめ作られた2つのステップを削除します。 テンプレートはInitialize variableアクション(場合によっては2つ)とAttachments is null条件を追加します。両方を削除します。各ステップのをクリックし、Deleteを選びます。これらを残しておくと、「AdaptiveCard」エラーがトリガーされます。

When a Teams webhook request is receivedトリガーの後に、2つのInitialize variableステップとAttachments is null条件が続くフローエディター。これらが削除すべきステップです。

2. 投稿アクションを追加します。 トリガーの下の+をクリックし、Post message in a chat or channel(Microsoft Teamsコネクタ)を選びます。ドロップダウンを設定します:

フィールド設定する値
Post asFlow bot
Post inChannel
Teamあなたのチーム
Channel通知を表示したいチャンネル

3. メッセージを構築します。 Messageボックス内をクリックし、青いfx(Insert expression)ボタンをクリックし、下記の式をそのまま貼り付け、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']))
Post asがFlow botに、Post inがChannelに設定され、TeamとChannelが選択され、右側に表示されたfx式エディター経由で挿入された単一のconcat式をMessageボックスが保持しているPost message in a chat or channelアクション。

4. 保存します。 Save(右上)をクリックします。「Your flow is ready to go.」と表示されるはずです。

何時間も無駄にしがちな2つの落とし穴
  • 式は必ずfxボタンで挿入してください。プレーンテキストとして入力したり、@{ }で囲んだりしないでください。
  • 途中でCopilotボックスを使った場合は、保存する前にそのステップのCommentフィールドをクリアしてください。そこに長いメモ(256文字を超えるもの)があると、保存が静かにブロックされます。

パート4 — テスト

FyneDeskで実際のチケットを作成または更新します。数秒以内にTeamsチャンネルにメッセージが表示されます。

テスト送信ボタンについて FyneDeskのテスト送信は、チケット番号やタイトルのない小さなpingパケットを送信するため、テストメッセージはまばらに見えます(ほとんどのフィールドが空白です)。これは想定どおりです。本当の確認は、実際のチケットを作成またはコメントして、チャンネルを見ることです。

任意: すべてのイベントにラベルを付ける、またはカードを投稿する

上記の式は常に「New ticket」で始まります。メッセージにイベント名(新しいコメント、ステータス変更など)を付けたい場合や、書式付きのカードがよい場合は、以下のオプションのいずれかを使います。設定は同じで、Message式だけが変わります。

FyneDeskが送信する内容

Webhookは4つのイベントを購読できます。各パケットの形は次のとおりです(値は例です)。

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.updatedticket.status_changedは、上記と同じ形に加えて、updated_atassigned_toassigned_team_idを使用します。

ticket.commented — ここではフィールド名がわずかに異なることに注意してください:

{
  "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
  }
}
1つのフローで4つすべてに対応 以下の式はcoalesce(...)を使って、異なるフィールド名の間でフォールバックするため、単一のフローですべてのイベントタイプをカバーできます。これらを使うには、FyneDeskのWebhookで追加のイベントにチェックを入れます(パート2)。

オプションA — より充実したテキストメッセージ

単一の式の代わりに、以下のレイアウトをMessageボックスに入力します。〈プレースホルダー〉でないものはすべて、自分で入力するプレーンテキストです。各〈プレースホルダー〉について、fxボタンをクリックし、表から対応する式を貼り付け、Addをクリックします。

〈eventLabel〉  〈ticketNumber〉
〈title〉

Status: 〈status〉   •   Priority: 〈priority〉

〈message〉

Open in FyneDesk: 〈link〉
プレースホルダー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'])))

オプションB — 書式付きのカード

カードがよいですか? アクションPost card in a chat or channelを使い、以下をAdaptive Cardフィールドに貼り付けます。同じ式を使うため、同じデータをより整ったレイアウトで表示できます。

{
  "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'])))}"
    }
  ]
}

トラブルシューティング

メッセージがまだ表示されない — よくある対処法

「AdaptiveCard」エラーが出る、またはフローは実行されるのに投稿されない。 テンプレートのあらかじめ作られたInitialize variableAttachments is nullのステップが原因です。両方を削除し(パート3、ステップ1)、代わりに単一のPost message in a chat or channelアクションでメッセージを投稿します。

フローが保存できない。 途中でCopilotを試した場合は、そのステップのCommentフィールドをクリアしてください。256文字を超えるメモは、保存を静かにブロックします。

実際のチケット操作の後もTeamsに何もない。 Power Automateでフローを開き、Run history(28日間のログ)を確認します。各FyneDeskイベントは実行を表示するはずです。実行がまったくない場合は、FyneDeskのWebhookがこのフローのURLに向いていないか、そのイベントを購読していないことを意味します。FyneDeskで再確認してください。実行が「Failed」と表示される場合は、ステップでエラーが発生しています。1つをクリックしてどれかを確認します。通常は、TeamまたはChannelが選択されていない、またはフローの所有者がPower Automateライセンスを持っていないことが原因です。

メッセージは投稿されるが、一部のフィールドが空白。 イベントによって異なるフィールドを持ちます(たとえば、コメントにはpriorityがありません)。高度なオプションのcoalesce(...)式は適切にフォールバックするため、空白はそのイベントにそのフィールドが含まれていなかったことを意味するだけです。

式に赤いエラーが表示される。 一部のトリガータイプは、本文をtriggerBody()ではなくtriggerOutputs()?['body']として公開します。triggerBody()でエラーが出る場合は、入れ替えてください。たとえば、triggerOutputs()?['body']?['data']?['ticket_number']のようにします。

セキュリティについての注記

Power AutomateのURLには秘密の署名(sig=...の部分)が含まれています。URL全体をパスワードのように扱い、共有しないでください。FyneDeskは、フロー内で信頼性を検証したい場合に備えて、すべてのリクエストにX-FyneDesk-Signatureヘッダー(HMAC-SHA256)で署名します。ただしこれは任意であり、メッセージを流すために必須ではありません。

設定なしがよいですか? 現在ネイティブのTeamsアプリがあります FyneDeskは現在、チケット通知をTeamsにネイティブで投稿します。書式付きでローカライズされたカードで、構築するフローは不要、ProプランとBusinessプランで利用できます。Microsoft Teams通知をご覧ください。Power Automateでメッセージ形式やカスタムの振り分けロジックを完全に制御したい場合は、このガイドを引き続きお使いください。

よくある質問

FyneDeskでは「正常に送信されました」と表示されますが、Teamsには何も表示されません。なぜですか?

「正常に送信されました」は、Microsoftがデータを受信したことを意味するだけです。Power Automateはリクエストを受け取った瞬間に202 Acceptedと返します。これはメッセージが投稿されたことを意味しません。Teamsは生のJSONをそれ自体で表示することはありません。フローには、それを書式設定して投稿するPost message in a chat or channelアクションが必要です。

どのPower Automateテンプレートを使うべきですか?

Templatesを開き、webhookを検索し、Send webhook alerts to a channelを選びます。プレーンなもので、「(TEST)」バージョンではありません。これにより、FyneDeskに貼り付けるWebhook URLが生成され、投稿先のTeamとチャンネルを選択できます。

なぜ「AdaptiveCard」エラーが出るのですか、またはなぜフローは投稿されないのですか?

テンプレートには、あらかじめ作られた2つのステップ、Initialize variableアクションとAttachments is null条件が含まれており、これらがAdaptiveCardのエラーを引き起こします。両方を削除し、独自のメッセージ式を持つ単一のPost message in a chat or channelアクションを追加してください。

FyneDeskはPower AutomateなしでTeamsに投稿できますか?

はい。FyneDeskには現在、チケット通知カードをチャンネルに直接投稿するネイティブのMicrosoft Teamsアプリがあり、ProプランとBusinessプランで利用でき、構築するフローは不要です。このページのWebhook + Power Automateの方法は引き続き機能し、書式や振り分けを完全に制御したい場合に役立ちます。

どのチケットイベントをTeamsに送信できますか?

FyneDeskのWebhookは、ticket.createdticket.updatedticket.status_changedticket.commentedを送信できます。推奨される設定ではticket.createdを使用します。高度な式はこれら4つすべてを自動的に処理するため、1つのフローですべてのイベントをカバーできます。