From 0c1876d63fcd4aafcecc5fcaeea5f5d753fd6957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:29:30 +0200 Subject: [PATCH 1/7] IBX-9621: Document AI / Connect integration --- docs/ai_actions/ai_actions_guide.md | 31 ++++++++-- docs/ai_actions/img/connect_api_token.png | Bin 0 -> 131761 bytes docs/ai_actions/install_ai_actions.md | 56 ++++++++++++++++++ .../images/add_image_asset_from_dam.md | 2 +- 4 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 docs/ai_actions/img/connect_api_token.png diff --git a/docs/ai_actions/ai_actions_guide.md b/docs/ai_actions/ai_actions_guide.md index b08d84ef6c..ac2e92d9bf 100644 --- a/docs/ai_actions/ai_actions_guide.md +++ b/docs/ai_actions/ai_actions_guide.md @@ -12,7 +12,11 @@ Wherever you look, artificial intelligence becomes more and more important by en AI Actions is an extensible solution for integrating features provided by AI services into your workflows, all managed through a user-friendly interface. Out-of-the-box, AI Actions solution includes two essential components: a framework package and an OpenAI connector package. -It comes pre-configured with the following action types: + +As of version v4.6.19, AI Actions can integrate with [[[= product_name_connect =]]](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_connect/), to give you an opportunity to build complex data transformation workflows without having to rely on custom code. +From the developer's perspective, the integration removes the burden of maintaining third-party AI handlers, and accelerates the deployment of AI-based solutions. + +AI Actions solution comes pre-configured with the following action types: - [Refine text](#refining-text): Rewrite existing text according to instructions set in a prompt - [Generate alternative text](#generating-alternative-text): Generate alt text for images for accessibility purposes @@ -26,20 +30,28 @@ The possibilities are endless and you're not limited to a specific AI service, a ## Availability AI Actions are an opt-in capability available as an [LTS update](editions.md#lts-updates) starting with the v4.6.12 version of [[= product_name =]], regardless of its edition. +[[= product_name_connect =]] integration is available starting with v4.6.19. To begin using AI Actions, you must first [install the required packages and perform initial configuration](install_ai_actions.md). -!!! note "API Key" +### Prerequisites + +The OpenAI connector requires that you first [get an API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) and make sure that you [set up a billing method](https://help.openai.com/en/articles/9038407-how-can-i-set-up-billing-for-my-account). + +Integration with [[= product_name_connect =]] requires that you first [get the credentials](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_connect/#access-ibexa-connect) to your account, and the [API token](install_ai_actions.md#token). - The OpenAI connector requires that you first [get an API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) and make sure that you [set up a billing method](https://help.openai.com/en/articles/9038407-how-can-i-set-up-billing-for-my-account). +!!! note "[[= product_name_connect =]] Availability" + + [[= product_name_connect =]] comes with all contracts signed from 2023. + If you signed your contract earlier, contact your customer success manager to use [[= product_name_connect =]]. ## How it works AI Actions LTS update relies on an extensible AI framework, which is responsible for gathering information from various sources, such as AI action types, AI action configurations, and contextual details like SiteAccess, user details, locale settings, and more. This data can then be combined with user input. -It's then passed to a service connector, such as the default OpenAI connector, for final processing on [[= product_name =]] side. -The service connector wraps all data into a prompt or another suitable format and sends it to an external AI service. +It's then passed to a service connector, such as the default OpenAI connector or the [[= product_name_connect =]] connector, for final processing on [[= product_name =]] side. +The service connector wraps all data into a prompt or another suitable format and sends it to an external service. -When the AI Service returns a response, the response goes back through the service connector and passes to the framework. +When the external service returns a response, the response goes back through the service connector and passes to the framework. It can then be presented to the user in any way necessary. ### Core concepts @@ -147,3 +159,10 @@ Once the feature is configured, editors can generate alt text for images they up ![Alt text generation](img/alt_text_use_ai.png) With some customization, administrators could use the API to run a batch process against a larger collection of illustrations. + +### Performing advanced image to text analysis + +With some additional customization, store managers could benefit from automating part of product management by integrating their [[= product_name =]] with Google Cloud Vision and [PIM](pim_guide.md) by using [[= product_name_connect =]]. +Instead of manually selecting and linking images stored in a [DAM](add_image_asset_from_dam.md) solution to their products, they could use of a no-code workflow where an AI service, for example, Google Cloud Vision, extracts text and attributes from product images, which are then matched with existing items in a product catalog. + +This would enable automatic product identification, tagging, and catalog updates, resulting in less manual work and more efficient product management. diff --git a/docs/ai_actions/img/connect_api_token.png b/docs/ai_actions/img/connect_api_token.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3d3da9c468db6891b18a988c07cc5412b0d8ac GIT binary patch literal 131761 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 HB{Ts5g2d>! literal 0 HcmV?d00001 diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index ab14131479..fb39757560 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -36,6 +36,62 @@ OPENAI_API_KEY=sk-svcacct-AFCrCt1h2s3i4s5i6s7t8h9e0a1p2i3c4o5d6e ###< ibexa/connector-openai ### ``` +### Configure access to [[= product_name_connect =]] + +First, get the credentials by contacting [Ibexa Support](https://support.ibexa.co). + +In [[= product_name_connect =]], set up the account, and [create a team](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#creating-teams). +Navigate to the team details page and note down the numerical value of the **Team id** variable. + +Creating a team matters, because [scenarios](https://doc.ibexa.co/projects/connect/en/latest/scenarios/creating_a_scenario/) that process data coming from your AI action are associated with a team. +This way, if your organization has more than one application, each application can be linked to a different team and so can be scenarios coming from those applications. + +#### Create token + +Navigate to your [[= product_name_connect =]] user's profile, and on the **API ACCESS** tab, create a new token. +Copy the token code that appears next to the label. + +![Creating an API token](img/connect_api_token.png) + +#### Set up credentials + +In the root folder of your project, modify the `.env` file. +Replace a placeholder value of the `IBEXA_CONNECT_TOKEN` variable with the token that you got from [[= product_name_connect =]] and provide a value of the `IBEXA_CONNECT_TEAM_ID` variable. + +```bash +###> ibexa/connect ### +IBEXA_CONNECT_HOST=https://connect.ibexa.co +IBEXA_CONNECT_API_PATH=/api/v2/ +# Token can be created in the user's profile in Ibexa Connect, under the 'API ACCESS' section. +IBEXA_CONNECT_TOKEN=0eeecdef-4499-4ce5-bac2-a0p8i5k7e8y3 +# Use the URL below to read more on Ibexa Connect teams. +# https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/ +IBEXA_CONNECT_TEAM_ID=2 +###< ibexa/connect ### +``` + +#### Initiate integration + +Initiate each of the models provided by the handler by issuing the `php bin/console ibexa:connect:init-connect-ai ` command. + +For example: + +`php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text` + +or + +`php bin/console ibexa:connect:init-connect-ai 2 fr connect-text-to-text` + +!!! note "Support for multiple languages" + + You repeat this step for each of the languages that you want to be supported. + +#### Customize templates + +Return to the [[= product_name_connect =]] dashboard and modify the **Template for connect...handler** [templates](https://doc.ibexa.co/projects/connect/en/latest/scenarios/scenario_templates/) by defining the logic needed to process the data. + +Once the templates are ready, you can build scenarios from them, either directly in [[= product_name_connect =]] or in [[[= product_name =]]'s user interface]([[= user_doc =]]/ai_actions/work_with_ai_actions/#create-new-ai-actions). + ### Modify the database schema Create the `add_ai_actions.sql` file that contains the following code. diff --git a/docs/content_management/images/add_image_asset_from_dam.md b/docs/content_management/images/add_image_asset_from_dam.md index fe5d114ee5..ab709e98a7 100644 --- a/docs/content_management/images/add_image_asset_from_dam.md +++ b/docs/content_management/images/add_image_asset_from_dam.md @@ -22,7 +22,7 @@ The configuration for each connector depends on the requirements of the specific You can create your own connectors, or use the provided example DAM connector for [Unsplash](https://unsplash.com/). -To add the Unsplash connector to your system add the `ibexa/connector-unsplash` bundle to your installation. +To add the Unsplash connector to your system, add the `ibexa/connector-unsplash` bundle to your installation. ## Add Image Asset in Page Builder [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] From 5a0d5cee8ad3116def482c4e82a0040ef4c98f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:46:59 +0200 Subject: [PATCH 2/7] Add user role information --- docs/ai_actions/install_ai_actions.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index fb39757560..94b40f2ca4 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -40,11 +40,15 @@ OPENAI_API_KEY=sk-svcacct-AFCrCt1h2s3i4s5i6s7t8h9e0a1p2i3c4o5d6e First, get the credentials by contacting [Ibexa Support](https://support.ibexa.co). +### Create team + In [[= product_name_connect =]], set up the account, and [create a team](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#creating-teams). Navigate to the team details page and note down the numerical value of the **Team id** variable. Creating a team matters, because [scenarios](https://doc.ibexa.co/projects/connect/en/latest/scenarios/creating_a_scenario/) that process data coming from your AI action are associated with a team. -This way, if your organization has more than one application, each application can be linked to a different team and so can be scenarios coming from those applications. +This way, if your organization has more than one application, each application can be linked to a different team and so can be scenarios coming from those applications. + +If specific users from the team are supposed to modify scenario settings, you must [assign the right roles](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#managing-teams) to them. #### Create token From 71637fce50fd147f4cf253eb54671ba874360647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 8 Apr 2025 10:46:34 +0200 Subject: [PATCH 3/7] Explain the meaning of the language attribute --- docs/ai_actions/install_ai_actions.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index 94b40f2ca4..eabcb28013 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -76,19 +76,15 @@ IBEXA_CONNECT_TEAM_ID=2 #### Initiate integration -Initiate each of the models provided by the handler by issuing the `php bin/console ibexa:connect:init-connect-ai ` command. +Initiate the models provided by the handler by issuing the `php bin/console ibexa:connect:init-connect-ai ` command. For example: -`php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text` +`php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text connect-text-to-text` -or +!!! note "Support for multiple [[= product_name_connect =]] languages" -`php bin/console ibexa:connect:init-connect-ai 2 fr connect-text-to-text` - -!!! note "Support for multiple languages" - - You repeat this step for each of the languages that you want to be supported. + The [`language` attribute](https://developers.make.com/api-documentation/api-reference/templates#templates-1) determines the language in which template details such as module names will be displayed in [[= product_name_connect =]]'s UI. #### Customize templates From 7ed48322d02b73d930bd3780aa284f213d610f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:01:56 +0200 Subject: [PATCH 4/7] Implement reviewer comments --- docs/ai_actions/install_ai_actions.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index eabcb28013..42250dd18a 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -30,6 +30,8 @@ Create an OpenAI account, [get an API key](https://help.openai.com/en/articles/4 Then, in the root folder of your project, modify the `.env` file: find the `OPENAI_API_KEY` variable and replace a placeholder value with the API key that you got from the AI service. +For example: + ```bash ###> ibexa/connector-openai ### OPENAI_API_KEY=sk-svcacct-AFCrCt1h2s3i4s5i6s7t8h9e0a1p2i3c4o5d6e @@ -40,7 +42,7 @@ OPENAI_API_KEY=sk-svcacct-AFCrCt1h2s3i4s5i6s7t8h9e0a1p2i3c4o5d6e First, get the credentials by contacting [Ibexa Support](https://support.ibexa.co). -### Create team +#### Create team In [[= product_name_connect =]], set up the account, and [create a team](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#creating-teams). Navigate to the team details page and note down the numerical value of the **Team id** variable. @@ -62,6 +64,8 @@ Copy the token code that appears next to the label. In the root folder of your project, modify the `.env` file. Replace a placeholder value of the `IBEXA_CONNECT_TOKEN` variable with the token that you got from [[= product_name_connect =]] and provide a value of the `IBEXA_CONNECT_TEAM_ID` variable. +For example: + ```bash ###> ibexa/connect ### IBEXA_CONNECT_HOST=https://connect.ibexa.co @@ -76,11 +80,17 @@ IBEXA_CONNECT_TEAM_ID=2 #### Initiate integration -Initiate the models provided by the handler by issuing the `php bin/console ibexa:connect:init-connect-ai ` command. +Initiate the models provided by the handler by issuing the following command: + +```bash +php bin/console ibexa:connect:init-connect-ai +``` For example: -`php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text connect-text-to-text` +```bash +php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text connect-text-to-text +``` !!! note "Support for multiple [[= product_name_connect =]] languages" From 5e8afbdf6e6330feef1a9170db7a98c57c9b59a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:05:37 +0200 Subject: [PATCH 5/7] Implement reviewer comments --- docs/ai_actions/install_ai_actions.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index 42250dd18a..adc0cdc620 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -30,11 +30,9 @@ Create an OpenAI account, [get an API key](https://help.openai.com/en/articles/4 Then, in the root folder of your project, modify the `.env` file: find the `OPENAI_API_KEY` variable and replace a placeholder value with the API key that you got from the AI service. -For example: - ```bash ###> ibexa/connector-openai ### -OPENAI_API_KEY=sk-svcacct-AFCrCt1h2s3i4s5i6s7t8h9e0a1p2i3c4o5d6e +OPENAI_API_KEY= ###< ibexa/connector-openai ### ``` @@ -64,14 +62,12 @@ Copy the token code that appears next to the label. In the root folder of your project, modify the `.env` file. Replace a placeholder value of the `IBEXA_CONNECT_TOKEN` variable with the token that you got from [[= product_name_connect =]] and provide a value of the `IBEXA_CONNECT_TEAM_ID` variable. -For example: - ```bash ###> ibexa/connect ### IBEXA_CONNECT_HOST=https://connect.ibexa.co IBEXA_CONNECT_API_PATH=/api/v2/ # Token can be created in the user's profile in Ibexa Connect, under the 'API ACCESS' section. -IBEXA_CONNECT_TOKEN=0eeecdef-4499-4ce5-bac2-a0p8i5k7e8y3 +IBEXA_CONNECT_TOKEN= # Use the URL below to read more on Ibexa Connect teams. # https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/ IBEXA_CONNECT_TEAM_ID=2 From f4c6a2954f1decd0604fb4f537dbc8d4ceed9518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:41:11 +0200 Subject: [PATCH 6/7] Implement changes from review --- .../project_organization/bundles.md | 2 +- docs/ai_actions/ai_actions_guide.md | 4 +- docs/ai_actions/install_ai_actions.md | 138 +++++++++--------- docs/ibexa_engage/integrate_ibexa_connect.md | 6 +- .../integrate_recommendation_service.md | 2 +- docs/release_notes/ibexa_dxp_v4.4.md | 2 +- docs/release_notes/ibexa_dxp_v4.5.md | 2 +- docs/release_notes/ibexa_dxp_v4.6.md | 2 +- 8 files changed, 81 insertions(+), 77 deletions(-) diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index 81106c4067..15b5182422 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -71,7 +71,7 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |---------|-----------| |ibexa/oss|Core packages| |ibexa/content-tree|content tree functionality| -|ibexa/connect|[[[= product_name_connect =]]](https://doc.ibexa.co/projects/connect/en/latest/)| +|ibexa/connect|[[[= product_name_connect =]]]([[= connect_doc =]]/)| |ibexa/calendar|Calendar tab with a calendar widget| |ibexa/connector-dam|Connector for DAM (Digital Asset Management) systems| |ibexa/elasticsearch|Integration with Elasticsearch search engine| diff --git a/docs/ai_actions/ai_actions_guide.md b/docs/ai_actions/ai_actions_guide.md index ac2e92d9bf..9412b9e13d 100644 --- a/docs/ai_actions/ai_actions_guide.md +++ b/docs/ai_actions/ai_actions_guide.md @@ -13,7 +13,7 @@ AI Actions is an extensible solution for integrating features provided by AI ser Out-of-the-box, AI Actions solution includes two essential components: a framework package and an OpenAI connector package. -As of version v4.6.19, AI Actions can integrate with [[[= product_name_connect =]]](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_connect/), to give you an opportunity to build complex data transformation workflows without having to rely on custom code. +As of version v4.6.19, AI Actions can integrate with [[[= product_name_connect =]]]([[= connect_doc =]]/general/ibexa_connect/), to give you an opportunity to build complex data transformation workflows without having to rely on custom code. From the developer's perspective, the integration removes the burden of maintaining third-party AI handlers, and accelerates the deployment of AI-based solutions. AI Actions solution comes pre-configured with the following action types: @@ -37,7 +37,7 @@ To begin using AI Actions, you must first [install the required packages and per The OpenAI connector requires that you first [get an API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key) and make sure that you [set up a billing method](https://help.openai.com/en/articles/9038407-how-can-i-set-up-billing-for-my-account). -Integration with [[= product_name_connect =]] requires that you first [get the credentials](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_connect/#access-ibexa-connect) to your account, and the [API token](install_ai_actions.md#token). +Integration with [[= product_name_connect =]] requires that you first [get the credentials]([[= connect_doc =]]/general/ibexa_connect/#access-ibexa-connect) to your account, and the [API token](install_ai_actions.md#token). !!! note "[[= product_name_connect =]] Availability" diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index adc0cdc620..380b3f9d83 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -6,25 +6,63 @@ month_change: false # Install AI Actions AI Actions are available as an LTS update to [[= product_name =]] starting with version v4.6.12 or higher, regardless of its edition. -To use this feature you must first install the packages and configure them. +To use this feature you must first install the package. +You can then install and configure the service connectors or build your onw ones. -## Install packages - -Run the following commands to install the packages: +Run the following command to install the package: ``` bash composer require ibexa/connector-ai -composer require ibexa/connector-openai ``` -This command adds the framework code, a service connector with the OpenAI service, service handlers, Twig templates, and configurations required for using AI Actions. +This command adds the framework code, service handlers, Twig templates, and configurations required for using AI Actions. It also modifies the permission system to account for the new functionality. -## Configure AI Actions +## Modify the database schema + +Create the `add_ai_actions.sql` file that contains the following code. + +=== "MySQL" + + ``` sql + [[= include_file('code_samples/ai_actions/config/mysql/add_ai_actions.sql', 0, None, ' ') =]] + ``` + +=== "PostgreSQL" + + ``` sql + [[= include_file('code_samples/ai_actions/config/postgresql/add_ai_actions.sql', 0, None, ' ') =]] + ``` + +Run the following command, where `` is the same name that you defined when you [installed [[= product_name =]]](../getting_started/install_ibexa_dxp.md#change-installation-parameters). + +=== "MySQL" -Once the packages are installed, before you can start using AI Actions, you must enable them by following these instructions. + ```bash + mysql -u -p < add_ai_actions.sql + ``` -### Configure access to OpenAI +=== "PostgreSQL" + + ```bash + psql < add_ai_actions.sql + ``` + +This command modifies the existing database schema by adding database configuration required for using AI Actions. + +!! note "Next steps" + + Once the framework is installed and configured, before you can start using AI Actions, you can configure access to [[ = product_name_base = ]]-made service connectors by following the instructions below, or [create your own](extend_ai_actions.md#create-custom-action-handler). + + Only then you can restart you application and start [working with the AI Actions feature]([[= user_doc =]]/ai_actions/work_with_ai_actions/). + +## Configure access to OpenAI + +Run the following command to install the service connector with the OpenAI service: + +``` bash +composer require ibexa/connector-openai +``` Create an OpenAI account, [get an API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key), and make sure that you [set up a billing method](https://help.openai.com/en/articles/9038407-how-can-i-set-up-billing-for-my-account). @@ -36,28 +74,40 @@ OPENAI_API_KEY= ###< ibexa/connector-openai ### ``` -### Configure access to [[= product_name_connect =]] +### Install sample OpenAI action configurations (optional) + +By installing a collection of sample AI action configurations you can quickly start using the feature. +You do it by following a standard [data migration](importing_data.md) procedure: + +```bash +php bin/console ibexa:migrations:import vendor/ibexa/connector-openai/src/bundle/Resources/migrations/action_configurations.yaml +php bin/console ibexa:migrations:migrate +``` + +Based on these examples, which reflect the most common use cases, you can learn to configure your own AI actions with greater ease. + +## Configure access to [[= product_name_connect =]] First, get the credentials by contacting [Ibexa Support](https://support.ibexa.co). -#### Create team +### Create team -In [[= product_name_connect =]], set up the account, and [create a team](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#creating-teams). +In [[= product_name_connect =]], set up the account, and [create a team]([[= connect_doc =]]/access_management/teams/#creating-teams). Navigate to the team details page and note down the numerical value of the **Team id** variable. -Creating a team matters, because [scenarios](https://doc.ibexa.co/projects/connect/en/latest/scenarios/creating_a_scenario/) that process data coming from your AI action are associated with a team. -This way, if your organization has more than one application, each application can be linked to a different team and so can be scenarios coming from those applications. +Creating a team matters, because [scenarios]([[= connect_doc =]]/scenarios/creating_a_scenario/) that process data coming from your AI action are associated with a team. +This way, if your organization has more than one [[= product_name =]] project, each project can be linked to a different team and so can be scenarios used in those projects. -If specific users from the team are supposed to modify scenario settings, you must [assign the right roles](https://doc.ibexa.co/projects/connect/en/latest/access_management/teams/#managing-teams) to them. +If specific users from the team are supposed to modify scenario settings, you must [assign the right roles]([[= connect_doc =]]/access_management/teams/#managing-teams) to them. -#### Create token +### Create token Navigate to your [[= product_name_connect =]] user's profile, and on the **API ACCESS** tab, create a new token. Copy the token code that appears next to the label. ![Creating an API token](img/connect_api_token.png) -#### Set up credentials +### Set up credentials In the root folder of your project, modify the `.env` file. Replace a placeholder value of the `IBEXA_CONNECT_TOKEN` variable with the token that you got from [[= product_name_connect =]] and provide a value of the `IBEXA_CONNECT_TEAM_ID` variable. @@ -74,12 +124,12 @@ IBEXA_CONNECT_TEAM_ID=2 ###< ibexa/connect ### ``` -#### Initiate integration +### Initiate integration Initiate the models provided by the handler by issuing the following command: ```bash -php bin/console ibexa:connect:init-connect-ai +php bin/console ibexa:connect:init-connect-ai ``` For example: @@ -92,54 +142,8 @@ php bin/console ibexa:connect:init-connect-ai 2 en connect-image-to-text connect The [`language` attribute](https://developers.make.com/api-documentation/api-reference/templates#templates-1) determines the language in which template details such as module names will be displayed in [[= product_name_connect =]]'s UI. -#### Customize templates +### Customize templates -Return to the [[= product_name_connect =]] dashboard and modify the **Template for connect...handler** [templates](https://doc.ibexa.co/projects/connect/en/latest/scenarios/scenario_templates/) by defining the logic needed to process the data. +Return to the [[= product_name_connect =]] dashboard and modify the **Template for connect...handler** [templates]([[= connect_doc =]]/scenarios/scenario_templates/) by defining the logic needed to process the data. Once the templates are ready, you can build scenarios from them, either directly in [[= product_name_connect =]] or in [[[= product_name =]]'s user interface]([[= user_doc =]]/ai_actions/work_with_ai_actions/#create-new-ai-actions). - -### Modify the database schema - -Create the `add_ai_actions.sql` file that contains the following code. - -=== "MySQL" - - ``` sql - [[= include_file('code_samples/ai_actions/config/mysql/add_ai_actions.sql', 0, None, ' ') =]] - ``` - -=== "PostgreSQL" - - ``` sql - [[= include_file('code_samples/ai_actions/config/postgresql/add_ai_actions.sql', 0, None, ' ') =]] - ``` - -Run the following command, where `` is the same name that you defined when you [installed [[= product_name =]]](../getting_started/install_ibexa_dxp.md#change-installation-parameters). - -=== "MySQL" - - ```bash - mysql -u -p < add_ai_actions.sql - ``` - -=== "PostgreSQL" - - ```bash - psql < add_ai_actions.sql - ``` - -This command modifies the existing database schema by adding database configuration required for using AI Actions. - -You can now restart you application and start [working with the AI Actions feature]([[= user_doc =]]/ai_actions/work_with_ai_actions/). - -### Install sample AI action configurations (optional) - -By installing a collection of sample AI action configurations you can quickly start using the feature. -You do it by following a standard [data migration](importing_data.md) procedure: - -```bash -php bin/console ibexa:migrations:import vendor/ibexa/connector-openai/src/bundle/Resources/migrations/action_configurations.yaml -php bin/console ibexa:migrations:migrate -``` - -Based on these examples, which reflect the most common use cases, you can learn to configure your own AI actions with greater ease. diff --git a/docs/ibexa_engage/integrate_ibexa_connect.md b/docs/ibexa_engage/integrate_ibexa_connect.md index 3b8974bbb9..560a5d31e4 100644 --- a/docs/ibexa_engage/integrate_ibexa_connect.md +++ b/docs/ibexa_engage/integrate_ibexa_connect.md @@ -5,11 +5,11 @@ edition: experience # Use Ibexa Connect -You can use [[[= product_name_connect =]]](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_connect/) to create workflows. +You can use [[[= product_name_connect =]]]([[= connect_doc =]]/general/ibexa_connect/) to create workflows. [[= product_name_engage =]] collects user data and passes it directly to [[= product_name_connect =]]. With this data, you can create scenarios, for example, to add a user to newsletter, or to specific user segment group. -For more information, see [[[= product_name_connect =]] documentation](https://doc.ibexa.co/projects/connect/en/latest/). +For more information, see [[[= product_name_connect =]] documentation]([[= connect_doc =]]/). ## Integrate [[= product_name_engage =]] with [[= product_name_connect =]] @@ -55,4 +55,4 @@ To do it, perform the following actions:: ![Configure Ibexa Engage](configure_ibexa_engage.png "Configure Ibexa Engage") 4\. Then, go to **Engage** -> **Integrations** -> **Push rules** to define the default or specific rules for new campaign or website. -Select the created webhook. \ No newline at end of file +Select the created webhook. diff --git a/docs/personalization/integrate_recommendation_service.md b/docs/personalization/integrate_recommendation_service.md index 76c9534295..a2049f526c 100644 --- a/docs/personalization/integrate_recommendation_service.md +++ b/docs/personalization/integrate_recommendation_service.md @@ -167,7 +167,7 @@ To let your visitors receive emails with recommendations: 1\. With the [User API](api_reference/user_api.md#post-requests), add the `e-mail` attribute (or another identifier) to the user record. 2\. Prepare an endpoint to intercept push messages and pass them on, for example, to your mailing system. -Out of many options, it could be an [[= product_name_connect =]] [webhook](https://doc.ibexa.co/projects/connect/en/latest/tools/webhooks/). +Out of many options, it could be an [[= product_name_connect =]] [webhook]([[= connect_doc =]]/tools/webhooks/). The endpoint must meet the following requirements: - must support POST requests diff --git a/docs/release_notes/ibexa_dxp_v4.4.md b/docs/release_notes/ibexa_dxp_v4.4.md index 380d469872..f61078eb30 100644 --- a/docs/release_notes/ibexa_dxp_v4.4.md +++ b/docs/release_notes/ibexa_dxp_v4.4.md @@ -89,7 +89,7 @@ You can now take advantage of [[[= product_name_connect =]]](https://www.ibexa.c an iPaaS (integration platform-as-a-service) which allows you to connect [[= product_name =]] with third-party applications. [[= product_name_connect =]] features a low-code drag-and-drop interface and hundreds of connectors to different services that help you automate business processes. -See [[[= product_name_connect =]] documentation](https://doc.ibexa.co/projects/connect/en/latest/). +See [[[= product_name_connect =]] documentation]([[= connect_doc =]]/). ![Example of an Ibexa Connect scenario](4.4_connect_scenario_example.png) diff --git a/docs/release_notes/ibexa_dxp_v4.5.md b/docs/release_notes/ibexa_dxp_v4.5.md index dbef59b14e..38d0f80037 100644 --- a/docs/release_notes/ibexa_dxp_v4.5.md +++ b/docs/release_notes/ibexa_dxp_v4.5.md @@ -211,7 +211,7 @@ For more information, see [Breached passwords](https://doc.ibexa.co/en/4.5/users ### [[= product_name_connect =]] -For list of changes in [[= product_name_connect =]], see [Ibexa app release notes](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_app_release_notes/). +For list of changes in [[= product_name_connect =]], see [Ibexa app release notes]([[= connect_doc =]]/general/ibexa_app_release_notes/). ### Deprecations diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 929d2f9b76..2971dbfa29 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -873,7 +873,7 @@ A new helper method `ibexa.helpers.contentType.getContentTypeDataByHref` has bee #### [[= product_name_connect =]] -For a list of changes in [[= product_name_connect =]], see [Ibexa app release notes](https://doc.ibexa.co/projects/connect/en/latest/general/ibexa_app_release_notes/). +For a list of changes in [[= product_name_connect =]], see [Ibexa app release notes]([[= connect_doc =]]/general/ibexa_app_release_notes/). ##### Scenario block From 0d626176367292aa6c2a38d8f50783c161422201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20D=C4=85browski?= <64841871+dabrt@users.noreply.github.com> Date: Wed, 9 Apr 2025 14:54:26 +0200 Subject: [PATCH 7/7] Fix typos --- docs/ai_actions/install_ai_actions.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/ai_actions/install_ai_actions.md b/docs/ai_actions/install_ai_actions.md index 380b3f9d83..2ffff476a7 100644 --- a/docs/ai_actions/install_ai_actions.md +++ b/docs/ai_actions/install_ai_actions.md @@ -7,7 +7,9 @@ month_change: false AI Actions are available as an LTS update to [[= product_name =]] starting with version v4.6.12 or higher, regardless of its edition. To use this feature you must first install the package. -You can then install and configure the service connectors or build your onw ones. +You can then install and configure the service connectors or build your own ones. + +## Install the framework Run the following command to install the package: @@ -50,7 +52,7 @@ Run the following command, where `` is the same name that you def This command modifies the existing database schema by adding database configuration required for using AI Actions. -!! note "Next steps" +!!! note "Next steps" Once the framework is installed and configured, before you can start using AI Actions, you can configure access to [[ = product_name_base = ]]-made service connectors by following the instructions below, or [create your own](extend_ai_actions.md#create-custom-action-handler).