Digital Assistant and Mobile

Get Involved. Join the Conversation.


  • Martin Jarvis
    Prakash, do you have a WhatsApp Business Account? If so please raise an SR. We can help you to set this up only if you have a WhatsApp business account. 
  • Sharath Chandra Gavini

    You will first have to register your business with WhatsApp and obtain a business account.
    And then, you need to write an integration that translates ODAs messages to WhatsApp and vice-versa.
    For more information on Webhooks in WhatsApp, visit here.

    Sharath Chandra Gavini.

  • Duha S

    Thanks. My chatbot is finally live now!

    The problem was probably with the screencast I posted.



  • Frank Nimphius



    no, there is not. You can only see the path to QnA but not how QnA resolves the question or the answer the user chose. 


  • Grant Ronald

    The current implementation for a "timed out" conversation will be 24 hours - we are planning a feature in insights that will allow you define the end of a conversation WITHOUT having to use a return transition OR a timeout.

  • Frank Nimphius


    Common Response does not iterate over nested lists. You need to write the array you want to display to its own variable



  • Lorna Rickett

    Grant, do you know how long this usually takes to time out? we see the incompletes coming in a day+ later even though our session expiration is set at 20 mins.

  • Stefan Van Liempt

    I see this is an older post, however still wondering if this is possible. 
    We deployed an webapp with a series of questions. It would increase the usability to show what the user has chosen (like in the tester app).

    Would that be possible at this moment?



  • Frank Nimphius

    I think I answered this question on the Oracle Mail list. So I leave it with that.



  • Ameur Baccoucha

    Hi duha,

    to test your bot from another user you should make him in your App developer lis in the facbook developer platform,
    but if you want to upgrade your app to production you can find  aresponse here

    wish this help 

  • Sharath Chandra Gavini

    Hi Duha,
    For you to be able to test your bot from facebook, you will have to: 
       1. Make your facebook app live (available to the public). For publishing the app, you will have to submit it to Facebook for review. For information on publishing a facebook app visit here.

       2. Add your personal account to the group of testers/developers of your facebook app.

    Best regards,
    Sharath Chandra Gavini,

  • Ravishankar Chandran

    "Is it the link which you obtained when the webview opened in the seperate tab?" - Yes Rohit..


    Kindly find the reply to point#1 below:

        component: "System.Webview"
          service: "datewidget"
          sourceVariableList: ""
          variable: "calendarResponse"
          prompt: "Calendar launches in browser"
          linkLabel: "Open Calendar"
          cancelLabel: "Cancel"      
          next: "checkStartDateSuccess"
          #navigate back to the beginning
            cancel: "askForStartDate"
            textReceived: "askForStartDate"


    Reply to point#2 below:

    No, I`m not in a public domain. 

  • Rohit Dhamija

    Hi Ravi,

    I am sorry, but I could not understand what this link is pointing to? Is it the link which you obtained when the webview opened in the seperate tab?

    1. can you please share the BotML code section where you have used System.WebView component?

    2. Is your instance on public network?


  • Ravishankar Chandran

    Thank you Rohit. tgz upload worked fine with the details you provided above.

    But, on clicking open calender menu item(as in the above screenshot) from ODA, its opening the browser but the web application is not visible. "Page cannot be found" error is getting displayed. 

    Note:I`m in Oracle corporate VPN network.

    Link below:


  • Frank Nimphius


    QnA answers are rendered as cards, they are not stores as cards. So there is no such thing then a direct access to answers. I once wrote a sample that actually would do what you want. I never released the sample because its hard to ensure that the correct results are shown . s you will see, this only works because pressing a menu item actually sets a text message that then is read by the QnA component. So this does not bypass the QnA search. 

        iResult: "nlpresult"
        userMessage: "string"
        qnaMinimumMatch: "string"


        component: "System.CommonResponse"
          processUserMessage: true
          keepTurn: false
            - type: "text"  
              text: "What do you want to do?"  

             #when button is pressed, send the word "card" as a user message. "card here is a synonym for "credit card" related questions
              - label: "Browse QnA"
                type: "postback"
                keyword: "qna, browse"
                  action: "qna"  
                    userMessage: "card" 
                    qnaMinimumMatch: "0%"
              - label: "Ask a question"
                type: "postback"
                keyword: "q, question"
                  action: "intent"  
                    qnaMinimumMatch: "50%,25%"                
            qna: "selectQnA"
            intent: "intentMessage"

    #when user presses ask a question, then navigation is to the intent engine. This way the bot functionality is retained. If the user clicks the browser button then 
    #only QnA with "card" related answers are displayed

        component: "System.Output"
          text: "So, what do you want to do or like to know? (E.g., you can ask \"How long does it take to get a new card\")"
          keepTurn: false
          next: "intentWithQnA"

    Notice that when the user wanted to browse  QnA a variable qnaMinimumMatch was set to 0 so that QnA always rules when the request goes to System.Intent. This way I can bypass the intent resolution in favor of QnA though still use QnA and intents when no button is pressed

        component: "System.Intent"
          variable: "iResult"
          optionsPrompt: "Do you want to"      
          qnaEnable: true
          qnaSkipIfIntentFound: true
          optionsQnaLabel: "Questions"
          qnaMinimumMatch: "${qnaMinimumMatch.value}"      
          next: "unresolved"
            Request Card: "requestCard"
            qna: "startQnA"
            unresolvedIntent: "unresolved"

    #if the user did not use the menu ti set "card" as the user message, then the user message variable is
    #set to the message the user sends by typing a message

        component: "System.SetVariable"
          value: "${system.message.messagePayload.text}"
          variable: "userMessage"
          next: "selectQnA"

    From here, the request goes to the QnA component. Notice that the QnA component uses its "sourceVariable" property to read from the userMessage variable

        component: "System.QnA"
          sourceVariable: "userMessage"
          matchListLimit: 5
          minimumMatch: "50%,25%"      
          viewAnswerLabel: "View"
          moreAnswersLabel: "More Answers"
          answersLabel: "Answers"
          categoriesLabel: "Categories"
          next: "intentWithQnA"
            none: "intentWithQnA"

    So the way this works is:

    - you use a menu item to set a text phrase that finds a perfect match within a set of questions and answers. So carefully select a text string that only is contained in the set of questions & answers that match to a specific category. This is the tricky part, of course because the text you choose needs to be part of the question and answer.