48 DA as an Oracle Service Cloud Agent

Oracle Service Cloud chat lets your customer representatives (agents) serve your customers in real time through typed conversations. You can turn a digital assistant into an automated agent that participates in Oracle Service Cloud chats in much the same way that human agents do. In cases where the digital assistant can't assist the customer, it can transfer the conversation to a live agent. This automated agent will be available 24 hours a day, 7 days a week, even when all human agents are busy.

With Oracle Service Cloud chat service, you might find that your agents spend the bulk of their time on tasks that an automated agent can easily handle, such as answering a frequently-asked question or tracking a package. To minimize the number of chats that your agents must handle, and to reduce customer wait times, consider first routing your chat sessions to a digital assistant. The digital assistant can deal with the easy tasks, and, for the more complex ones, gather essential details before transferring the chat session to a human agent. Your agents will thus provide more value to your company by only spending their time where they can add the most value.

Note:

Oracle Digital Assistant supports digital-assistant-agent integration with Version 19C (and later) of Oracle Service Cloud. Starting with Version 20A, Oracle Service Cloud supports the Oracle Inlay Toolkit embedded chat for automated agents. It does not support Proactive chat inlay for automated agents.

The Digital Assistant as Agent Framework in Action

Here's a high-level overview of how Oracle Service Cloud Chat interacts with a digital-assistant agent:

  1. A customer initiates a chat, which is routed to a Oracle Service Cloud digital-assistant agent. This is a special automated agent that's actually the digital assistant.

  2. The customer converses with the digital assistant instead of a human agent.

  3. If the digital assistant discerns that the customer needs to speak with a human agent, it can transfer the chat to an agent who's assigned to handle such transfers.

How the Digital Assistant as Agent Framework Works

These steps describe how a customer requests a chat, how Oracle Service Cloud determines whether to route the chat request to a digital assistant, and what can happen after the chat request is routed to the digital assistant.

  1. A customer submits a chat request from a Oracle Service Cloud chat launch page

  2. To determine where to route the chat request, Oracle Service Cloud completes these steps:

    1. It uses rule processing to decide which queue to route the chat request to.

    2. It looks for the profile that's associated with that queue.

    3. It determines which agents are associated with the profile, and then routes the chat request to an available agent. It could be a human agent or a digital assistant agent.

    You'll learn how to configure this setup in Task 2: Configure Oracle Service Cloud.

  3. If the agent is a digital-assistant agent, then the conversation is routed to the digital assistant that's associated with the agent's DA-as-Agent channel. Otherwise, it's routed to a human agent. When the conversation is routed to a digital assistant, the subject is passed to the digital assistant as the initial utterance. The other values that the customer entered on the chat launch page are passed in a customFields array as described in Use Contact Info in the Dialog Flow.

    You'll learn how to associate a digital assistant with an agent's DA-as-Agent channel in Task 3: Sign Your Digital Assistant into Oracle Service Cloud.

  4. Oracle Service Cloud opens an Oracle Service Cloud chat page that's connected to the agent or digital assistant and the customer can start chatting with agent.

  5. If the agent is a digital-assistant agent, it can transfer the conversation to a human agent, just like a human agent can transfer a conversation to another human agent. When this happens, Oracle Service Cloud uses rule processing to decide which queue to route the chat request to.

    You'll learn how to transfer the conversation to a human agent in Enable Transfer to a Human Agent. You'll learn how to set up the rules for this transfer in Task 2: Configure Oracle Service Cloud.

Automated Agent Assistant Sample

The Skill Store offers the sample Automated Agent Assistant digital assistant, which not only shows how to build a digital assistant that acts as an agent, but contains a sample framework for integrating with Oracle Service Cloud Knowledge Foundation.

To learn how to use this sample to build your own digital assistant that integrates with Oracle Service Cloud, see Automated Agent Assistant Sample.

Basic Steps for Creating a Digital-Assistant Agent

The DA as Agent channel, along with the System.AgentTransfer component, lets you integrate a digital assistant with Oracle Service Cloud Chat. Here are the basic steps. We'll go into the details later.

  1. Build a DA-as-Agent digital assistant: You build your digital assistant similar to how you build one for a messaging platform. The main difference is that the dialog appears in an Oracle Service Cloud chat console or web page. For the cases where the customer needs to chat with a human, you use the System.AgentTransfer component to transfer the chat to an agent.
  2. Configure Oracle Service Cloud: In Oracle Service Cloud, you need a digital-assistant profile for a digital-assistant agent . You also need a rule to direct the desired chats to the digital-assistant profile and a rule to handle transfers from the digital-assistant agent to a human agent.
  3. Sign your digital assistant into Oracle Service Cloud: In Oracle Digital Assistant, you create a DA as Agent channel that associates your digital assistant with the Oracle Service Cloud digital-assistant agent. When you enable the channel, the digital assistant is signed in as the digital-assistant agent, and is ready to handle customer chat requests.

