IBM / ios-virtual-assistant-app

WARNING: This repository is no longer maintained
https://developer.ibm.com/patterns/build-a-virtual-assistant-for-ios-with-watson/
MIT License
25 stars 17 forks source link

No Support Dialog Options? #22

Open miltatibm opened 5 years ago

miltatibm commented 5 years ago

I modified the Customer Care Sample Skill to use dialog options in dialog node. When chatting with app no answer or options are visible. Here's the try it out. dialognodewithoptions

And with the emulator Emulator

stevemar commented 5 years ago

Did you update BMSCredentials.plist with the workspace ID? see the step here: https://github.com/IBM/virtual-assistant-ios#optional-31-specify-your-own-conversation

miltatibm commented 5 years ago

@stevemar yes I did but the emulator didn't even use it. Another bug. image

christiancompton commented 5 years ago

The options part of the chat models is fairly new and this code has not been updated to handle these node changes.

@rossmooney This upgrade should be fairly simple to implement while maintaining the text-based interface, just render the question followed by the options in text. Would you be willing to contribute these changes?

rossmooney commented 5 years ago

@christiancompton Yes, I can make the UI changes as long as the assistant SDK supports the option response coming through. I didn't think that was already in there though, do you have a timeline on when you expect to have option responses in the assistant sdk where I could finish the UI?

christiancompton commented 5 years ago

@rossmooney I believe this is supported in the SDK. https://watson-developer-cloud.github.io/swift-sdk/services/AssistantV1/Structs/DialogNodeCollection.html

@mkistler Can you confirm?

rossmooney commented 5 years ago

I have a working example that gives me an option response on Welcome dialog when using "Try It" in the watson assistant web interface. When I connect to it with (other working) iOS code, I get the following, which does not include my options:

Printing description of watsonMessages:
▿ MessageResponse
  ▿ input : Optional<MessageInput>
    ▿ some : MessageInput
      - text : nil
  - intents : 0 elements
  - entities : 0 elements
  - alternateIntents : nil
  ▿ context : Context
    ▿ conversationID : Optional<String>
      - some : "da82c20b-a019-4ee8-8e61-93a917bc31d7"
    ▿ system : Optional<SystemResponse>
      ▿ some : SystemResponse
        ▿ additionalProperties : 4 elements
          ▿ 0 : 2 elements
            - key : "dialog_turn_counter"
            ▿ value : JSON
              - int : 1
          ▿ 1 : 2 elements
            - key : "dialog_request_counter"
            ▿ value : JSON
              - int : 1
          ▿ 2 : 2 elements
            - key : "initialized"
            ▿ value : JSON
              - boolean : true
          ▿ 3 : 2 elements
            - key : "dialog_stack"
            ▿ value : JSON
              ▿ array : 1 element
                ▿ 0 : JSON
                  ▿ object : 1 element
                    ▿ 0 : 2 elements
                      - key : "dialog_node"
                      ▿ value : JSON
                        - string : "Welcome"
    - metadata : nil
    - additionalProperties : 0 elements
  ▿ output : OutputData
    - logMessages : 0 elements
    - text : 0 elements
    - generic : nil
    ▿ nodesVisited : Optional<Array<String>>
      ▿ some : 1 element
        - 0 : "Welcome"
    - nodesVisitedDetails : nil
    - additionalProperties : 0 elements
  - actions : nil

If this is supported, how do I get it?

mkistler commented 5 years ago

Let me try it. Not outside the realm of possibility that we have a bug here. :-)

mkistler commented 5 years ago

It's working for me:

image

rossmooney commented 5 years ago

@mkistler

The generic property inside output is always nil for me. I'm grabbing the first message (which is an option response) using the virtual assistant app.

Screen Shot 2019-05-29 at 10 35 31 AM

Is there a different way I need to setup my assistant?

rossmooney commented 5 years ago

Thanks to @mkistler

I was able to get it working by changing the API date from "2018-02-01" to "2018-10-15". Now I get all my options inside the output.generic field.

spacegoodies commented 5 years ago

Hi, sorry, I'm not much of a developer and was trying to test having dialog options for a chatbot... I tried to follow the suggested changes above, but I still did not see any dialog options appear. Is there code that I need to add to the current example .swift files? Thanks

rossmooney commented 5 years ago

There is no UI for the dialog options, I had to build that myself. If you're talking about still not getting any options output in the watsonMessages object (like my screenshot from a previous comment) then that is the issue I ran into which was fixed by changing the API date.

spacegoodies commented 5 years ago

Yes, I was talking about UI. I was digging around for a while until I found this issue, thinking I was missing something on the Watson-side... Another update to pull from the node would be the pause feature, which would be a nice have. Thanks for the quick response!