How to extend MS Health Bot existing scenarios? - botframework

I am evaluating MS Health Bot service and able to create and test custom scenarios. However, I was looking at extending existing in-built scenario like "I have a headache" and customize based on my need. I could see product features say we can extend existing scenarios but I don't see any documentation on how to do it. Anyone aware of how to extend existing scenario?
Thanks
Monu
Additional Information:
Health Bot Service provided three templates in the catalog - Provider Lookup, File a claim, Handoff to a human. There are few others with Coming Soon tag.
Scenarios template catalog
However, I thought, I can use any of the already trained bot scenario to handle medical conditions like "I have a headache" as shown in the diagram below.(which shows up in empty designer page on the right chat widget)
Demo chat for "I have a headache"
So my revised question is "we will be able to extend only scenario that is part of template catalog and our own created scenario". Is that correct understanding?
Thanks in advance

You can customize pre-built scenarios in the Healthcare Bot through the Scenario Designer. In the Healthcare bot service you created, click on Manage Account. If you do not have any scenarios configured, either select a template scenario or create a new blank scenario. Otherwise, click on the name of the scenario to open the designer. From here, you can customize the scenario as needed by either adding more scenario elements from the top pane or modifying elements in the scenario.
At the moment it appears that you are only able to modify the three provided templates. You do not have access to the other scenarios like 'I have a headache' in the healthcare manager. The Healthcare Bot Service is relatively new so that might change in future updates.
I would recommend looking at the topics under Scenario Authoring in the Healthcare Bot Documentation for more details on creating and editing scenarios.
Hope this helps!

Related

Bot Framework - creating/extending similar bots

Is there a way to extend a bot published and create similar one without much changes?
Below is a use case -
Creating bots for a multi-region site - there is a bot for the US region and for Europe I need to create the similar bot, but with some UI changes and some changes in the user/dialog flow.
I can add conditions in code and separate the logic and have both region pointing to same app. Wanted to know if there is a better way?

Slack: how does one go about providing the 'box/dropbox/google' like integration?

Slack offers Box/DropBox/Google integrations, specifically the ability to add (pick via a dialog) a file to Slack from one of these offerings.
I have tried my best look up the different sort of integration possibilities but cannot find any documentation that I can leverage to build my own (to another product).
How does one go about providing a similar integration for his product?
The reason you do not find anything on how to create integrate products similar to Google Drive and Dropbox in the official API documentation is that those are custom solutions created in collaboration between Slack and vendors like Google. If you want something similar for your product I would advise you to contact the Slack business team for details.
However, there is one feature in the API that allows you to create some of the functionality:
Slack app unfurling: Automatically add custom attachments whenever a user posts a message which contains a URL to your product. Those can include preview images and text of your product.

Microsoft Flow integration

I read an article about Microsoft Flow. I was wondering if it is possible to trigger events using this in an external website.
For instance, supposing a post is made on Yammer for some approval flow based application. If an authorized user comments saying "Approved", this must trigger an action in my external website.
Is this feasible using Flow?
You can also make your own custom connectors if your website has a RESTful API. https://learn.microsoft.com/en-us/flow/register-custom-api
There is an event for Yammer in Microsoft flow. I have something set up similar for my company and Twitter. When our company is mentioned it sends a message off to our social director.
I have several such flows for things like Yelp, Twitter, Facebook.
You need your Yammer account.
The events that you can trigger from and then include a trigger word or phrase are:
Get All messages
Get Messages in a group
Get Messages from my Following Feed
Post Message
Once you have that trigger its simple enough to look for the key word within a condition step.
Chances are good there is already a template for this in Microsoft Flow. Just look at the ones for Yelp, Facebook, etc. and modify for your needs
Just as AJAX mentioned, you can apply your own Custom Connector for a case like this. A Connector is the "plugin" used with a Flow, such as Yammer.
It's a bit late since November 28th (practically a 30-day late response here), but PowerApps allows you to create your own Custom Connector applying Microsoft's API. You'd be able to plug into your website (GET, POST, etc) directly with this when you create a trigger (the condition met true) that would launch an action. If you created your own API, Microsoft would have to validate if it's met standards pertaining to security.
By applying PowerApps, you'd be able to create your own actions and triggers. From this, you can integrate your own web based process' based on documentation that was observed: https://powerapps.microsoft.com/en-us/blog/brand-new-custom-api-experience-in-powerapps/. From here, you'd be able to customize it was needed.
JSON is required for some circumstances, however Postman would be a great IDE to consider as it also applies a pre-approved API by Micrsoft.

Microsoft teams add custom text handlers