After you publish your digital assistant, you'll want to periodically run Retrainer reports to see if you need to improve intent resolution for any intents. See Apply the Retrainer.

You also might want to look at the overview report on the skill's Insights Insights icon page to compare the number of conversations that were handled by the skill against the number that were transferred to an agent. The number of conversations that resolved to system.RequestAgent, system.Unsatisfactory, and other intents that transition to agent transfer are good escalation indicators.

Task 1: Build a DA-as-Agent Digital Assistant

Build the skills that you need for the DA-as-agent digital assistant, publish them, and then add them to the digital assistant that will act as an agent in Oracle Service Cloud. Typically, you'll need just one skill, but you can have more.

You can build your digital assistant from scratch, or you can clone the Skill Store's Automated Agent Assistant digital assistant and it's Automated Agent Conversation skill to create the base for your agent digital assistant. The Automated Agent Conversation skill includes the agent-transfer dialog flow. It also includes intents that handle the following user scenarios. These intents are seeded with hundreds of example utterances.

  • Starting the conversation with a greeting, such as "Are you there?"

  • Asking for an agent, such as "Can I chat with a human?"

  • Expressing satisfaction with a response, such as "thanks" and "gotcha".

  • Expressing dissatisfaction, such as "Did you misunderstand my question?"

  • Entering the prelude to another question, such as "Also I want to ask".

  • Indicating that they are leaving, such as "Bye for now".

The Automated Agent Conversation skill also has examples for using answer intents and knowledge search integration.

When you build your digital assistant, consider these scenarios:

  • The customer isn't sure what they can do with an automated assistant: Create a help skill or add a help state to an existing skill. Then, do one of the following:

    • Single-Skill Digital Assistant: In the skill, go to Settings > Digital Assistant and set Help State to the name of the skill's help state. Note that the Automated Agent Conversation sample sets this to welcome.

    • Multiple-Skill Digital Assistant: In the digital assistant, go to Settings > Configurations and set these conversation parameters to point to the appropriate state in the help skill.

      • Digital Assistant Custom Help Skill

      • Digital Assistant Custom Help State

  • The customer wants something that a digital assistant isn't set up to handle: Do one of the following:

    • Single-Skill Digital Assistant: In the skill's System.Intent state, add an unresolvedIntent action that handles requests that are out of scope for the skill. For example, the Automated Agent Conversation sample transitions unresolved intents to a state that searches the knowledge base for an answer, and, it if can't find one, it tells the user they can ask to speak to an agent.

      Also add an intent and action that transfers to a System.AgentTransfer state. If you are using a clone of Automated Agent Conversation, then the dialog flow does this already.

    • Multiple-Skill Digital Assistant: In the digital assistant, go to Settings > Configurations and set these conversation parameters to point to the state that starts the dialog flow for handling out-of-scope requests.

      • Digital Assistant Custom UnresolvedIntent Skill

      • Digital Assistant Custom UnresolvedIntent State

Build the Skill

To start building your skill for your DA-as-Agent digital assistant, you'll create a skill or clone the Automated Agent Conversation skill. Then you'll configure the skill, add intents and entities as required, and make any necessary changes to the dialog flow. Last, you'll train and publish the skill.

Configure the Skill

Configure the skill for use in a DA-as-Agent digital assistant.

  1. Click icon to open the side menu to open the side menu, and then click Development > Skills.
  2. If you are using a clone of Automated Agent Assistant, locate the Automated Agent Conversation skill, click its Options icon, and select Clone.

    Complete the dialog, select Open cloned skill afterwards, and click Clone.

    Note:

    If the Automated Agent Conversation skill doesn't exist, then click Development > Store, click AutomatedAgentAssistant, and then click Pull. The digital assistant and the Automated Agent Conversation skill that it contains are added to your instance.
  3. If you are building the skill from scratch, click New Skill to create the skill.
    Give it a display name that will make sense to someone who is conversing with the digital assistant through Oracle Service Cloud. The digital assistant uses this value in some automated messages and prompts. For example: You are at <skill-display-name>. Here are some things you can do.
  4. In the left navigation bar, click Settings Settings icon, and then click General.
  5. Set the Training Model to Trainer Tm.
  6. For versions 19.4.1 and earlier of Oracle Digital Assistant, ensure that Optimize for Answer Intents is switched to On.
  7. Switch Enable Insights to On.

    You can use insights to analyze and retrain your skill, as described in Review Conversation Trends Insights.

  8. To optimize for Answer intents, click Configuration, and then set these values:
    • Confidence Threshold: 0.7

    • Confidence Win Margin: 0.1

    Later, as you test and analyze your intents, you might want to change these values. To learn more, see Tune Intent Resolution Before Publishing.

  9. Click Digital Assistant.
  10. Enter an invocation that will make sense to a customer. This value is copied to the digital assistant's interaction model for the skill and is used in automated digital-assistant prompts and responses. For example:
    You are at <skill-display-name>. Here are some things you can do:
    <skill-invocation-name-from-DA> <skill-one-sentence-description> 
    1. <skill-example-utterance-set-in-DA>
    2. <skill-example-utterance-set-in-DA>
    ...
  11. Provide example utterances that will resolve to intents. These utterances are copied to the digital assistant's interaction model for the skill and they are used in the list that's shown in the prior step.

    For an Answer intent, the utterance must match one of the intent's questions or the intent's conversation name. Otherwise, if the user selects the associated number from the list shown in the prior step, it might resolve to an unresolvedIntent.

    As you add intents, remember to update this configuration.

