How to host BF Skills in Teams App Store? - botframework

We have a bunch of Microsoft BF Bot Skills that we are using with our Virtual Assistants. Not all skills are applicable to all our users. Teams being our collaboration platform, I was thinking if we could host these skills in our Teams enterprise app store and then let our users dynamically add them to the VA as needed. Is this even possible? Has anyone tried something like this?

Unfortunately, I don't believe this would work as they are currently designed. The relationship from bot:skill is managed, primarily, by the bot via AppId's, keys, endpoints, etc., shared between the two. The issue is each skill uploaded into Teams would require it's own manifest whereas normally only one is promoted, the primary bot. By each skill having its own manifest, Teams is going to treat it as an individual app. I believe this would interfere with the bot and skill properly connecting.
That being said, you could forgo the current bot:skill design and create smaller independent bots. By using proactive messages, it is perfectly feasible to send messages between bots. As a user interacts with the HR bot and answers some question about payroll, that message is forwarded as a proactive message to the Payroll bot which does stuff and then returns a message back to the HR bot and, subsequently, to the user.
Hope of help!

Related

How to deploy a Question Answering BERT Model as a chat bot on MS Teams

I have a Text2SQL model (EditSQL: https://github.com/ryanzhumich/editsql) which I have configured to take a sentence as input and return a SQL query as output.
Now, I want to deploy this program as a chat bot application in Microsoft Teams.
I understand there's Microsoft bot framework that enables publishing a bot and the 3 options are described here.
https://learn.microsoft.com/en-us/learn/modules/choose-bot-building-tool/
However, I am not finding any of them suitable for my use case since I need to deploy a Question-Answering Bot where the Questions from users need to be sent to an external server like AWS and the response from AWS (could be an excel file) needs to be sent back to the user. Multiple questions can be the part of a conversation, so the chat client should be able to mark start and end of a conversation.
My problem:
What are the basic steps of exposing a ml model via a server so that it can be queried in production.
What are the tools that will allow me to make a client on Teams and a server for this model on AWS?
Please let me know if I should add more information on this.
Thanks
As you've seen, there are a bunch of tools/approaches to creating bots in the Microsoft world, for Teams or otherwise. Underneath, these all use the Bot Framework, but you can develop directly (i.e. write code), or use a higher-level tool like Bot Framework Composer - the choice is yours depending on your own internal skills. If you want to work with code directly, here are a bunch of bot samples, in multiple languages: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples . For isntance, here is an example of integrating the Microsoft QnAMaker service into your bot: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/49.qnamaker-all-features
Basically, if you go the development approach, your bot is just a web service. Once it receives the message, it can call out to any other service behind the scenes. That means it can receive a message, call out to an AWS service, receive the response, and send a reply to the user.
For multiple questions as part of a 'set' of chats, Bot Framework provides an idea called "dialogs" that should work for you.

Data sovereignty for Teams bot framework channel

I have a customer wanting to use Bot Framework that has very strict data sovereignty requirements - anything to / from the user must stay in Australia. The bot endpoint is inside their Azure environment (Australia East) in an ASE. They want to use Teams as the channel. Their Teams / Office 365 sub is in Australia. They are concerned that the bot registration itself is in the Global region, whereas the other bits they control are in Australia.
Can we confirm that all elements of communications would stay within Aus? I'm not quite clear on the fine details of how messages from a Teams chat are routed through the bot connector service on their way to the endpoint in Azure. I've seen various diagrams such as this one, but nothing that goes into the level of detail we need - https://github.com/OfficeDev/microsoft-teams-faqplusplus-app/wiki/Solution-overview
I think you need to stick to APAC serviceUrl. (/apac)
Microsoft confirmed for us that if the Teams instance is in Australia, and that if the Azure tenant is hosted in Australia, then user traffic to/from the bot will remain within Australia.

Chatbot handoff from Messenger to Zendesk

I am developing a customer service chatbot, using Azure's Bot Framework in .NET, using the the Messenger channel. I wanted to know if anyone knows what the best way to handle the handoff to a human on Zendesk (which my platform already uses as its CRM platform). I'm not looking for when to do the handoff, but how to manage what happens next.
What I would love to be able to do would be that so when handoff is needed, a ticket on Zendesk would be created, sending for example a file (the transcript of the conversation so far). Then the agent would be able to solve the customer's problem in that ticket, having a conversation with him, having the bot sending messages back and forth between zendesk and messenger.
I don't know if this has been done before, or if it's at all possible. And I'm free to other solutions to the problem of handling this kind of handoff, without having to create a separate "chat" for the customer service agents to use, like it's explained on the azure documentation.
Thank you for your patience while I researched this. I found this resource that I believe will meet your needs. This functionality is built off of the Bot Framework utilizing .NET (it's also available for Nodejs). There are two available methods to connect a client to an agent.
The first (which should apply to you) aggregates different channels into one allowing an agent to pickup in the same channel where the bot handed off. The second opens a new channel when an agent joins the conversation.
Intermediator Bot
I was able to spin up a bot using this and confirmed the bot was listening for outside traffic.
Hope this helps.
Steve.
One thing that I'm about to try is this:
Bot conversation ends.
Bot service calls an Azure Function, passing the conversation content.
The Azure Function integrates with Trello API, creating an entry on a Kanban board.
So, instead of Trello as I want to do, you can make a call to the Zendesk API.
I'm writing a few articles about developing Azure bots. The next two actually are dealing with these very things. You can find out more here. sign up if you'd like to get notified over the next week or so when the new tutorials are online.
Hope that helps!
Tim

How to Escalate Bot Conversation to Skype for Business Users

We have a publicly facing bot that is working well. However what we'd like to do is if the bot was not able to address the problem, escalate it to a real person. The first of those ways is to a person or (preferably) a group in skype for business. I'd like to have them be able to answer directly in skype.
We also need to able to have the bot be registered in our customer's skype for business tenant along with being able to communicate with ours.
Is this doable? If so, can someone point me to anything that will do it? The only documentation I could find says outbound is possible but gives no samples an seems to imply that it's either escalation or ability to register the bot in multiple tenants.

Compare Microsoft Bot Framework With Howdy Botkit

I am looking to create a bot and have come across Microsoft Bot Framework (with LUIS or can use C# SDK provided by API.AI) and Howdy.ai Botkit (with Middleware support for LUIS & API.AI).
Can someone help me with comparison between these two?
I am looking for following things in my bot -
Support multiple channels including Email.
Have the bot act in both reactive (reply to some user message) and proactive (send out message to users once a day about something important to them or followups)
manners.
Save and later retrieve user provided data (manage state).
Rich message support.
Respond with delay.
Manage conversation history.
Are there things that are available in one but not in another?
I tried developing a bot in Botkit and MS Bot framework both. Ultimately I went with MS bot framework. Some of my reasons which could help with the comparison:
MSBotFramework has support for skype, slack, telegram, Facebook, and many other channels. BotKit, the last I checked, supported only Facebook and slack. I was targeting skype and telegram and that was a deal breaker.
Botkit currently is node.js only. On the other hand, MSBotFramework has .Net, Node.js and even a REST API (which basically means you can use it from any language you want). Also, there are python wrappers available which internally make use of the REST API.
Being a Microsoft product, MSBotFramework's integration with skype, azure, azure analytics, LUIS and other Microsoft services is very easy. This could be required for developing, deploying or integrating natural language support. Botkit supports LUIS integration, which is fairly easy( maybe as easy as MSBotFramework). The analytics (through botkit studio) (was) very basic and MSBotFramework wins hands down here.
I found the documentation for MSBotFramework more comprehensive than Botkit but both of them have an equal amount of resources and documentation.
Some of the other points you have asked about:
Proactive messages depend on the channel you are developing for. For eg. Facebook allows a time window of 24 hours from the user's last message in which you can reply. Whereas other platforms like skype and telegram allow you to send a message anytime you want.
State management will need to be handled on your end. Bot Framework provides some mechanism, but it is not robust enough to be used in production.msdoc
Rich messages are platform dependent, but bot framework does pretty well in catering to most of them. So, the way this works is, you send back the message to bot framework in its own rich message format. It converts to platform specific format. If you have only one or 2 platforms in mind, you can develop accordingly.
Respond with delay - You will have to implement it yourself, though bot framework has lots of examples of doing this.github
Managing conversation can be done easily if you are using C# and .Net platform in general. The documentation and number of examples are very impressive.github repo for samples
All in all, I would recommend MS bot framework.

Resources