SYSPRO Bot
Artificial Intelligence means customers deal with an intelligent and human-like chatbot that answers queries quickly.
Chatbots which answer and even predict customer queries automate customer service to free up resources in the business.
The (AI) web robot resides within the SYPRO ERP ecosystem and streamlines business functions through natural conversations with the BOT.
Exploring
The SYSPRO Bot lets organizations expose certain SYSPRO business functions to their Operators, Customers and Suppliers. This can either be through Bot channel contacts (i.e. Skype) or a simple web control on their website.
These business functions are exposed in natural conversations over everyday channels to which users already have access, letting them conveniently surface information and perform actions from anywhere, at any time.
The SYSPRO Bot also allows custom skills to be acquired automatically, extending the Bot's functionality beyond the scope of ERP (e.g. leave applications).
A user that communicates with the SYSPRO Bot without signing in.
The internet address where the SYSPRO Bot is hosted in the Cloud. This address will be provided by SYSPRO Cloud Services after the SYSPRO Bot Cloud configuration is completed.
This field resides on the Artificial Intelligence tab of SYSPRO's System Setup program and the value must be the same as provided by SYSPRO Cloud Services.
A Binary Large Object (BLOB) is a collection of binary data stored as a single entity in a database management system.
Blobs are typically images, audio or other multimedia objects, though sometimes binary executable code is stored as a blob.
This is a Microsoft Azure resource type that SYSPRO uses to store the binary data of the PDF documents that SRS produces, and then provide the user with a directly link to that document.
This data is securely uploaded as binary, but easily retrieved by the accessing user using the unique link provided in the reply message.
A bot, which is short for "robot", is an automated program that runs over the Internet. Some bots run automatically, whilst others only execute commands when they receive input.
The SYSPRO Bot provides functionality over the SYSPRO ERP ecosystem. For the SYSPRO Bot to service user requests effectively, skills are used and are required to define specific pieces and areas of functionality.
Users can communicate with the SYSPRO Bot via different client applications -also called channels (e.g. Skype, Webchat, Facebook).
A Bot conversation consists of the user's utterances and response messages from the SYSPRO Bot.
It must include a definitive start and end.
A Bot Conversation ends when either of the following are conversed to the SYSPRO Bot:
- Done
- Exit
The SYSPRO Bot will then respond with either:
- It's been a pleasure helping you
- Hope to chat soon… Bye.
A Bot Conversation starts when a user greets the SYSPRO Bot, which in turn responds by greeting an authenticated user or asking the user how to be of assistance.
This is the field required by a Bot skill to perform its task or action. This can vary from 1 to many fields
depending on the task / action to be done by the Bot skill.
For example:
Posting a sales order with a quantity.
The fields then required by this skill are quantity, customer and stock code.
The field(s) required to uniquely identify SYSPRO data entities and concepts.
These are used by the SYSPRO Bot infrastructure to service user requests / interactions effectively.
For example:
The skill to provide a list of invoices, requires a customer code. The Bot will ask the user for a customer and use the entered value to verify that a valid customer has been entered.
The mechanism provided by the SYSPRO Bot framework to find and search for relevant information within the context of the current skill and conversation.
The SYSPRO Bot provides functionality over the SYSPRO ERP ecosystem. In order to service user requests effectively, skills are used by the SYSPRO Bot and therefore required to define specific pieces and areas of functionality.
A skill is an area of specific functionality that the SYSPRO Bot provides for.
For example:
- To query a customer, the SYSPRO Bot utilizes the Customer.Query skill.
- When the SYSPRO Bot is asked by the user to view a specific invoice, the SYSPRO Bot utilizes the Invoice.ViewInvoice skill.
The person chatting to the SYSPRO Bot using any channel.
In certain instances the SYSPRO Bot responds back to the user using predefined templates in order to provide the information in a certain format.
These templates are called cards and are part of the Microsoft Bot framework.
The language structure, grammar and phonetics used by the SYSPRO Bot to interact with users.
The configurable linguistics architecture of the SYSPRO Bot allows for the random selection of multiple phrases.
Microsoft Azure is a cloud computing service created by Microsoft for building, testing, deploying, and managing applications and services through Microsoft-managed data centers .
It provides the following:
-
Software as a service (SaaS)
-
Platform as a service (PaaS)
-
Infrastructure as a service (IaaS)
In addition, Microsoft Azure supports many different programming languages, tools and frameworks (including both Microsoft-specific and third-party software and systems).
The SYSPRO Operator that could be linked to a user.
When the user interacts with the SYSPRO Bot, they use phrases and sentences to indicate what action is required.
These sentences or phrases are called utterances.
Applicable to SYSPRO business objects that require input options via a predefined XML structure.
Input options are specified using the relevant predefined XML structure associated with the business object. The values for the XML can be configured per business object based on user requirements.
The web chat is a stock-standard chat interface that can be hosted on a website.
A web chat can be a web control, but not all web controls are necessarily web chats. The web chat is a form of interacting with the Bot (i.e. a channel).
A technical reference for functionality that can be hosted within a web browser.
Starting
The following requirements are necessary for the feature to work:
This feature is only available from SYSPRO 8 2018 R2 onwards.
-
Exposed SYSPRO 8 e.net Communications Load Balancer service (REST port).
The SYSPRO Bot requires access to this service's REST port in order to pick up the Bot skills and to authenticate its conversations.
This requires exceptions in the App Server's firewall, as well as exceptions and routing information in the Company's DNS configuration. -
Configured SMTP settings in SYSPRO's System Setup program.
This is used by the SYSPRO Bot for email functions.
- SRS Server Side printing.
-
SYSPRO 8 Reporting Host Service (externally accessible).
This is used by the SYSPRO Bot for document functions.
This requires exceptions in the App Server's firewall, as well as exceptions and routing information in the Company's DNS configuration.
- The UI for the Skills and Menu management is in development and will be added with a future release of SYSPRO 8.
- The SYSPRO Bot SDK is currently in development and will be added with a future release of SYSPRO 8.
- Limited configuration using the Espresso Custom Configuration program.
- Modifications must be made in Microsoft SQL Server currently .
- The ability to publish certain Bot channels is currently in development and will be added with a future release of SYSPRO 8 (i.e. publishing the SYSPRO Bot to the Skype's public directory).
- Only posting of automatic numbering keys is currently supported.
Contact SYSPRO Cloud Services to request a quote for the SYSPRO Bot Server.
Once you have accepted the quote, SYSPRO Cloud Services actions the following:
- Deployment of the SYSPRO Bot Server to Azure, with all the relevant resources.
- Configuration of your requested channels.
- Connection between the SYSPRO Bot Server and the exposed SYSPRO 8 e.net Communications Load Balancer endpoint.
Once this has been configured, SYSPRO Cloud Services will provide you with an Azure web address and Bot channel contact URLs.
Most of the Bot Server and channel configuration is handled by SYSPRO Cloud Services. However, after the initial configuration is complete, you must capture certain settings within SYSPRO:
Once you receive the Azure web address from SYSPRO Cloud Services, you need to capture the Bot configuration within the Artificial Intelligence tab of the System Setup program.
Accessing documents from the SYSPRO Bot requires Server-side Printing.
For this reason, ensure that the following is configured within the Reporting tab of the System Setup program:
- Server-side reporting using SQL.
- The Reporting Service field within the Server-side configuration group must be entered correctly with an external facing endpoint.
Email functions from the SYSPRO Bot require SMTP configuration.
Ensure that you configure the following for each company that requires access to emailing through the SYSPRO Bot:
- SMTP server IP address
- Outgoing email address
- Username
- Password
- Server port
- Use SSL
Solving
The Bot is refreshing the skills list.
The user's operator does not have access for the requested skill.
The SYSPRO 8 e.net Communications Load Balancer is out of reach.
This could be due to the service or the App Server’s firewall not running currently.
This error occurs during a skill request. The skill failed to complete, but the conversation can continue.
This is a mandatory time-out. The SYSPRO Bot might still be processing your previous request and will reply shortly.
For the SYSPRO Bot, a conversation starts when the user greets the Bot.
It ends when the user selects Done (or sends 'Exit') and the SYSPRO Bot subsequently responds with It's been a pleasure helping you or Hope to chat soon… Bye J”.
At any time, you can send 'Exit' and the Bot will end the conversation. The next conversation will begin fresh.
Searches use the same configuration as SYSPRO's predictive search.
This can be configured to search on additional columns within the table or linked tables, however the first and second returned columns will be displayed in the Search results carousel.
If only one result is being returned by the search, then that key value will be selected and the search will exit.
You can also search by entering the key field’s description.
A SYSPRO Bot SDK with a Visual Studio plug-in is currently in development. When it is released you can use C# to develop the following:
- Custom skills
- Cards
- Custom searches
The first Sign In button on the menu is the option to sign in and selecting this option or action calls the Sign In skill.
Once selected, it loads the sign in card on which you can sign in (this wording may differ depending on the channel in use - e.g. Skype refers to it as 'connect').
Please contact SYSPRO Cloud Services for a quote.
After deployment, SYSPRO Cloud Services will provide you with a Web Control embedded code.
This is a snippet of HTML code that you can inject anywhere on your website.
Using
Users use their SYSPRO Operator code to sign in and authenticate themselves. This authentication is per user, per channel.
The user will remain authenticated on the channel until they either sign out or manually get removed from the system-wide database BotOperatorMapping table.
Users can remain authenticated on different channels at the same time.
If an authenticated user returns to a conversation after a long period of inactivity, the bot will welcome him with his SYSPRO Operator name and state which company he is logged in as.
For example:
This period is dependent on how busy the Bot has been and if the Azure service has been set as always on.
-
Unauthenticated users will use _BOT security that includes program access for business object calls.
-
Authenticated users make use of their respective Operator Functional Role and use the Operator Business Object access security.
-
Operator's functional areas are not applied.
-
If your operator is set as Customer or Supplier, then these related fields within the SYSPRO Bot will be set as the Customer or Supplier code against your operator.
These keys can’t be overridden and will remain in context.
The SYSPRO Bot secure sign in web page allows for the following customization from within SYSPRO's System Setup program (Artificial Intelligence tab):
-
Header Image
-
Organization Name
-
Organization Website
The following example Webchat sign in page highlights the areas where this customization will reflect:
The SYSPRO Bot menus can be customized by:
-
System
-
Company
-
Role
-
Operator
You can also customize access to skills from the menu.
The menus and skill access can be edited using Microsoft SQL Server on the system-wide database (BotCustomization table with the StoreName key of the XML to be edited).
The recommended customization for unauthenticated users is as follows:
(Saved as LevelId = 4 and LevelValue = “__BOT”)
-
The SkillName element must be the skill name.
-
The AddToMenu element specifies if the skill should be added to the User’s Main Menu.
-
If no configuration is found, access will be given to all skills.
The SYSPRO Bot can use its own document formats which can be defined from within the System Setup program of SYSPRO.
Documents require SRS Server side printing with an exposed SRS Host service port.
If you enable the Blob Storage Azure option when configuring your Bot, the documents are stored in Azure Blob storage. This allows the URL to your document to remain valid for longer, compared to the standard memory storage.
You can customize your HTML emailing template using Microsoft SQL Server, on the system-wide database.
The EspDataStore table with the StoreName key of “SYSPROBotDocumentEmail” contains the used HTML template with the following placeholders:
-
{DocumentType}
-
{DocumentNumber}
-
{BotName}
Standard configuration example:
The SYSPRO Bot contains phrases, which are customizable in Microsoft SQL Server on your system-widedatabase (HrmLinguistics table).
Available customization:
-
Edit existing phrases
-
Remove existing phrases
-
Add new phrases
There must always be at least 1 phrase per area.
Area |
Existing Phrases |
---|---|
AnythingElse |
|
MenuTitle |
|
MessageOptions |
|
SearchPrompt |
|
XML Parameters can be edited and saved using the Espresso Custom Configuration program in SYSPRO.
The XML inputs that are configurable include:
-
ARSQRY XMLIn
-
QOTQRY XMLIn
-
QOTTQI Parameter
-
QOTTQI XMLIn
-
SORQID XMLIn
-
SORQPL XMLIn
-
SORQRY XMLIn
-
SORTOI Change XMLIn
-
SORTOI Parameter
-
SORTOI XMLIn
-
SORTOS Parameter
-
SORTOS XMLIn
-
WIPQJS XMLIn
-
WIPTJB Parameter
-
WIPTJB XMLIn
The XMLIn blobs can be edited using Microsoft SQL Serveron the system-widedatabase (EspDataStore table with the StoreName key of the XML to be edited.
For example:
The following channels can be used to communicate with the SYSPRO Bot:
-
Web Chat
-
Skype
-
Skype for Business
-
Microsoft Teams
-
Telegram
-
Kik
-
GroupMe
-
Facebook Messenger
The setup of these channels are controlled by SYSPRO Cloud Services, but some would require additional configuration from your side.
For example: The Facebook Messenger channel requires configuration from the SYSPRO Cloud Services and from the customer’s Facebook account, as both configurations require keys generated from the other configuration.
After channels are configured, you are supplied with a contact URL to add the Bot as a contact.
-
Some channels also offers a publish option, where your Bot can be added from the public directory.
-
Some channels also supply a web control.
With just a few lines of code, these controls can be added to your website and the conversations can then be hosted there.
- Add the SYSPRO Bot as a contact on your selected channel, or use the Web control.
-
Start a conversation with a greeting (e.g. 'hi').
- The SYSPRO Bot will respond with either a menu listing or an open ended question (depending on your company’s configuration preferences in SYSPRO).
-
Request a skill (e.g. 'Create sales order')
- If the skill requires any unknown keys, it will ask you to enter these or select a value, and then continue to the next key.
- Once all the keys has been acquired, the SYSPRO Bot will process the requested skill and provide an output.
- If the skill fails, the Bot will advise you and provide an error description.
After a skill completes, the SYSPRO Bot is ready for the next skill to be requested.
- If the next skill requires some of the same keys, they will be remembered
- Any additional keys will be asked for in sequence and extra keys from the previous skill will be discarded
- If the same skill is being called again, all keys will be discarded
Additional training on the SYSPRO Bot language understanding is available from http://www.luis.ai, for contributor accounts added by SYSPRO Cloud Services.
Training options available include:
-
Add new Intents
This is useful for custom developed skills or for linking to untrained SYSPRO skills.
-
Add new Entities
These are the keyfields that the custom or SYSPRO skill requires.
-
Add new Utterances
These are example phrases that users will send to the SYSPRO Bot requesting a skill to be executed.
After adding any new training data in the LUIS portal, you need to train the LUIS model with these new aspects:
-
Please wait for the SYSPRO Bot to complete its current process and respond, before sending a new message.
-
If you experience a short delay (a few seconds) after sending your first message to the SYSPRO Bot, please be patient as this delay is most likely due to the Azure App Service starting up.
-
When searching for a particular key field, typing '*' returns the first 5 records.
-
No validation is done on non-SYSPRO key fields (i.e. quantities).
Referencing
The following skills are available:
Skill Description |
Skill Name |
---|---|
Email Document |
Admin.EmailDocument |
Administration Menu |
Admin.Menu |
My Details |
Admin.MyDetails |
Sign In |
Admin.SignIn |
Sign Out |
Admin.SignOut |
Customer Query |
Customer.QuerySkill |
Delivery Note |
Document.DeliveryNote |
Delivery Note Reprint |
Document.DeliveryNoteReprint |
Generate Invoice |
Document.GenerateInvoice |
Reprint Invoice |
Document.InvoiceReprint |
Order Acknowledgement |
Document.OrdAck |
Order Acknowledgement Reprint |
Document.OrdAckReprint |
Query Generic Fetch |
Generic.FetchSkill |
View Invoice |
Invoice.ViewInvoice |
View Invoices |
Invoice.ViewInvoices |
Create Job |
Job.CreateJob |
Create Non-stocked Job |
Job.CreateNSJob |
Job Menu |
Job.JobMenu |
Query Job |
Job.QueryJob |
Query Job Materials |
Job.QueryJobMaterials |
Price Query |
Pricing.QueryPrice |
Create Quote |
Quotes.CreateQuote |
Query Quote |
Quotes.QueryQuote |
Add Sales Order Line |
SalesOrder.AddSalesOrderLine |
Create Sales Order |
SalesOrder.CreateSalesOrder |
Query Sales Order |
SalesOrder.QuerySalesOrder |
Sales Order Menu |
SalesOrder.SalesOrderMenu |
The following keyfields are required by the various skills within the SYSPRO Bot:
Skill Description | Skill Name | Required keyfields |
---|---|---|
Email Document |
Admin.EmailDocument |
|
Administration Menu |
Admin.Menu |
|
My Details |
Admin.MyDetails |
|
Sign In |
Admin.SignIn |
|
Sign Out |
Admin.SignOut |
|
Customer Query |
Customer.QuerySkill |
|
Delivery Note |
Document.DeliveryNote |
|
Delivery Note Reprint |
Document.DeliveryNoteReprint |
|
Generate Invoice |
Document.GenerateInvoice |
|
Reprint Invoice |
Document.InvoiceReprint |
|
Order Acknowledgement |
Document.OrdAck |
|
Order Acknowledgement Reprint |
Document.OrdAckReprint |
|
Query Generic Fetch |
Generic.FetchSkill |
|
View Invoice |
Invoice.ViewInvoice |
|
View Invoices |
Invoice.ViewInvoices |
|
Create Job |
Job.CreateJob |
|
Create Non-stocked Job |
Job.CreateNSJob |
|
Job Menu |
Job.JobMenu |
|
Query Job |
Job.QueryJob |
|
Query Job Materials |
Job.QueryJobMaterials |
|
Price Query |
Pricing.QueryPrice |
|
Create Quote |
Quotes.CreateQuote |
|
Query Quote |
Quotes.QueryQuote |
|
Add Sales Order Line |
SalesOrder.AddSalesOrderLine |
|
Create Sales Order |
SalesOrder.CreateSalesOrder |
|
Query Sales Order |
SalesOrder.QuerySalesOrder |
|
Sales Order Menu |
SalesOrder.SalesOrderMenu |
|
The following cards are available:
Card Name |
Card Description |
---|---|
Card.CustomerCard | Customer Card |
Card.DocumentDownloadCard | Document Download Card |
Card.GenericFetch | Generic Fetch Card |
Card.InvoiceCard | Invoice Card |
Card.InvoicesCard | Invoices Card |
Card.JobCard | Job Card |
Card.JobMaterialsCard | Job Materials Card |
Card.MenuCard | Menu Card |
Card.PriceQuery | Price Query Card |
Card.QuoteCard | Quote Card |
Card.SalesOrderCard | Sales Order Card |
The following keyfields are required by the various cards within the SYSPRO Bot:
Card Name | Card Description | Required keyfields |
---|---|---|
Card.CustomerCard | Customer Card |
|
Card.DocumentDownloadCard | Document Download Card |
|
Card.GenericFetch | Generic Fetch Card |
|
Card.InvoiceCard | Invoice Card |
|
Card.InvoicesCard | Invoices Card |
|
Card.JobCard | Job Card |
|
Card.JobMaterialsCard | Job Materials Card |
|
Card.MenuCard | Menu Card |
|
Card.PriceQuery | Price Query Card |
|
Card.QuoteCard | Quote Card |
|
Card.SalesOrderCard | Sales Order Card |
|
LUIS (Language Understanding Intelligent System) is a machine learning-based service that is used to build natural language understanding into the SYSPRO Bot.
Designed to identify valuable information in conversations, LUIS interprets user goals (intents) and distills valuable information from sentences (entities), for a high quality, nuanced language model.
The SYSPRO Bot is trained with the following intents (skills):
-
Customer.QuerySkill
-
Generic.FetchSkill
-
Invoice.ViewInvoice
-
Invoice.ViewInvoices
-
Job.CreateJob
-
Job.CreateNSJob
-
Job.QueryJob
-
None
-
Pricing.QueryPrice
-
Quotes.CreateQuote
-
SalesOrder.CreateSalesOrder
-
SalesOrder.QuerySalesOrder
The SYSPRO Bot is trained with the following entities (keyfields):
-
ARInvoice
-
Customer
-
Job
-
KeyFieldName
-
KeyFieldValue
-
Non-StockedCode
-
Quantity
-
SalesOrder
-
SearchFieldNames
-
StockCode
The SYSPRO Bot is trained with the following utterances (phrases):
Intent (Skill) | Utterances (Phrases) |
---|---|
Customer Query (Customer.QuerySkill) |
|
Query Generic Fetch (Generic.FetchSkill) |
|
View Invoice (Invoice.ViewInvoice) |
|
View Invoices (Invoice.ViewInvoices) |
|
Create Job (Job.CreateJob) |
|
Create Non-stocked Job (Job.CreateNSJob) |
|
Query Job (Job.QueryJob) |
|
None |
|
Price Query (Pricing.QueryPrice) |
|
Create Quote (Quotes.CreateQuote) |
|
Create Sales Order (SalesOrder.CreateSalesOrder) |
|
Query Sales Order (SalesOrder.QuerySalesOrder) |
|