Add Intents and Entities

Add the necessary intents and entities for your skill. When you clone the Automated Agent Conversation skill, your skill is pre-seeded with the basic intents that you need for a DA-as-agent skill:

  • system.Ask Another Question: This answer intent handles the typical ways that people introduce another question, such as "another question" and "also I want to ask". It outputs "OK. Please go ahead with your question." and restarts the conversation.
  • system.Farewell: This answer intent handles user-termination utterances, such as "am going now" and "Bye for now". It outputs "Have a good one." and restarts the conversation.
  • system.Greeting: This intent handles user greetings, such as "Are you there" and "Hello there". In the Automated Agent Conversation dialog flow, its action transitions to the welcome state.
  • system.RequestAgent: This intent contains utterances that reflect how people ask to speak to an agent. In the Automated Agent Conversation dialog flow, its action transitions to the transferToAgent state.
  • system.Satisfactory Response: This Answer intent handles satisfaction utterances, such as "good to know" and "Great". It outputs "You can ask me another question if there's something else that I can help you with." and restarts the conversation.
  • system.Unsatisfactory Response: This intent handles utterances that indicate the user is not satisfied with the conversation, such as "Give me a better answer" and "I am not being given the help I require". In the Automated Agent Conversation dialog flow, its action transitions to the transferToAgent state.
  • unresolvedIntent: This intent aids intent resolution and also is used to handle questions and requests that the skill isn't built to handle. Add utterances to this intent that represent in-domain phrases that are out of scope for this skill. The Automated Agent Conversation dialog flow handles unresolved intents by sending the user utterance as a search term to a System.KnowledgeSearch state, which performs a knowledge search. You might want to add phrases that ask questions that are answered in the knowledge base.

Note:

The system namespace identifies provided intents. It's a reserved namespace.

If your DA-as-agent skill is a basic question-and-answer skill, then you can use answer intents and System.KnowledgeSearch components to address all your questions and answers.

Automated Agent Conversation has a sample knowledge intent and associated state that shows how to retrieve a specific answer. For related knowledge search examples, see Use the System.KnowledgeSearch Component. Note that you must create a knowledge search integration to use this component.

Automated Agent Conversation also has a sample answer intent to show you how to use that type of intent. You can delete it. For your own answer intents, create a CSV file that contains the intents, the answers, and the different ways that people can ask the question. Then import the file from the Intents page. With answer intents, you don't need to make any changes to the dialog flow.

Here's an example of a CSV file that has answer intents:

query,topIntent,conversationName,answer
what are your hours?,StoreHours,Store Hours,"We are open from 9 to 5, seven days a week."
when are you open?,StoreHours,Store Hours,"We are open from 9 to 5, seven days a week."
when do you close?,StoreHours,Store Hours,"We are open from 9 to 5, seven days a week."
Are you open on Sunday?,StoreHours,Store Hours,"We are open from 9 to 5, seven days a week."
Do you deliver?,Delivery,Delivery Queries,We deliver purchases for amounts over $50.
Will you deliver?,Delivery,Delivery Queries,We deliver purchases for amounts over $50.
Can you deliver to my house?,Delivery,Delivery Queries,We deliver purchases for amounts over $50.
Can you bring it to me?,Delivery,Delivery Queries,We deliver purchases for amounts over $50.

After you create your intents click Train. You can't test or publish a skill if it hasn't been trained.

To test your intents, click Try It Out!, and then enter test utterances to verify that the model is resolving to the desired intents. You should enter utterances from the intents as well as utterances that are not in any intents. The dialog shows the confidence level for each matched intent. If the resolution isn't what you intended, consider adding the utterance to the desired intent or revising the intent that was incorrectly matched. To learn more see Intent Training and Testing.

Use Contact Info in the Dialog Flow

