Skip to Content
Technical Articles
Author's profile photo Sabine SMAI

Step by step SAP Intelligent RPA and SAP Conversational AI Integration (with input/output)


There is already a blog post on this subject but I wanted to go deeper into this subject, in particular by specifying how to define an input from a response from the SAP Conversational AI to SAP Intelligent RPA and an output from SAP Intelligent RPA to SAP Conversational AI.

Main Part:

The prerequisites are:

  1. SAP Intelligent Robotic Process Automation  (Desktop studio) – Installed on your machine
  2. SAP Intelligent Robotic Process Automation (Desktop Agent) – Installed on your machine
  3. Factory – Access to upload project to cloud
  4. Client ID and Secret – To setup Integration
  5. SAP Conversational AI – To create chat bot
  6. Chrome web browser – Live the chat bot


1 . To do a project with input and output


Open Desktop Studio.

After creating a project, when we add the workflow, it is very important to define in the context.

We will create a context like this :

  • IO (folder)
    • ws_text
    • input


In the workflow properties you must define the “Input Data Manager” property and the Input and output :



This project is very simple, it will read a text file and send the content in output.

  • The first activity is Read text :



  • And the second is the activity Log :



You will find the generated code here, I just added a line of code to log the input parameter in the step “Read_a_text_file”.