Is there a way to add custom text handlers in Microsoft Teams? For example when I Type # in chat then I can pick from users. Similarly want to bind a key to another option when I can lookup something from our web service and add it to the chat window. Following documentation describes how to write connectors for Microsoft Teams but doesn't say anything about what I am looking for.
https://msdn.microsoft.com/en-us/microsoft-teams/connectors
mayank, the closest direct thing to what you want is what we call compose extensions. That feature is in preview and is available here. That will let you call a web service and interactively show results from a search in a popup list, not unlike our Giphy integration.
Under the covers, it's a special kind of bot as mark-lafleur-msft described. With a bot, the difference is that the results from the web service don't appear in a popup window.
Last but not least, the simplest way of all, if all you want to do is execute commands from within a channel and return information, is to create a "Custom Bot" (similar to an "Outgoing webhook" in Slack). Details here.
Hope that helps.
What you're describing here is what Bots in Teams are intended for. Once built, you simply reference the bot by #botname and your query: #botname look up something from web service.

Creating an API for LUIS.AI or using .JSON files in order to train the bot for non-technical users

I have a bot that uses .NET, MS Bot Framework and LUIS.ai for its smarts.
All's fine, except that I need to provide a way for non-technical users to train the bot and teach it new things, i.e. new intents in LUIS.ai.
In other words, suppose that right now the bot can answer messages like "hey bot where can i get coffee" and "where can I buy some clothes" with simple phrases containing directions. Non-technical users need to be able to train it to answer "where can I get some food" too.
Here's what I have considered:
Continuing to use LUIS.ai. Doesn't work because LUIS.ai doesn't have an API. The best it has is the GUI to refine existing intents, and the upload app/phrase list feature. The process can be semi-automated if the JSON file with the app can be generated by some application that I write; however, there still needs to be backend code that handles the new intents, and that has to be implemented by a C# coder.
Could it work if I switch from C# to Node.js? Then theoretically I would be able to auto-generate code files / intent handlers.
Azure Bot Service. Seems it doesn't have a non-technical interface and is just a browser-based IDE.
Ditching Bot Framework entirely and using third-party tools such as motion.ai. Doesn't work because there's no "intellect" as the one provided by LUIS.ai.
Using Form Flow that's part of Bot Framework. If my GUI bot builder application can generate JSON files, these files can be used by Bot Framework to build a bot automatically. Doesn't work because there's no intellect as in LUIS.ai.
Keep using Bot Framework, but ditch LUIS and build a separate web service based on a node.js language processing library for determining intents. May or may not work, may be less smart than LUIS, and could be an overkill.
Override the method in LuisDialog that selects the intent from the LuisResponse, in order to use the my own way to decide the intent (but how?).
At this point I'm out of ideas and any pointers will be greatly appreciated.
First of all, LUIS.ai provides an API that you can use to automatize the training. Moreover, here is Luis Trainer written entirely in Python against the API that just does that.
The easiest one, probably is the one you are describing in #1: you can automatize the training (as explaining above) but you will still have to deploy a new version of the bot if new intents are being provided. One thing is letting users to train an existing model with new utteraces and another completely and different thing is to let them create the model :)
It might be hard to skip having to write the backend code (I wouldn't automatize that at all)
Here is a potential idea (not sure if it will work though). You would need 2 Luis models.
One with your current model, that users will be able to train with new utterances.
The second model, is one exclusively intended to be "expanded" with new intents by users.
If you separate this in that way, you might be able to look into a "plugin" architecture for the second LUIS model. So, your app, somehow, loads dinamically an assembly where the second model lives.
Once you you have that in place, you can focus on writing the backend code for your second Luis Model without having to worry about the bot/first model. You should be able to replace the assembly with the second Luis Model and be able in the bot to detect if there is new version of that assembly and replace the current one in the app domain.
As I said, is just an idea as I'm brainstorming with you. Sounds a bit complex, and it's not addressing all your concerns; as you still will need to write code (which in any case, you will eventually have to do)
I am working through a challenge project (training) to automate the creation of Chat Bots specifically targeted against a Luis.ai model using plain old javascript and web services to Luis.
I looked at the Bot Framework and it's just too cumbersome to automate (I want X number of customers to create a Chat Bot without coding). I also want to add my own type of 'Cards' (html widgets) that do more and can be easily configured by someone with zero coding skills.
Calls to the Luis.ai/Cognitive Services API are made in my code behind and the json response returned to my own rules engine. On the following URL click the LUIS API link on the page to open the Luis API Console where you can test, and train your Model. All the endpoints you will need are here...
https://dev.projectoxford.ai/docs/services/
Based on the various endpoints on that page, you can use WebClient in asp.net to pull back the response. So in my testing I have buttons on a page to push utterances up to the model, pull back entities, create hierarchical entities and so on. Have a look at http://onlinebotbuilder.com to see how an intent of product dynamically inserted a shopping cart.
When your tool is built and utterances start to arrive, Luis.ai will store them and via the Suggest tab (at Luis.ai) it will ask you for guidance...Unfortunately I don't think you could give that control over to your customers, unless they are experts in your domain (they understand which utterance belongs to which intent). You don't need to take your app down, just train it periodically to improve the Model based on your customers input...soon enough you will have your model working well based on your intents.
Hope that helps.

Resources