The profile.locale variable is set to the Oracle Service Cloud interface language code. When users are signed into Service Cloud or have provided their first name, last name, and email address on the Oracle Service Cloud chat launch page, then the profile.firstName, profile.lastName, and profile.email variables will contain the user information.

In addition, the profile.contactInfo variable contains some chat-request info, such as the customer's question (subject) and the product ID and category ID, if applicable. Also, if the chat launch page contains any custom fields, then the values that the customer enters into those fields are passed to the digital assistant in the profile.contactInfo.customFields array.

The profile.contactInfo variable is available only for instances of Oracle Digital Assistant that were provisioned on Oracle Cloud Infrastructure (sometimes referred to as the Generation 2 cloud infrastructure).

Here's the structure of the profile.contactInfo:

{
  "question": <string>,
  "productId": <number>,
  "orgId": <number>,
  "categoryId": <number>,
  "browser": <string>,
  "ipAddress": <string>,
  "userAgent": <string>,
  "sessionId": <string>,
  "operatingSystem": <string>,
  "customFields": [
    {
      "name": <string-name-of-custom-field>,
      "id": <ID-of-custom-field>,
      "value": <field-value> 
    },
    ...
  ]
}

Here's some example data:

{
   "question":"Do you deliver",
   "productId":7,
   "customFields":[
      {
         "name":"ODA Text",
         "id":44,
         "value":"N/A"
      
},
      {
         "name":"ODA YN",
         "id":45,
         "value":"1"
      
},
      {
         "name":"ODA Nbr",
         "id":46,
         "value":"1"
      
},
      {
         "name":"ODA Date",
         "id":47,
         "value":"2020,2,17"
      
},
      {
         "name":"ODA Menu",
         "id":48,
         "value":"12"
      
},
      {
         "name":"ODA DateTime",
         "id":49,
         "value":"2004,11,18,17,18"
      
}
   
],
   "browser":"FireFox 68.0",
   "ipAddress":"123.45.67.89",
   "userAgent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0",
   "sessionId":"HI6unnBo",
   "operatingSystem":"Windows 10",
   "orgId":-1,
   "categoryId":-1
}

Here's an example of extracting and displaying contact info:

context:
  variables:
    contactInfo: "map"
  ...
  setContactInfo:
    component: "System.SetVariable"
    properties:
      variable: "contactInfo"
      value: "${profile.contactInfo.value}"
    transitions:
      next: "echoQuestion"
  echoQuestion:
    component: "System.Output"
    properties:
      text: "Your question was: ${contactInfo.value.question}"
      keepTurn: true
    transitions:
      next: "showText"
  showText:
    component: "System.Output"
    properties:
      text: "You entered: <#list contactInfo.value.customFields as p><#if p.name=='VIP Status'>${p.value}</#if></#list>"
      keepTurn: true
    transitions:
      return: done

To learn about customizing the fields that are on the chat launch page, see Overview of Chat on the Customer Portal in Using Service Cloud.

Enable Transfer to a Human Agent

If you are working with a clone of the Automated Agent Conversation skill, then your dialog flow includes the intents and states that handle transferring the conversation to a human agent. If not, and if you want the skill to transfer the chat session to a human agent, such as when the user wants something that the skill isn't built to handle, add a state that uses the System.AgentTransfer component. Then add some dialog flow to transition to that state as necessary.

Here's an example of a dialog flow that transfers to an agent when the customer asks to speak to an agent:

metadata:
  platformVersion: "1.1"
main: true
name: "AutomatedAgentConversation"
context:
  variables:
    iResult: "nlpresult"
    someVariable: "string"
states:
  #
  # Note that even though Answer intents don't have actions, you must have a System.Intent state even if 
  # you have no other types of intents. Answer intents output the answer and restart the conversation.
  #
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult"
    transitions:
      actions:
        ...
        system.Unsatisfactory Response: "transferToAgent"
        system.Request Agent: "transferToAgent"
        ...
  
  #
  # This state tries to transfer the user to another agent when the user explicitly requests for it.
  #
  transferToAgent:
    component: "System.AgentTransfer"
    properties:
      maxWaitSeconds: "300"
      waitingMessage: "I'm transferring you to a human agent. Hold tight."
      rejectedMessage: "I wasn't able to transfer you to a human agent. Please try again later."
      errorMessage: "We're unable to transfer you to a human agent because there was a system error."
    transitions:
      actions:
        accepted: "reset"
        rejected: "handleRejected"
        error: "offerMoreHelp"
      next: "reset"
  #
  # This state is called when an agent transfer is rejected. 
  # It lets the customer know they can ask for something else.
  # 
  handleRejected:
    component: "System.Output"
    properties:
      text: "Meanwhile, let me know if there's anything else I can help you with."
    transitions:
      return: "handleRejected"
  
  #
  # This state is called when an agent transfer encounters a system error. 
  # It lets the customer know they can ask for something else.
  #
  offerMoreHelp:
    component: "System.Output"
    properties:
      text: > 
        You can ask me another question if there's something 
        else that I can help you with.
    transitions:
      return: "offerMoreHelp"
      
  #
  # This state ends the conversation with a return transition for insights purposes, 
  # after the user has been transferred to another agent.
  #
  reset:
    component: "System.SetVariable"
    properties:
      variable: "someVariable"
      value: ""
    transitions:
      return: "reset"

