Custom Agentic Chatbot with SAP AI Core and Joule Studio — Part 3 (2)

Estimated read time 10 min read

🚀 Series Overview: Custom Agentic Chatbot with SAP AI Core and Joule Studio

Part 1 — Building the Custom AI Agent BackendPart 2 (1) — Deploying the Agent on AI Core (Environment & Containerization)Part 2 (2) — Deploying the Agent on AI Core (Deployment & Testing)Part 3 (1) — Setting Up Joule Studio Connection (Destination & Environment)Part 3 (2) — Creating a Joule Skill (Design & Release)Part 3 (3) — Testing and Sharing on Work Zone

 

Part 3 (2) — Creating a Joule Skill (Design & Release)

 

In the previous part, we connected Joule Studio to our AI Core backend and tested the Action successfully. Now, it’s time to make it conversational. Now, we’ll design the full conversational flow inside Joule Studio by creating a CustomAgent Skill that links together multiple backend actions

By the end of this section, you will:

Create a new Skill in Joule StudioConfigure its input parameters and message responsesChain multiple Actions to form a complete conversational logic

Once the skill design is complete, we’ll move on in Part 3 (3) to test it live in the Joule Chat Interface and deploy it to Work Zone for organization-wide access.

 

1. Create a Joule Skill

A Skill defines how Joule interprets user messages and which Actions to trigger in response. We’ll now create a skill that connects your actions including /v2/plan action, so that the Joule chat interface can activate this skill and communicate seamlessly with your deployed AI Core backend. 

Step 1. Open the Lobby

Go to SAP Build Lobby → Create → Joule Skill. Name it something like Custom Agent, this will act as the main entry point of your agent. 

⚙️  Note: In Joule Studio, skills can be nested. Simply create your new skill inside that existing context.

Step 2. Define Skill Details

In the General tab, fill in the following fields as below example:

Name: CustomAgentDescription: A skill to activate custom agent. Activate this skill if user’s request contains “/CustomAgent”.

💡  Tip: Use an explicit activation phrase (like /CustomAgent) to ensure the skill consistently triggers only when intended, making testing smoother and more predictable.

Also configure the toggles as follows:

Allow Joule to generate a response: Off → You’ll use “Send Message” steps instead.Allow skill to be started directly by a user: On → Enables direct triggering from the Joule chat interface.

 

Step 4. Configure Skill Parameters

Next, go to the Parameters tab and define the input variables that your skill will use.
For example:

conversation_id : Used to track continuous dialogue sessions (if not provided, the backend will start a new one)message : The user’s actual input message

When parameters are defined at the skill level, Joule automatically parses values from the user’s chat input and makes them available as variables in subsequent nodes. This means you can reference them directly in your Action or Message nodes.

For example:

Use {{message}} when passing the user input to the to the /v2/plan or /v2/action-graph endpointUse {{conversation_id}} to maintain session context in AI Core side between user turns

You can also reuse the output of a previous Action in later nodes. For instance, if your /v2/plan Action returns a JSON object, its fields (like {{plan.content}}) can be referenced directly in the next Action or Send Message node. This lets your Joule Skill behave like a data pipeline, passing both user inputs and Action results through the workflow.

 

🗒  Example: Using Action Outputs in Message Nodes

This example below shows a  Message Configuration example where the output of the /v2/plan Action is referenced in the response message.

${context.joule_action_…result.conversation_id} → retrieves the conversation_id returned by the Action${context.joule_action_…result.content} → displays the generated plan content returned by the Action${context.joule_action_…result.timestamp} → shows the response time returned by the Action

 

Now that you’ve seen how each Action and Message node exchanges data, let’s look at the entire Skill flow that ties them all together.

 

  CustomAgent skill flow design

This mechanism allows you to chain multiple Actions and build a natural, multi-step conversation flow such as:

/v2/plan → /v2/action-graph → /v2/start-execution → /v2/continue-execution

Each Action node represents a backend call, while the Message nodes in between provide real-time feedback so users can monitor progress — for example, confirming when the plan is created or when the execution starts.

To ensure a continuous and contextual conversation, each API call passes a shared conversation_id variable. This allow different endpoint (such as /v2/plan, /v2/action-graph, and /v2/continue-execution) to recognize they belong to the same dialogue session, maintaining conversation state consistently across multiple backend actions. 

When the user sends the same conversation_id in subsequent chats, the agent can continue the dialogue seamlessly from the previous state, effectively enabling multi-turn conversations across different endpoints. We’ll demonstrate this continuous conversation flow in the next post.

 

Step 5. Release & Deploy Skill

Once the design is complete, click Release → Create Version → Deploy to your Environment.
After deployment, the skill becomes active in your Joule Studio environment, meaning it can now be invoked from the Joule Chat interface.

 

At this stage, your CustomAgent Skill has been fully structured – from defining parameters and linking actions to designing message nodes that visualize each execution step. You’ve established the orchestration flow that allows Joule Studio to interact seamlessly with your AI Core agent.

👉In the next post, Part 3 (3): Testing and Sharing the Skill on Work Zone, we’ll put this flow into action – testing real conversations, validating responses, and share your skill to Work Zone so users can access it as a live enterprise chatbot.

 

 

