Tailwind Logo

ワークフローの中で Webhook を実行する

XM CloudExperience Manager (XM)

公開日: 2024-08-29

Sitecore CMS のワークフローの中で、Webhook を実行して外部に対して処理のリクエストをすることができます。今回はこの動作に関して確認をしていきます。

ワークフローで webhook を利用する

Sitecore の以下のバージョン以降、ワークフローの中に webhook を仕込むことが可能となっています。

  • Sitecore XM Cloud
  • Sitecore Experience Manager 10.3 以降
  • Sitecore Experience Platform 10.3 以降

管理しているアイテムのワークフローに対して、アクションを追加する際に Webhook を選択できるようになっています。

xmwebhook01.png

また、サンプルの Workflow としても webhook が含まれているワークフローが用意されています。

xmwebhook02.png

今回はこのサンプルのワークフローを利用して、コンテンツの承認が完了したら webhook を動かすように設定をして、どのような動きをするのか確認していきます。

ワークフローの設定

今回は標準の Page のテンプレートに対して Webhook を利用しているワークフローを適用して動作確認をしていきます。まず、/sitecore/templates/Project/sxastarter/Page/__Standard Values で Page を作成した時のアイテムのデフォルトの値を設定できるようになっているため、作成をした段階で下書きになるように以下のようにワークフローを設定します。

xmwebhook03.png

続いてワークフローの実行の際の Webhook の設定を、今回も webhook.site のサービスを利用して検証します。

xmwebhook04.png

これで Workflow の設定が完了しました。

アイテムの作成、テスト

アイテムを作成する

今回は Web ページとして動作させることなく、アイテムの作成と Webhook の動作確認だ毛を進めていきます。まず、Test のアイテムを作成して、以下のようにコンテンツを設定しておきます。

xmwebhook05.png

作成したワークフローは下書きのままとなっています。

xmwebhook06.png

ワークフローを進める

作成をしたアイテムのワークフローを進めていきます。下記の画面は Submit をしたあと、承認待ちのステータスになっている状況です。

xmwebhook07.png

ワークフローが完了した段階で、以下のように webhook.site には Json のデータが渡されていいます。

xmwebhook08.png

データを確認する

取得したサンプルデータは以下の通りです。

JSON
{
  "ActionID": "d743186e-4fdd-4f06-859c-b6955fb2feb6",
  "ActionName": "Webhook Submit Action",
  "Comments": [{ "Key": "Comments", "Value": "" }],
  "DataItem": {
    "Language": "en",
    "Version": 1,
    "Id": "cc12f8c5-7355-4013-9147-0d9d26705f3b",
    "Name": "Test",
    "ParentId": "1f9e052e-27bb-4ca0-a46a-9303d9e1fee3",
    "TemplateId": "ecbedbd8-54be-430e-b89e-681ee99e575d",
    "TemplateName": "Page",
    "MasterId": "00000000-0000-0000-0000-000000000000",
    "SharedFields": [
      {
        "Id": "c7c26117-dbb1-42b2-ab5e-f7223845cca3",
        "Value": "<image mediaid=\"{8E2AFE51-1415-4B7A-A3D2-EF48F49DB3F9}\" />"
      },
      {
        "Id": "a4f985d9-98b3-4b52-aaaf-4344f6e747c6",
        "Value": "{C9892497-0D1B-4A3F-B47C-62AB8B5AAFD7}"
      }
    ],
    "UnversionedFields": [],
    "VersionedFields": [
      {
        "Id": "9f28e75d-2eaa-495a-93e0-e873da727ac7",
        "Value": "Test",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "6e8afedc-d855-49de-ba2e-cc83f3c1947b",
        "Value": "<h1>Test header 1</h1>\n<p>Paragraph</p>\n<p>paragraph</p>\n<h2>Test Header 2</h2>\n<p>Paragraph</p>",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "4e0720e9-9d50-4ddc-87cf-ecd65e8e94c8",
        "Value": "Test",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "25bed78c-4957-4165-998a-ca1b52f67497",
        "Value": "20240816T002532Z",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "8cdc337e-a112-42fb-bbb4-4143751e123f",
        "Value": "fb7b5148-7341-4bf4-b29f-871d9817961d",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "d9cf14b1-fa16-4ba6-9288-e8a174d4d522",
        "Value": "20240816T003018Z",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "badd9cf9-53e0-4d0c-bcc0-2d784c282f6a",
        "Value": "sitecore\\test@sitecore.com",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "3e431de1-525e-47a3-b6b0-1ccbec3a8c98",
        "Value": "{72E21251-85B0-4A13-B181-FCE910B08232}",
        "Version": 1,
        "Language": "en"
      },
      {
        "Id": "001dd393-96c5-490b-924a-b0f25cd9efd8",
        "Value": "<r />",
        "Version": 1,
        "Language": "en"
      }
    ]
  },
  "Message": "",
  "NextState": null,
  "PreviousState": {
    "DisplayName": "Awaiting Approval",
    "FinalState": false,
    "Icon": "applications/16x16/document_ok.png",
    "StateID": "{0B9F5233-0D63-41C1-A56B-542C71ECFAA4}",
    "PreviewPublishingTargets": []
  },
  "UserName": "sitecore\\test@sitecore.com",
  "WorkflowName": "Sample Webhook Workflow",
  "WebhookItemId": "d743186e-4fdd-4f06-859c-b6955fb2feb6",
  "WebhookItemName": "Webhook Submit Action"
}

少しデータを確認していきます。上記の JSON のデータの中には Workflow に関する情報も含まれていますが、この中でポイントとなるのは DataItem の中身となります。この中のデータを参照していくと以下のようになります。

項目名

Id

アイテム ID

Name

アイテム名

ParentId

親のアイテム ID

TemplateId

テンプレート ID

VersionedFields

アイテムで持っているフィールド

また VersiondFields の中にいくつか項目があります。今回はわかりやすく、それぞれの ID ではなくフィールド名を調べていくと以下のようになります。

ID

フィールド名

9f28e75d-2eaa-495a-93e0-e873da727ac7

Test

Title

6e8afedc-d855-49de-ba2e-cc83f3c1947b

<h1>Test header 1</h1>\n<p>Paragraph</p>\n<p>paragraph</p>\n<h2>Test Header 2</h2>\n<p>Paragraph</p>

Content

4e0720e9-9d50-4ddc-87cf-ecd65e8e94c8

Test

Navigation Title

25bed78c-4957-4165-998a-ca1b52f67497

20240816T002532Z

__Created

8cdc337e-a112-42fb-bbb4-4143751e123f

fb7b5148-7341-4bf4-b29f-871d9817961d

__Revision

badd9cf9-53e0-4d0c-bcc0-2d784c282f6a

account name

__Updated by

3e431de1-525e-47a3-b6b0-1ccbec3a8c98

{72E21251-85B0-4A13-B181-FCE910B08232}

__Workflow state

001dd393-96c5-490b-924a-b0f25cd9efd8

<r />

__Lock

上記のように、この項目に対してアイテムが持っているコンテンツの主な情報が含まれている形です。

まとめ

今回はワークフローに対して Webhook のアクションを追加して、アイテムのデータがどのように Webhook を通じて渡されているのかを確認しました。これらの情報を利用することで、アイテム ID およびコンテンツの情報が Json でを利用して、外部で処理をして、API を通じて処理をすることが可能になります。

関連タグ