See System.AgentTransfer for details about the properties and actions.

Configure When to Attempt Agent Transfer

The System.AgentTransfer component has two properties that let you configure when to attempt transferring to an agent – maxEngagementsInQueue and allowTransferIf.

The maxEngagementsInQueue property lets you set the maximum number allowed for engagements waiting in the destination queue. When the chat request is sent, Oracle Service Cloud responds with the current number of engagements waiting in the queue. If this value exceeds maxEngagementsInQueue, then the rejected action occurs. If you don't include this property, then there's no engagement limit.

You use the allowTransferIf property to specify when to transfer based on available agents. The options are:

  • agentsAreRequestingNewEngagements: (default) Transfer only if at least one agent has requested a new engagement (pulled a chat) or, if chats are automatically routed to available agents, there is at least one agent hasn't reached their maximum number of chats. This default option ensures that the user doesn't have to wait for the chat to resume after the transfer.
  • agentSessionsAreAvailable: Transfer if any agents haven't reached their maximum number of chats regardless of whether they've requested a new engagement (pulled a chat) or, if chats are automatically routed to available agents, there is at least one agent who hasn't reached their maximum number of chats. The user may have to wait if all the agents are involved in long-running conversations or are doing some post-chat follow-up.
  • agentsAreAvailable: In the case where agents must request new engagements (pull chats), transfer even if no agents have requested a new engagement or all agents have reached their maximum number of chats. In the case where chats are automatically routed to available agents, transfer even if they all have reached their maximum number of chats. The user may have a long wait.

If the specified conditions aren't met, then the rejected action occurs.

Note:

These properties work only with instances of Oracle Digital Assistant that were provisioned on Oracle Cloud Infrastructure (sometimes referred to as the Generation 2 cloud infrastructure).
How the UI Components Display in Oracle Service Cloud Chat

The default chat that's accessed through the customer portal is limited to text and images. For example, instead of cards and buttons, it just displays text, and the user has to type the choice or button label instead of just clicking on it. However, with Oracle Digital Assistant versions 20.6 and later, the Oracle Inlay Toolkit embedded chat inlay can display more than just text for the UI components that are in the dialog flow.

Oracle Service Cloud supports embedded chat inlay for versions 20A and later. To learn about the embedded chat inlay, see the Oracle Inlay Toolkit documentation. Oracle Service Cloud does not support using Proactive Chat inlay for digital assistant agents.

If your chat client is the default chat that's accessed through the customer portal (instead of the embedded chat inlay), then ensure that you set the Enable Auto Numbering on Postback Actions to true on the Settings > Configuration page for the digital assistant so that the user can respond to the UI component by typing in a number instead of the exact text. If you don't set it to true, then use keywords for response items to minimize what the user has to enter. In this example, autonumbering is set to true whenever the client is Twilio or Oracle Service Cloud chat.

${(system.channelType=='twilio'||system.channelType=='osvc' )?then('true','false')}

Tip:

When you use the digital assistant tester or the skill tester, if you set the channel to Twilio SMS, it will render the conversation similar to the default chat.

Here's a comparison of how the UI components are displayed for the default chat and the embedded chat inlay:

Component/Property Embedded Chat Inlay Default Chat
HTML tags Supported Supported
Postback actions Displayed as clickable buttons. The share action is ignored. Displayed as non-clickable text. The location, call and share actions are ignored.
System.CommonResponse Supported, except that users can't upload attachments. Supported, but the items and action labels always display vertically. Choices and buttons are displayed as non-clickable text.

For a response item of type attachment, the footerText value doesn't display.

System.List Supported. Supported, but the options display as non-clickable text and the footerText value doesn't display.

This table illustrates how different component configurations display in the default chat and an embedded chat inlay.

Example Component Configuration Embedded Chat Inlay Default Chat
  actionList:
    component: "System.List"
    properties: 
      prompt: "System.List Choose an option for setting the transition action"
      options: 
      - label: "Action 1"
        value: "action1" 
      - label: "Action 2"
        value: "action2" 
      - label: "Action 3"
        value: "action3" 
      autoNumberPostbackActions: false
      footerText: "Footer"
    transitions:
      actions:
        action1: "output1"
        action2: "output2"
        action3: "output3"
