Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
Showing results forΒ 
Search instead forΒ 
Did you mean:Β 
This blog is part of the SAP Conversational AI Tutorial Challenge 2021 and I would like to share our business case "ProjectVoiceBot" with you. With this bot, we are able to manage and control SAP PPM projects via voice.

What is the use case about?

Within our itelligence team we came up with the idea of a bot which supports project managers in their daily life. These project responsables would like to check the status of their projects no matter where they are (🏒, πŸ–, πŸ”, πŸ›οΈ...). Therefore, we created a digital assistant who is available 24/7 and can be reached via voice or text.

How did we start?

In order to discover all use cases, we did a creative workshop with the team. This workshop included first prototypes to validate the idea. Then we started to build the bot.

Results of our workshop

Step-by-step guide

First, I would like to explain you our four main categories of possible questions. Then we will have a look on the channel connection and the backend connection.

General project questions

User might be interested in an overview about current projects. One example is "Are there any critical projects?" In this case, an intent is triggered to solve this question: @ask-projects-with-status. This intent includes expressions for requesting the current status of projects. This means, user can ask for projects which have the severity "critical", but they can also ask for projects with the severity "OK" or "not in plan." All possible values for "Severity" are defined in the corresponding entity (called #severity). This also helps the bot to identify the intent "@ask-projects-with-status" with an higher accuracy, as the entity #severity is included in the expressions.

Intent for asking about the status of multiple projects


As a next step, the corresponding skill is built. The intent explained above is triggering this skill:

Trigger for Skill Status of projects


In the requirements section, there is one requirement: a value for the severity has to be known to the bot and stored in the bot-memory. Since this entity is included in the intent, this requirement is usually met automatically. Afterwards a service of our middleware is triggered via URL by our action tab. This service connects to the backend SAP system and receives information about the requested projects. Here you can see an example of the API response:
"conversation": {
"id": "test-1611310842386",
"language": "en",
"memory": {
"severity": {
"confidence": 0.99,
"raw": "critical",
"value": "critical"
"apiResponseData": [
//response data of the backend API]
"skill": "call-api",
"replies": [
"type": "text",
"content": "There are 15 projects with the severity critical. Do you want to see the whole list?"

As you can see, the bot returns the amount of projects with the severity the user mentioned in his question. Next, the bot triggers a second skill and asks the user, if he wants to know the details about the projects. In this case, the requirement is the intent "@yes" or "@no" from the user (Question: "Do you want to see all relevant projects?").

Requirement: Yes or No?


If the answer is "yes", the bot shows details about the projects. This is also done via API-Service. As a result, the user receives information about the requested projects and can dive deeper into one of the projects.

Project-related questions

To dive deeper, users can request information about a specific project, for example about the manager of a certain project. This case is also triggered with a corresponding intent. Another entity-type was created in order to enhance the "brain" of the bot about how typical project names or numbers look like. Using an API service the bot requests the name of the responsible project manager and sends the response to the user.

User-related questions

Another category are user-related questions (e.g. "What is the status of my project?"). Since this category is connected to authorization topics and user information, it is not in scope of this blog post.


The last category are actions triggered by the user. This means, the user wants to change e.g. the status of a certain milestone. In order to achieve this, yet another intent was created. The corresponding skill has the following requirements:

  • number of the project (#projectnumber)

  • name if the milestone to be changed (#milestone)

  • new severity of the milestone (#severity)

If the user has given all three requirements, a POST-request is sent to the middleware in order to update the milestone. Afterwards, the memory fields for the milestone and severity are unset in the memory. The project number is kept, since project managers often want to change multiple milestones.

Connecting the backend

We have connected the bot via SAP Cloud Platform (SCP) to our S/4 HANA system. A node.js-server sends and receives data using a destination in the SCP connected to the backend system. On the backend system, a standard oData-service is triggered.

This means we have a direct integration into the SAP PPM module. All projects can be managed and controlled with the "ProjectVoiceBot."

Connecting user channels

There are several possibilities to connect the ProjectVoiceBot to end user channels. As the bot name is already indicating, a voice channel was the primary goal. Therefore, we decided to use Amazon Alexa. First, the whitelisting had to be done. Next, the intents "CONVERSATION_START" and "CONVERSATION_END" had to be created and integrated in the scenario. The phrase "project voice" was used an invocation name.

Expert hint for invocation name: use two words and write everything in lowercase letters in order to have a working integration to Alexa

One the Alexa Dev Console, several users can be added as beta users in order to validate our bot. Moreover, we have deployed a Telegram bot as well as a SAP CAI Web Client for Fiori.



With theses example you are able to create your own "ProjectVoiceBot" and manage your projects wherever you are. On top of that, the voice integration increases the user experience.

Let me know what you think about this case, and give us a like, please πŸ™‚
If you are interested in more use cases and our workshop, feel free to contact me.
Labels in this area