// ----------------------------------------------------------------
//   Step: Read_a_text_file
// ----------------------------------------------------------------
GLOBAL.step({ Read_a_text_file: function(ev, sc, st) {
	var rootData_IO =;
	ctx.workflow('integration', '1ed531ff-0e07-4acd-943e-d72247328ee0') ;
	ctx.log("param entry :" + rootData_IO.input+ ".", e.logIconType.Info);
	// Reads the content of a text file.
	var file = ctx.options.path.local + "\\sample.txt";
	var text =, e.file.encoding.UTF8);
	rootData_IO.ws_text = text;
	sc.endStep(); // Write_log

// ----------------------------------------------------------------
//   Step: Write_log
// ----------------------------------------------------------------
GLOBAL.step({ Write_log: function(ev, sc, st) {
	var rootData_IO =;
	ctx.workflow('integration', 'ed195c97-52af-42e1-8e65-f0f9577fee91') ;
	// Add a message to the log file and in the debug window along with a severity level.
	ctx.log(rootData_IO.ws_text, e.logIconType.Info);
	sc.endStep(); // end Scenario


Save the project test and create an export of the project (Menu File -> Export Project).


2 . In the factory:

Import the package ““ (export package of the project) into factory :


Make sure that the scenario has been enabled “Make the scenario usable as a skill”, then click on I/0 :



Save and generated the package.


  • Create a trigger on an environment for this package , chose API, click on Create.



Use the copy button to copy the data into a text file. You will need it in the chatbot configuration.



The two important information from the Api Trigger are “URL” and the contains of “Payload sample”

You have also to retrieve the apiKEY into the environment and save the value in a text file



At this time, we can test the bot with a launch with postman see the documentation:

add a trigger of type API


3. Create a chatbot

See the documentation of SAP Conversational AI : Here

On your home Page click on New Bot :




Click on “Perform Actions” :


Once you have click you will arrive on this page :

Now you have to choose some options :

2 – Select predefined skills for your bot

  • You can choose “Greetings”

3 – Create your bot

  • You fill the name of your SAP Conversational AI ( here I have choose bintegration)

4 – Data Policy

  • Choose Non-personal
  • Choose Store
  • Choose Non-vulnerable

5 – Bot visibility

  • Choose Public


Then click CREATE A BOT, after few minutes you have this screen :



If you want, you can delete the Intents goodbye and greetings.



Then you click on Create a new intent :



For my chatbot I have delete the intents goodbye and greetings and create a new intent system.

Click on the intent system :


You can add expressions or delete this :




Then click on the tab “Build” and add skill


After you’ve clicked on Add the skill “integration_check” is created :





Click on the link inside the skill which is called “integration_check” we see this screen :




Click on to the tab trigger and add a condition.




Click on the tab requirements

Enter #person as input  :


Then click on NEW REPLIES , (for the case If #input is missing) and click on SEND MESSAGE


Choose Text then Type the message “give your name please ?” and save :



This screen is displayed :




Click on the tab actions, then Click on “CONNECT EXTERNAL SERVICE” then choose “CONSUME API SERVICE”.


Set the ‘url’ of the trigger (see below contains of URL )  in the API Service Configuration after POST.

HTTP Method: POST 
Input schema: {
    "$schema": "",
    "type": "object",
    "properties": {
        "input": {
            "type": "string",
            "description": "Inherited from IntegrationC."
Payload sample: {
    "invocationContext": "${invocation_context}",
    "input": {
        "input": ""



Fill the tab authentication and select OAuth2 Authentication:



Fill the Client Id, Client Secret and Authorization URL :




Ask your administrator to provide the following information :

  • Client ID.
  • Client Secret.
  • Access Token URL: you need to copy this from the url property in the service key. You will find the url property under uaa



You need to add the suffix “/oauth/token” to this URL to form the Access Token URL :

https://uaa-url-domain-.. .com/oauth/token

The value of irpa-api-key is the API key of your environment


Then fill the contains of the body


With this payload

    "invocationContext": {
      "conversationid" : "{{conversation_id}}"
    "input": {
        "input": "{{memory.input.raw}}"

The first element defines the conversationid

The second element of the body is the structure of the second element of the Payload sample of your Api Trigger, the contains will be the information of the answer from the chatbot :                          “{{memory.input.raw}}”.


Then it is important to add this option at the end of the action UPDATE CONVERSATION , then choose RESET CONVERSATION :


Now we can trigger a job and check if that the job is in success into the factory.



4 . Now we can add SAP Conversational AI Notifier


Into the factory you have to add at least one SAP Conversational AI notifier on your API trigger.

Here, I have initialized 2 SAP Conversational AI notifiers, the first will be triggered when the bot starts and the second if the bot has been executed successfully. (you can add others CAI notifiers).

Before to do this you have to retrieve the token of your chatbot.

To do this in the chatbot configuration click on setting on the top right and copy the Developer token



On your environment of the factory click on add Notifier of the trigger.

Select CAI , click on Next

For the first SAP Conversational AI Notifier

  1. Choose Start (Notify on)
  2. Put it into the field token.
  3. And initialize the Conversation ID with ${invocation_context.conversationid}


For the second SAP Conversational AI notifier

  1. Choose Success (Notifier on)
  2. Put it into the field token.
  3.  Initialize the Conversation ID with ${invocation_context.conversationid}
  4. In the message content put : Success !!!! result : BOT ${output.ws_text} :


The  SAP Conversational AI  notifier must be tested from a web page:

To make the contains of this web page in the chatbot

In the tab connect of the chatbot configuration, click on create


Copy the information of the contain of Web Client script in an editor text, save with extension html



Code in the editor text :

When you have launched this page in a browse you will see this result


“Hello from my IRPA bot” send when the bot start

“Success !!!!

result : Le monde est vaste , explorons le.” is sent when the bot finish with success



Logs in the bot



Now you know exactly how to define parameters between SAP Intelligent Robotic Process Automation and SAP Conversational AI. If you face any difficulties in implementing the above process steps, you can leave your comments or queries in this blog post, will try my best to respond at the earliest.


Thanks for your time!

Sabine Smaï


Learn More

For more information on interface of SAP Intelligent RPA and SAP Conversational AI.

Do check out this blog post where we can also avoid node service implementation.

and see also this blog post.

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Paul PINARD
      Paul PINARD

      Hello Sabine,

      Thank you for this great blog post, pretty sure it will be useful for a lot of people!

      Would you be able to add the "SAP Conversational AI" tag in your article as a primary tag so people from the SAP Conversational AI community can see it as well?



      Author's profile photo Drashti Patel
      Drashti Patel

      Hello Sabine SMAI


      I followed all the steps mentioned in your blog, but facing an error in iRPA factory - "Your job cannot be distributed because no agent is defined in your environment".

      Though I have added an agent and connected it with my local desktop agent.




      Author's profile photo Sabine SMAI
      Sabine SMAI
      Blog Post Author



      Have you share your agent with the agent group see in the doc help portal :

      in the factory can you see your agent :





      Author's profile photo Vladimir Kosovtsev
      Vladimir Kosovtsev

      This is actually brilliant one, Sabine. As far as the info on this matter is scarce or spreaded all over the blogs and help topics but never sufficient, this one is so much helping.


      Tho I can't  still figure out about that Token field in p.4 Notifications, and can't understand why invocontext in_RPA is like conversation_id while RPA_out is like conversationid.

      1. Choose Success (Notifier on)
      2. Put _it_ into the field token. It what? Can't figure this out.

      Oh, sorry, that is the Developer token

      Before to do this you have to retrieve the token of your chatbot.

      To do this in the chatbot configuration click on setting on the top right and copy the Developer token

      thank you, you're actually a hero. Kindest regards.

      Author's profile photo alex araujo
      alex araujo

      Hi guys,

      My notifier status return is always 401, I tested it by postman and it works. Any idea?​