Description of rich-text-list-inlay.png follows
Description of the illustration rich-text-list-inlay.png
Description of rich-text-list-default.png follows
Description of the illustration rich-text-list-default.png
  cardResponseHorizontal:
    component: "System.CommonResponse"
    properties:
      processUserMessage: true
      keepTurn: true
      metadata: 
        responseItems:         
        - type: "cards"
          cardLayout: "horizontal"
          footerText: "Footer Text: Cards with Values: Horizontal"
          cards:
          - title: "${myvalues.name}"
            description: "${myvalues.description}"
            imageUrl: "${myvalues.image}"
            cardUrl: "http://www.oracle.com"
            name: "ValuesCard"
            iteratorVariable: "myvalues"
            actions: 
            - label: "I Want This One"
              type: "postback"
              payload: 
                action: "itemPicked"  
                variables: 
                  user.horizontalVariable: "${myvalues.name}"   
        globalActions:
          - label: "Cancel"
            type: "postback"
            payload:
              action: "cancel"
          - label: "Send Location"
            type: "location"
Description of rich-text-card-inlay.png follows
Description of the illustration rich-text-card-inlay.png
Description of rich-text-card-default.png follows
Description of the illustration rich-text-card-default.png
  cardActionResponse:
    component: "System.CommonResponse"
    properties:
      processUserMessage: true
      keepTurn: true
      metadata: 
        responseItems:         
        - type: "cards" 
          cardLayout: "vertical"
          footerText: "Footer text for cards."
          cards:
          - title: "Card with Actions"
            description: "This is a card with actions"
            cardUrl: "http://www.oracle.com"
            name: "ActionsCard"
            actions: 
            - label: "share"
              type: "share"
              payload: 
                action: "share"
            - label: "location"
              type: "location"
              payload: 
                action: "location"
            - label: "url"
              type: "url"
              payload: 
                action: "url"
                url: "http://www.oracle.com"
            - label: "call"
              type: "call"
              payload: 
                action: "call"
                phoneNumber: "808 888 1212"
            - label: "ok"
              type: "postback"
              payload: 
                action: "ok"  
                variables: 
                  user.someVariable: "ok"
            - label: "not ok"
              type: "postback"
              payload: 
                action: "notok"  
                variables: 
                  user.someVariable: "not ok" 
    transitions: {}
Description of rich-text-actions-inlay.png follows
Description of the illustration rich-text-actions-inlay.png
Description of rich-text-actions-default.png follows
Description of the illustration rich-text-actions-default.png

Note that you can wrap the payload URLs in HTML tags. For example <a href="http://www.oracle.com">Click Here</a>.

Train and Publish the Skill

After you build the skill, you must train and publish it so that you can use it in the DA-as-agent digital assistant.

  1. Go to Settings > General and ensure that the training model is Trainer Tm.

    When you use answer intents, you should always use Trainer Tm, even in development environments.

  2. For versions 19.4.1 and earlier of Oracle Digital Assistant, ensure that Optimize for Answer Intents is switched to On.
  3. Click Train.
    You can't publish a skill if it hasn't been trained.
  4. In the title bar, click the down arrow and select Publish.
You can now use the skill in the DA-as-agent digital assistant.

Configure the DA-as-Agent Digital Assistant

To create a digital assistant that acts as an Oracle Service Cloud agent:

  1. Click icon to open the side menu to open the side menu, and then click Development > Digital Assistants.

  2. Either clone Automated Agent Assistant by clicking its Options icon and clicking Clone, or click New Digital Assistant to build one from scratch.

    If you clone Automated Agent Assistant, then much of the work is already done for you.

  3. Open the digital assistant.

    By default, the Skills Skills icon page should be displayed.

  4. If you are using a clone of Automated Agent Assistant, then delete the Automated Agent Conversation skill that's included by default.

  5. Click + Add Skill, select the published skill that you built for this digital assistant, and then click Close.

  6. Click Settings Settings icon, and then click General.

  7. Switch Enable Insights to On.

  8. Set the digital assistant's Training Model to Trainer Tm.

  9. For versions 19.4.1 and earlier of Oracle Digital Assistant, ensure that Optimize for Answer Intents is switched to On.

  10. The following Automated Agent Assistant configurations have been changed to the values shown to optimize the digital assistant for a single-skill DA-as-agent: digital assistant. If you aren't using a clone of Automated Agent Assistant, then you might want to make these changes to your digital assistant in the Settings > Configurations tab.

    • Flow Information in Selection: ${system.routingToIntent}

    • Nothing to Exit Prompt: Goodbye. Let me know if there's anything else I can help you with.

  11. (Optional) If the digital assistant has more than one skill, then you can customize the digital-assistant behavior when user utterances match the digital assistant's help and unresolvedIntent intents. Go to the Configuration tab on the Settings page, and then specify the custom skill and state to navigate to for help or unresolvedIntent (or both). See Specify States for the help and unresolvedIntent System Intents.

  12. Click Train to train the digital assistant.
  13. (Optional) To test the digital assistant, click Skill Tester Skill Tester icon.

    Note that when the dialog flow transitions to a state that transfers from a skill to an agent, the tester stops responding. Click Reset when that happens.

