From b162f5121c82f03640b701188dffbc16198df943 Mon Sep 17 00:00:00 2001 From: Lorenzo Ruozzi Date: Mon, 27 Nov 2023 10:52:19 +0100 Subject: [PATCH] Add webhook docs (#157) --- docs/Gemfile.lock | 5 +- docs/architecture_and_customization.md | 7 ++- docs/contributing.md | 3 +- docs/images/akeneo-event-subscrition.png | Bin 0 -> 74463 bytes docs/index.md | 1 + docs/upgrade/index.md | 2 +- .../{upgrade-2.0.md => upgrade-2.*.md} | 7 ++- docs/usage.md | 3 + docs/webhook.md | 58 ++++++++++++++++++ 9 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 docs/images/akeneo-event-subscrition.png rename docs/upgrade/{upgrade-2.0.md => upgrade-2.*.md} (98%) create mode 100644 docs/webhook.md diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index b66a578b..40418260 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -67,6 +67,8 @@ GEM sass-embedded (1.58.3) google-protobuf (~> 3.21) rake (>= 10.0.0) + sass-embedded (1.58.3-x86_64-darwin) + google-protobuf (~> 3.21) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) unicode-display_width (2.4.2) @@ -74,6 +76,7 @@ GEM PLATFORMS x86_64-darwin-22 + x86_64-darwin-23 x86_64-linux DEPENDENCIES @@ -81,4 +84,4 @@ DEPENDENCIES just-the-docs BUNDLED WITH - 2.4.19 + 2.4.22 diff --git a/docs/architecture_and_customization.md b/docs/architecture_and_customization.md index 5766f3e4..899e7593 100644 --- a/docs/architecture_and_customization.md +++ b/docs/architecture_and_customization.md @@ -1,7 +1,7 @@ --- title: Architecture & customization layout: page -nav_order: 5 +nav_order: 6 --- # Architecture & customization @@ -9,12 +9,13 @@ nav_order: 5 > This plugin makes use of [Symfony Messenger](https://symfony.com/doc/current/messenger.html) component. It is highly > recommended to have a minimum knowledge of these component to understand how this integration works. -This plugin has basically two entry points: +This plugin has basically three entry points: * The UI admin import button, this will import only products * The Import CLI command, this will import both product, product associations and attribute options +* The Webhook controller, this will import product and product associations when created/updated on Akeneo -Both this entry points deals to identify entities to import from Akeneo. When they have collected them they dispatch +These entry points deals to identify entities to import from Akeneo. When they have collected them they dispatch an `Webgriffe\SyliusAkeneoPlugin\Message\ItemImport` message on the messenger default bus. By default, in the configuration this message is handled by the main bus, the same bus used as default by Sylius for catalog promotions. This means that, if you have configured the main bus to run synchronously the import will be diff --git a/docs/contributing.md b/docs/contributing.md index a3b15104..12d49e10 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,7 +1,7 @@ --- title: Contributing layout: page -nav_order: 6 +nav_order: 7 --- # Contributing @@ -175,6 +175,7 @@ WEBGRIFFE_SYLIUS_AKENEO_PLUGIN_CLIENT_ID=SAMPLE WEBGRIFFE_SYLIUS_AKENEO_PLUGIN_SECRET=SAMPLE WEBGRIFFE_SYLIUS_AKENEO_PLUGIN_USERNAME=SAMPLE WEBGRIFFE_SYLIUS_AKENEO_PLUGIN_PASSWORD=SAMPLE +WEBGRIFFE_SYLIUS_AKENEO_PLUGIN_WEBHOOK_SECRET=WEBHOOK_SECRET ``` Now, if you want you can import products from Akeneo to Sylius by launching the command: diff --git a/docs/images/akeneo-event-subscrition.png b/docs/images/akeneo-event-subscrition.png new file mode 100644 index 0000000000000000000000000000000000000000..e28ca5dab56db085e2cac6292db79bf6a49173b1 GIT binary patch literal 74463 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%0DaBhRw_!OcY$OE_c|CHFw~rq52VRM$NiHkE=i90s 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 XCf_`>v1M@r_<5%E;*XNY=0X1j(BLag literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 822b81a9..9c4c5dbe 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,6 +31,7 @@ new features that this plugin could add. So, let's start! 🚀 - [Installation](installation.html) - [Configuration](configuration.html) - [Usage](usage.html) +- [Webhook](webhook.html) - [Architecture & customization](architecture_and_customization.html) - [Contributing](contributing.html) - [Upgrade guide](upgrade.html) diff --git a/docs/upgrade/index.md b/docs/upgrade/index.md index 18859e45..5c105218 100644 --- a/docs/upgrade/index.md +++ b/docs/upgrade/index.md @@ -1,7 +1,7 @@ --- title: Upgrade layout: page -nav_order: 7 +nav_order: 8 has_children: true --- diff --git a/docs/upgrade/upgrade-2.0.md b/docs/upgrade/upgrade-2.*.md similarity index 98% rename from docs/upgrade/upgrade-2.0.md rename to docs/upgrade/upgrade-2.*.md index a64371f9..da0d8fbe 100644 --- a/docs/upgrade/upgrade-2.0.md +++ b/docs/upgrade/upgrade-2.*.md @@ -1,10 +1,15 @@ --- -title: Upgrade to 2.0 +title: Upgrade to 2.* layout: page nav_order: 0 parent: Upgrade --- +# Upgrade from `v2.2.0` to `v2.3.0` + +The v2.3.0 version introduces the support for webhooks. To enable check the new documentation [here](../webhook.html). +It is highly recommended to remove the import command that runs every minute from your crontab and use the webhook instead. + # Upgrade from `v1.17.0` to `v2.0.0` In the 2.0 version, we have introduced the Symfony Messenger component and removed all deprecations. diff --git a/docs/usage.md b/docs/usage.md index 44b36449..90674785 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -471,6 +471,9 @@ This will: * Import, every minute, all products that have been modified since the last execution, along with their associations * Reconcile Akeneo deleted products every 6 hours +> *NB*: The line that imports products and product associations every minute should be added only if you do not use the +> webhook feature (see next chapter). Otherwise, the products will be imported twice. + Import and Reconcile commands uses a [lock mechanism](https://symfony.com/doc/current/console/lockable_trait.html) which prevents running them if another instance of the same command is already running. {% endraw %} diff --git a/docs/webhook.md b/docs/webhook.md new file mode 100644 index 00000000..0105570d --- /dev/null +++ b/docs/webhook.md @@ -0,0 +1,58 @@ +--- +title: Webhook +layout: page +nav_order: 5 +--- + +{% raw %} + +# Webhook + +This plugin provides a webhook that can be used to automatically import products from Akeneo PIM to Sylius when they are +created or updated. +To use the webhook you need to: + +1. Import the routes needed for the plugin by adding the following to your `config/routes.yaml` file: + ```yaml + webgriffe_sylius_akeneo_plugin_webhook: + resource: "@WebgriffeSyliusAkeneoPlugin/config/webhook_routing.yaml" + prefix: '' + ``` + The url of the webhook can be anything you want but it must be the same you will configure in Akeneo PIM. The + imported resource will use /akeneo/webhook, but if you prefer you can add any prefix you want or you can completely + rewrite the url: + ```yaml + webgriffe_sylius_akeneo_plugin_webhook: + path: /akeneo/complete/url/rewrite/webhook + methods: [POST] + controller: webgriffe_sylius_akeneo.controller.webhook::postAction + ``` +2. Configure the webhook in Akeneo PIM. Remember that events API are available from Akeneo 5. You can find the webhook + configuration in the Akeneo PIM's + menu: `Connect > Connection settings`. Select the current data destination connection (the one used from the plugin). + Now, select Event subscription from the left menu. + Check Event subscription activation and leave unchecked Use product UUID instead of product identifier? (this is not + currently supported). Now is time to insert the full URL previously configurated. + When you click the Save button, a new secret token will be generated. Copy it and paste it in the plugin's + configuration (see next step). + ![akeneo-event-subscrition.png](images%2Fakeneo-event-subscrition.png) +3. In the plugin configuration (probably in the file config/packages/webgriffe_sylius_akeneo_plugin.yaml) add the + following: + ```yaml + webhook: + secret: 'YOUR_TOKEN_VALUE' + ``` + Replace YOUR_TOKEN_VALUE with the secret token generated previously by Akeneo PIM. As always, we suggest to add this + token by using an env variable to keep it secret from the repository ( + see [Symfony best practices doc](https://symfony.com/doc/current/best_practices.html#configuration)). +4. If you want, you can now TEST the webhook with the dedicated button on Akeneo event subscription page. If any error + occurs, you can debug the webhook by adjusting the monolog.logger.webgriffe_sylius_akeneo_plugin monolog level to + debug, so that you will see if there is something that is currently not working. +5. Finally, it is highly suggested that you remove the Product and ProductAssociations importer from the crontab to + avoid products imported twice: + ```diff + - * * * * * /path/to/sylius/bin/console -e prod -q webgriffe:akeneo:import --since-file=/path/to/sylius/var/storage/akeneo-import-sincefile.txt --importer="Product" --importer="ProductAssociations" + ``` + +{% endraw %} +