Real time conversation tracking in Microsoft Teams - botframework

Teams stores channel conversations in a hidden folder in an Office 365 group. I’m looking for a programmatic way for us to access/log all of that data in as near real time as possible. I've looked at going through Exchange, the eDiscovery API and also the Graph API and I can't find any way of doing this.
If this is something a bot could do that’d be best, but I don’t think bots can actually follow channel conversations. They only seem to be called when they are # mentioned.

After a lot of looking around and playing with APIs, it looks like the best way to do this kind of thing is going via the Microsoft Exchange API.
https://github.com/OfficeDev/ews-managed-api
There are 2 different things I'm using this for- one is just regular archiving of channel information and private messages. The EWS API makes this not too challenging. The other is to give a bot insight into a conversation preceding it being mentioned. This is a little slow, can take up to a minute from the original message being input into Teams.
I really wish this was a part of Teams to begin with, and clearly I am not alone: https://microsoftteams.uservoice.com/forums/555103-public/suggestions/16940815-ability-to-archive-channels-and-chats
You have to be careful not to be too aggressive as you can get throttled.

Related

Using QnA Conversation to trigger other tasks (ideally using Blue Prism)

I have a feeling I'm missing something v obvious here, or perhaps I'm just using the wrong tools in the wrong order, or any combination of the above.
My company uses Blue Prism, and I'd like to build a virtual sales assistant that I can integrate into MS Teams. The idea being, the sales team can ask this bot to carry out a number of different tasks. The user thinks the bot is doing it, but in reality, the bot will be calling Blue Prism and triggering a separate process that has been built. We would integrate LUIS to attempt to split out all the different entities in the question and gradually narrow down what is what by replying to the original user question if it can't split them straight away.
I've built a brief knowledge base and integrated into Teams, however what I'm struggling with is learning how to actually have a central source read the messages asked by users within teams. I'd like to try and go directly to Blue Prism, but I'm aware that something like Flow or Automate may be an option, even if just to use this to trigger blue prism rather than it happening directly from Teams.
Any ideas? An example of a request may be - 'Log 100k pipeline app for the new product for mr smith.'
Thanks
I think you might be getting a bit of crossed lines between LUIS and QnAMaker. QnAMaker, as the name implies, is specifically where you have Questions, and want to maintain a knowledge base of likely answers. In contrast, LUIS would be used here to more accurately identify the instruction being passed, and extracting the values from it. It certainly possible to combine the two into the same bot, i.e. having a bot that handles both commands and questions, but that doesn't sound like what you're trying to do.
As a result, you should be focusing more on LUIS, and defining the relevant entities and intents. As an example, "log pipeline" would be an "intent", whereas "100k", "new product", and "mr smith" would be entities that the bot would know to work with.
What the bot does behind the scenes with that intent+entities combination is of course totally up to what you choose as an implementation, Blue Prism or otherwise.

Slack Outgoing Webhook to Incoming Webhook in MS Teams

I'm trying to connect a Slack channel to Teams and to forward all messages to teams. I thought it would be as easy as using an outgoing webhook in Slack and and incoming webhook in Teams. However nothing is ever sent to Teams. Is this even possible without the use of some automation tool like Zapier or IFTTT?
I think there are probably a bunch of reasons this is not working - I can imagine there could be authentication issues, and also that the structure of the data coming from slack is unlikely to be what Teams can consume 100% as is. Basically, you're going to need some kind of intermediary, like perhaps an Azure Function or AWS Lambda (unless Zapier/IFTTT can offer something out of the box for this). Power Automate could be another option, incidentally.
As another option, you could look to a 3rd party that does something like this already, like m.io (Disclaimer: I have no affiliation with them, or even experience with their platform, I'm just aware of the existence of their tool).
With regards docs, have a look at Outgoing Webhooks for Slack and Incoming Webhooks for Teams. Even from the docs, you can see the format/structure is very different, so it's just a case of a small Cloud function to map input <-> output.

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

Integrating Microsoft teams into my windows application

I have a desktop app to which I want to integrate Microsoft Teams.
Does Teams provides an API for the integration.I read few articles but they all explained how to create apps in Teams and use of Microsoft Graph API to get information about Teams/channel etc.
Could someone help me with this, if they had any solution.
few of my finding on the internet:
https://blog.thoughtstuff.co.uk/2017/04/microsoft-actively-working-on-a-teams-api/
https://developer.microsoft.com/en-us/graph/graph-explorer#
https://microsoftteams.uservoice.com/forums/555103-public/suggestions/16972258-developer-api-to-read-create-teams-and-channels-in?page=2&per_page=20
There are two distinct ways of accomplishing this:
Using the Microsoft Graph API to create/read/write information. Currently the only thing we support is the ability to add a team to an existing Office 365 Group, the ability to create and read channels within a Team, and to post a message to a team/channel. We are adding more APIs, including the ability to read messages from a channel, but it's not available yet (and we don't have a public ETA). The ability to read and write channel messages from a channel should allow you do what you want.
Controls that you can embed in an application that read/write the data for you. That's a common developer request and we will deliver that eventually, but it's further out.

Integrating a multi-calendar solution with Microsoft Exchange/Outlook

I have built a platform that in essence allows users:
to create a company profile and invite your colleagues,
create an office with a floor plan,
add tables and meeting rooms to the floor plan with each meeting room having a separate calendar,
book tables and meetings in meeting rooms.
The platform is built on Python/Django.
Now I am trying to implement a sync mechanism that would work with Office 365 and local Exchange distributions. The sync would be two way, that means an event created in Outlook would trigger an event to be created in our system and vice versa.
My first attempt was to use the EWS SOAP API (with exchangelib). But soon I've run into problems when figuring out how to create triggers for Outlook events. This ended in failure as synchronization would involve constant bombing of slow API-calls such as iterating through accounts and checking if anything changed in their calendars.
Second attempt involved using the Microsoft Graph API that has this neat push notification feature that would solve polling (or so I thought). But as I later found out, having the administrator link his privileged Exchange account and then being able to subscribe event changes for all associated accounts in one go was not possible (thanks to this article). So again this lead to the realization that polling (or making everyone link their personal accounts) was the only way to go.
What approach would you recommend to achieve two-way sync with Exchange that would involve only having the admin do the account linking with as little overhead and polling as possible?
Is there anyone who have developed large-scale applications that do something similar? If so, can you push me in the right direction?
A bit late to the game here, but maybe what you want is the EWS SubscribeToPushNotifications service. It's not implemented in exchangelib yet, but there's a ticket for it https://github.com/ecederstrand/exchangelib/issues/145
Implementing the basics should not be difficult.

Resources