After you put your digital assistant into production, you'll want to periodically run Retrainer reports to see if you need to improve intent resolution for any intents. See Apply the Retrainer.

Task 2: Configure Oracle Service Cloud

To configure Oracle Service Cloud for a digital-assistant agent, an administrator must configure a profile, a queue, an agent, and some rules.

The administrator can set up an Oracle Service Cloud queue, profile, and chat rules to route the request to a digital-assistant agent similar to the way routing is set up for a virtual assistant, which is described at Route Chats to a Virtual Assistant in Using Service Cloud.

The high-level steps to complete the configuration are:

  1. Configure a Queue, Profile, and Agent for the Digital-Assistant Agent
  2. Add Chat Rules
  3. (Optional) Pass the Initial Utterance to the Digital Assistant.

After you configure Oracle Service Cloud, you associate the digital-assistant agent with the DA-as-Agent digital assistant by creating a channel as described in Task 3: Sign Your Digital Assistant into Oracle Service Cloud.

Configure a Queue, Profile, and Agent for the Digital-Assistant Agent

You'll need a dedicated queue, profile, and agent to enable a digital assistant to sign into Oracle Service Cloud as an agent. Ask your Oracle Service Cloud administrator to complete the following configurations in the Service Console.

Create a Digital-Assistant Queue

When used with chat rules and profiles, queues enable automatic sorting of incoming chats. Create a queue that you'll use to route chat sessions to the digital-assistant agent that's associated with the digital-assistant profile.

  1. In the Service Console console, click the Navigation Navigation icon icon, and then select the first Configuration menu item.


    Configuration selected from menu.

    The Configuration menu appears in the Navigation pane.

  2. Expand Application Appearance, and then double-click Customizable Menus.
  3. Expand System Menus, and then select Chat Queues.
  4. On the Home tab, click New.
  5. Click the New Chat Queue label and change its name, such as Digital Assistant Agent.
  6. On the Home tab, click Save & Close.
Create a Digital-Assistant Profile

You use profiles to manage account permissions and to assign agents to queues. Create a dedicated profile for the digital-assistant agent.

  1. In the Configuration menu in the Service Console, expand Staff Management, double-click Profiles, and then click New.
  2. Name the profile. For example: Digital Assistant.
  3. In the Interfaces section, enable Access for the interface and add a navigation set.
  4. In the Home tab, click Permissions.
  5. Click the Service tab.
  6. In the Chat Agent Permissions section, select these options:
    • Chat

    • Conference/Transfer to Other Groups

  7. Ensure that the Pull Chat option is not selected.
  8. Ensure that the Pull Policy is set to First Due.
  9. In the Chat Queues section, select the digital-assistant queue (Digital Assistant Agent in our example) from the drop-down and then click Add Add icon.
  10. Make sure that the queue that you added appears in the queue list, as shown in this screen shot.
  11. In the Chat Agent Statuses section, ensure that Available - Unrestricted is assigned.
  12. Select Available - Unrestricted as the default status.
    This insures that when the digital assistant signs in as a digital-assistant agent, it will receive incoming requests automatically.
  13. In the Home tab, click Save and Close.
You don't need to set Max Active Chats or Max Total Chats because the digital assistant always notifies the chat server that it has capacity to take new chats, which overrides the numbers in these fields.
Assign the Digital-Assistant Agent to the Digital-Assistant Profile

You'll need to create an account in the Service Console for the digital-assistant agent, and associate it with the digital-assistant profile. This way, chat sessions that are assigned to the digital-assistant-agent queue will be sent to the digital-assistant agent.

You'll need a separate digital-assistant agent for each DA-as-Agent digital assistant that you build.

  1. From the Configuration menu, double-click Staff Accounts by Profile.
  2. In the Home tab, click New.
  3. In the Account Details page, enter these values:
    • User Name: For example, digitalassistant.
    • First Name: For example, Chat.
    • Last Name: For example, Bot.
    • Display Name: For example, Chat Bot.
  4. Click Change Password and provide a password.

    For security, always provide a password for the digital-assistant agent.

  5. From the Profile search list, select the profile that you configured in Create a Digital-Assistant Profile.
  6. Select a group, and set the default currency and country.
  7. Save your changes.

Add Chat Rules

You'll need a chat rule in the Service Console to define when to assign a chat session to the digital assistant. You'll also need a state to handle transfers from the digital assistant to a live agent.