​ 🚀 Series Overview: Custom Agentic Chatbot with SAP AI Core and Joule StudioPart 1 — Building the Custom AI Agent BackendPart 2 (1) — Deploying the Agent on AI Core (Environment & Containerization)Part 2 (2) — Deploying the Agent on AI Core (Deployment & Testing)Part 3 (1) — Setting Up Joule Studio Connection (Destination & Environment)Part 3 (2) — Creating a Joule Skill (Design & Release)Part 3 (3) — Testing and Sharing on Work Zone Part 3 (2) — Creating a Joule Skill (Design & Release) In the previous part, we connected Joule Studio to our AI Core backend and tested the Action successfully. Now, it’s time to make it conversational. Now, we’ll design the full conversational flow inside Joule Studio by creating a CustomAgent Skill that links together multiple backend actionsBy the end of this section, you will:Create a new Skill in Joule StudioConfigure its input parameters and message responsesChain multiple Actions to form a complete conversational logicOnce the skill design is complete, we’ll move on in Part 3 (3) to test it live in the Joule Chat Interface and deploy it to Work Zone for organization-wide access. 1. Create a Joule SkillA Skill defines how Joule interprets user messages and which Actions to trigger in response. We’ll now create a skill that connects your actions including /v2/plan action, so that the Joule chat interface can activate this skill and communicate seamlessly with your deployed AI Core backend. Step 1. Open the LobbyGo to SAP Build Lobby → Create → Joule Skill. Name it something like Custom Agent, this will act as the main entry point of your agent. ⚙️  Note: In Joule Studio, skills can be nested. Simply create your new skill inside that existing context.Step 2. Define Skill DetailsIn the General tab, fill in the following fields as below example:Name: CustomAgentDescription: A skill to activate custom agent. Activate this skill if user’s request contains “/CustomAgent”.💡  Tip: Use an explicit activation phrase (like /CustomAgent) to ensure the skill consistently triggers only when intended, making testing smoother and more predictable.Also configure the toggles as follows:Allow Joule to generate a response: Off → You’ll use “Send Message” steps instead.Allow skill to be started directly by a user: On → Enables direct triggering from the Joule chat interface. Step 4. Configure Skill ParametersNext, go to the Parameters tab and define the input variables that your skill will use.For example:conversation_id : Used to track continuous dialogue sessions (if not provided, the backend will start a new one)message : The user’s actual input messageWhen parameters are defined at the skill level, Joule automatically parses values from the user’s chat input and makes them available as variables in subsequent nodes. This means you can reference them directly in your Action or Message nodes.For example:Use {{message}} when passing the user input to the to the /v2/plan or /v2/action-graph endpointUse {{conversation_id}} to maintain session context in AI Core side between user turnsYou can also reuse the output of a previous Action in later nodes. For instance, if your /v2/plan Action returns a JSON object, its fields (like {{plan.content}}) can be referenced directly in the next Action or Send Message node. This lets your Joule Skill behave like a data pipeline, passing both user inputs and Action results through the workflow. 🗒  Example: Using Action Outputs in Message NodesThis example below shows a  Message Configuration example where the output of the /v2/plan Action is referenced in the response message.${context.joule_action_…result.conversation_id} → retrieves the conversation_id returned by the Action${context.joule_action_…result.content} → displays the generated plan content returned by the Action${context.joule_action_…result.timestamp} → shows the response time returned by the Action Now that you’ve seen how each Action and Message node exchanges data, let’s look at the entire Skill flow that ties them all together. ⛓  CustomAgent skill flow designThis mechanism allows you to chain multiple Actions and build a natural, multi-step conversation flow such as:/v2/plan → /v2/action-graph → /v2/start-execution → /v2/continue-executionEach Action node represents a backend call, while the Message nodes in between provide real-time feedback so users can monitor progress — for example, confirming when the plan is created or when the execution starts.To ensure a continuous and contextual conversation, each API call passes a shared conversation_id variable. This allow different endpoint (such as /v2/plan, /v2/action-graph, and /v2/continue-execution) to recognize they belong to the same dialogue session, maintaining conversation state consistently across multiple backend actions. When the user sends the same conversation_id in subsequent chats, the agent can continue the dialogue seamlessly from the previous state, effectively enabling multi-turn conversations across different endpoints. We’ll demonstrate this continuous conversation flow in the next post. Step 5. Release & Deploy SkillOnce the design is complete, click Release → Create Version → Deploy to your Environment.After deployment, the skill becomes active in your Joule Studio environment, meaning it can now be invoked from the Joule Chat interface. At this stage, your CustomAgent Skill has been fully structured – from defining parameters and linking actions to designing message nodes that visualize each execution step. You’ve established the orchestration flow that allows Joule Studio to interact seamlessly with your AI Core agent.👉In the next post, Part 3 (3): Testing and Sharing the Skill on Work Zone, we’ll put this flow into action – testing real conversations, validating responses, and share your skill to Work Zone so users can access it as a live enterprise chatbot.    Read More Technology Blog Posts by SAP articles 

#SAP

#SAPTechnologyblog

You May Also Like

More From Author