We are working on FB messenger app which use IBM watson conversation for AI bot. But, we need quick replies like provided by wit.ai.
Is there any way to get quick replies or suggestion from watson conversation while getting message.
The Conversation API receives a text message and understands its intention giving the user an answer. It does not offer any kind of quick-replay or interface enhancements.
What you could do is develop this function in your integration software. Using wit.ai example:
User: “I want to order”
The integration software sends this message to Watson. It finds out that is the intention #order and send it back to the integration software. Instead of just send the answer to the user, knowing the #order intention, the integration software builds a quick reply:
Bot: “For here? yes or no?”
And you go on. You can build any kind of quick reply using images or buttons, for example.
I would agree with Danilo. We don't offer this service out of the box at this point. Wit obviously has a greater allegiance with Facebook than we do, so that is much more their focus. We may get there over time as it is a very popular channel. I would do something similar to Danilo mentioned.
In my output object coming from watson, I would put some indicator to include buttons.
"outputs": {
"text": "Do you want for here or to go?",
"quickreply": {"for here", "to go" }
}
and then your client side code needs to know to put whatever is in the click reply section into buttons for messenger specifically. If that's invalid Json, sorry, but I hope it gets the point across. You will need to do this manually for now though.
Related
I was wondering if anyone knew how to, if possible, make a simple bot that just responds to DM's sent to you. For example, if a friend DM's you, a bot responds with something like
"This is an automated response, hang in there and I'll soon respond."
Thanks in advance.
Previously answered in Auto-reply to direct messages
It's against Discord's TOS https://support.discord.com/hc/en-us/articles/115002192352-Automated-user-accounts-self-bots-
Hopefully in the future, they create some small feature that just gives a basic response. Though, it is understandable why they don't want this as it could cause a lot of spam DM's and fake "people" hopping into your DM's.
I have written a smart speaker app for Google Home using DialogFlow, and am now in the process of porting it over to Alexa.
One of the fundamental differences seems to be the inability to easily trigger follow-up intents. For example, I have a dialog that asks the user a series of questions, one after the other, before providing a result based on the answers provided. e.g. ({slot types})
Do you like a low maintenance or working garden? {low maintenance}{working}
Do you like a garden you can relax in? {yes/no}
Would you like to grow vegetables in your garden? {yes/no}
This is easy to achieve using DialogFlow follow-up intents, but I have no clue where to start with Alexa and there dont seem to be many examples out there. All I can find seems to focus on slot filling for a single dialog.
I am using my own API service to serve results (vs Lambda).
Can anybody recommend a way of achieving this in an Alexa Skill?
I managed to achieve this by adding a single utterance with three individual slots, one for each of the answers required:-
inspire me {InspireMaintenance} {InspireRelax} {InspireVeg}
These Slots back onto one SlotType - Custom_YesNo, which had Yes and No values + synonyms. My C# service then checks for each of these required slots and where one is missing it triggers the relevant question as a response. Once all slots are filled it provides the answer.
Not as intuitive as Dialogflow and requires code to achieve what can be done without code in DF, but at least it works :)
Is it possible to launch an Alexa App with just its name? This is similar to when you ask it what the weather is.
"Alexa, weather"
However I would like to be able to say
"Alex, weather in Chicago" and have it return that value
I can't seem to get the app to launch without a connecting word. Things like ask, open, tell would count as a connecting word.
I have searched the documentation but can't find mention of it, however there are apps in the app store that do this.
It is documented in the first item here.
I've verified that this works with my own skill. One thing I've noticed is that Alexa's speech recognition is much worse when invoked in this manner presumably because it requires matching against a greater set of possible words. I have to really enunciate in a quiet room to get Alexa to recognize my invocation name in this context.
When developing a custom skill you have to use the connecting words e.g. Alexa, ask your invocation name to do something.
If you want to pass a variable, you have to specify the sample utterances:
OneshotTideIntent get high tide
OneshotTideIntent get high tide for {City} {State}
Then you handle cases in your code when user does not provide these values. For examples see https://github.com/amzn/alexa-skills-kit-js
When writing the example phrases you use the following construct:
"Alexa, [connecting word] [your invocation name], [sample utterance]". As far as I have noticed she is rather picky and you have to be exact when invoking custom skill (the voice recognition works way better with built in skills)
EDIT: launching skill without connecting word is possible when developing "smart home" skill
Apologies for posting a basic question and not a detailed programming problem! Alas, IBM send people here for BlueMix support.
We're evaluating different AI Bots, and with Watson what we want to do, I think, is use Alchemy to analyze our web site, and have a chat bot that can answer random questions using general knowledge as well as what Alchemy has learnt from our site.
But, I can't find an example of how to hook up Alchemy to a chat bot. Could any of you point me in the right direction? I'll try to come back with more difficult questions another day!
I think, is use Alchemy to analyze our web site, and have a chat bot that can answer random questions using general knowledge as well as what Alchemy has learnt from our site.
There is two ways to do this.
You can create a controller that sits in front of Alchemy API + Dialog. The user talks to the controller and it sends the information to Dialog. Dialog can then request a lookup to the controller. This option is only useful if you don't expect Dialog to be maintained at a later date (or you are using earlier versions of WEA).
The better option is to use the FUNCTION call within Dialog. This will allow you to talk to a third party system and get information back to work with.
Once you have your data returned, you can use your tags or keywords within the returned data to activate a particular process flow using SEARCH.
One thing to be aware of is that depending on the answer you need to determine how to present it.
If your corpus is stored as conversational, then you can use the content as-is. If it is stored from documentation, then you should have Dialog talk as if it is reviewing the content and coming back with an answer. The latter should be visible in a way that distinguishes it as separate from the conversation.
A good example of what I want is a chat system, where I send a message to someone and he can instantly see my message and vice versa.
So I want the best way to track if in the database there is a new answer for me if yes then show it with AJAX.
Example Websites:
Twitter
Friend Feed
You probably want to look at Comet, or one of the other push technologies
You could use AJAX, but if you have a limited audience or won't be going live for a while, you might want to look into HTML 5 Web Sockets (it's currently only supported by a few browsers). With it, you could open sockets to the browsers that want to chat. All messages will be relayed over the Web server, so the chatters won't be able to find out the IP address of another participant.
I've been looking for the answer to this question for ages. Thank you Steve. After some research I found http://www.webreference.com/programming/javascript/rg28/ who seems to do the trick