Here are the typical steps for adding the chat rules. You can learn more about rules at Business Rules in Using Service Cloud.
  1. Expand Site Configuration and double-click Rules.
  2. In the Home tab, click Chat, and then click Edit.
  3. Create a state for the hand off to a live agent.
    1. Right-click States and click New State.
    2. Name the state. For example: 03. Hand Off to Live Agent.
    3. Click Save.
  4. Add a rule to the state to assign the chat session to a queue.

    These substeps show a very simple configuration. For your instance, you must carefully consider both the if conditions, and the then actions.

    1. Right-click the state that you just added and click New Rule.
    2. Name the rule. For example: Hand Off to Live Agent.
    3. In this example, there are no if conditions. You might need to add conditions as appropriate for your business needs.
    4. Click Add Action - Then and then click Chat Queue ID.
    5. From the Assign Chat Queue drop-down list, select the queue that the conversation should be sent to (in this example, the default queue).
    6. Click Save.
  5. Add a rule to the initial state to route chat sessions to the digital-assistant-agent queue.
    1. Right-click the initial state (the one that is shown in bold text), and click New Rule.
    2. Name the rule. For example: Digital Assistant Agent.
    3. If applicable, click Add IF Condition Based On to add the desired conditions for routing to the digital assistant queue.
    4. Click Add Action - Then and add an action to assign the chat session to the digital assistant queue (Digital Assistant Agent in our example).
    5. Click Add Action - Then and add an action to transition to the state that you created for the hand off (03. Hand Off to Live Agent in our example) and then stop.
    6. (Optional) Add an Else action.
    7. Drag the rule to a position in the initial state such it's evaluated before any rules that might route the qualifying chat sessions to some other queue. For example, ensure that it is evaluated before a state that unconditionally routes chat sessions to the default queue.
  6. Compile and activate your changes.

Pass the Initial Utterance to the Digital Assistant

To prevent the customer from having to state their need twice, add a Subject field to the chat launch page. If a customer enters a value in that field, then, when the conversation is transferred to the digital assistant, the digital assistant tries to resolve the intent from the subject field value.

To learn about customizing fields on the chat launch page, see Overview of Chat on the Customer Portal in Using Service Cloud.

Task 3: Sign Your Digital Assistant into Oracle Service Cloud

To sign a digital assistant into Oracle Service Cloud as a digital-assistant agent, create a DA as Agent channel and then enable it. This task also identifies the digital assistant to route the conversation to.

Each DA as Agent channel must have a unique user name. That is, you can't use the same digital-assistant agent for more than one channel.

  1. In Oracle Digital Assistant, click Icon to open the side menu to open the side menu, select Development, and then select Channels.
  2. Click DA as Agent, and then click + Agent Channel.
  3. Enter a name and an optional description for this channel.
  4. Provide the Oracle Service Cloud host.

    If you have access to Oracle Service Cloud, you can derive these values from the URL that you use to launch the Agent Browser User Interface or the chat launch page. For example, if the URL is https://sitename.exampledomain.com/app/chat/chat_launch, then the host is sitename.exampledomain.com.

  5. Enter the user name and password for the digital-assistant agent that was created in Oracle Service Cloud as described in Assign the Digital-Assistant Agent to the Digital-Assistant Profile. For example: digitalassistant.

    You can't use the same user name for more than one channel. If multiple channels have the same user name, only one channel will work.

  6. Select the digital assistant to route to.
  7. Switch Interaction Enabled to On.

    The channel establishes a connection with Oracle Service Cloud and the digital-assistant agent is signed in.

    You should wait at least one minute for the channel connection and sign-on to complete.

    Note:

    Don't re-toggle the switch until at least one minute has passed. If you enable the channel and then disable it before the connection is established and sign-on completes (or vice versa), then you might break the connection and the digital assistant won't be able to get or send responses. To resolve a broken connection, delete the channel and then re-create it.

Tip:

If a channel isn't working, click Error Reports to see if there are any reported errors. Note that if you see a CONFLICT error or an ACCESS_DENIED error, you can typically resolve this problem by switching Interaction Enabled to Off, and then switching it to On. Sometimes, however, you might see this problem because the same digital assistant agent is signed in to more than one DA-as-Agent channel.

Change DA as Agent Channel Configuration

You can re-route a channel anytime regardless of whether the channel is enabled. For other changes, you must ensure that the channel is disabled (Interaction Enabled is switched to Off) before you make the change.

Note that when you disable a channel, you sign the digital assistant agent out of Oracle Service Cloud. Therefore, you can't disable a channel if there are any active sessions.

After you complete the changes, you can sign the digital assistant agent back into Oracle Service Cloud by switching Interaction Enabled to On.