Build "Chat" and "Activity Feed" features from microsoft teams using graph api - microsoft-graph-api

The "Chat" capability in microsoft teams allows the user to start a chat, read and write messages further to that chat.
The "Activity Feed" capability shows a feed of the latest messages that the user is part off.
I have a question about microsoft teams graph api support - With the current set of graph api’s, is it possible to build a capability like “Chat” and “Activity Feed” that we see in Microsoft teams?

For creating a chat,you can read the content of the Teamwork's chat thread section.The URL like this:
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/resources/chatthread
If the answer is helpful for you, please mark it as answer

Related

MS Teams - Allow attendees report using Graph API for the online meetings

Is there any way to allow the attendees to report using Graph API for the online meetings?
as nothing clear from Microsoft documentation here about the property needs to be sent in the request body.
I was able to enable it manually from the MS Team App in the meeting settings, but not able to do it using the Graph API.
As an admin, you control whether meeting organizers can download meeting attendance reports by setting a Teams meeting policy. By default, the ability to download the report is turned on.
Microsoft Graph API currently doesn't provide any way to allow attendees to report using Graph API for online meetings.

Posting to a teams channel from a logic app or flow which includes an banner alert / activity feed item

I have a logic app which posts a channel chat message to teams automatically when a new item is created in SharePoint. This I have working but our client requires that all the team members receive a banner alert and activity feed which I am having a lot of difficulty with.
What I've already tried...
Using a Incoming web hook on the teams channel - this was a very simple way to post from the logic app but the incoming webhook don't seem to support mentions.
Using the msft graph api - The /team/channel/message endpoint can post messages and user mentions but the this endpoint doesnt support channel or team mentions. It also appears that the graph API needs to use delegated permissions to post messages in teams. I'm using application permissions as this is a logic app. The logic app HTTP post connector doesnt offer the "connect as username#tenant.com" some of the other connectors use.
Using the flowbot post message - Like the above channel and team mentions are supported here so the post is added to the channel but with no notification to the team members
Using a notification only bot - I thought I nearly had it with this one. Microsoft's node bot sample number 57 looked like it can do most of what I want, it iterates through the users in the team and messages them this a customisable alert message...
https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/57.teams-conversation-bot
However I can't see how this bot can be triggered from my logic app as it seems to require an existing conversation context or an #mention from within teams to start communicating with users.
What I'm considering trying next
Iterating users within the logic app - Next I plan to try and get team membership from the graph API and iterate the members in the Logic App, posting a message to each user separately. I had hoped to utilise the group #mention feature as a simpler way so I'd be grateful if anyone had any thoughts on other ways of doing this, or maybe there's something wrong with what I've already tried that you could give me some expertise on.
Thanks in advance ;)
Andy
You're on the right track with the Bot, but you're wanting to send something called a "Pro-active" message. You need the bot registered in the channel in order to get access to a few key properties (conversation id, service url, etc.), but you can use those to send a message from -outside- your bot (e.g. in an Azure Function). You might be able to do this directly from a Logic App, but I haven't tested that specifically.
To find out more, see my answer at Programmatically sending a message to a bot in Microsoft Teams but I've also got a recent blog post that you might find interesting for background on this at How Bots Actually Work.
Hope that helps
You can use Graph to post a message in 1:1 chat as long as you have the chat it. You can find the answer in this post Send message to personal Chat via Graph API
You can also call Graph API from Logic Apps. (https://techcommunity.microsoft.com/t5/integrations-on-azure-blog/calling-graph-api-from-azure-logic-apps-using-delegated/ba-p/1997666#:~:text=Calling%20Graph%20API%20from%20Azure%20Logic%20Apps%20using,Manage%20-%3E%20Certificates%20%26%20secrets%20More%20items...%20)

Accessing and creating Teams Chats via Graph API

I'm going over the Microsoft Teams section of the Graph API and trying to find out how to do two things:
Create a new chat, giving it a topic that correlates to an entity in our app (essentially creating a chat around an entity), invite specific users into it, and send messages to the chat.
Access the currently logged-in user's private chats, filtered by their topic, and show their contents inside our app.
For #2, it looks like it should be possible using beta endpoint of the Graph API, but I get 403 Forbidden errors both in the Graph Explorer when trying to access https://graph.microsoft.com/beta/me/chats, and in my own app, after enabling the Chat.Read permissons for it.
For #1, it looks like the API doesn't officially support creating new chats at all.
Is there any approach we can use to create and manage chats? Is there an alternative, perhaps not MicrosoftGraph-based API?
as you mention, the ms graph doesn't yet support initiating group chat. You would use the MS Bot Framework for this: https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bot-conversations/bots-conv-proactive
I see the docs on these Chat api do exist, but they are not present in the Graph Explorer. I tired testing them in the OfficeApiEditor tool with a v2.0 App Registration and Delegated permissions (Chat.Read) and i get this:
Failure - Status Code 500
"code": "InternalServerError",
"message": "Error while processing response.",
so maybe it will take some time before they are really available in beta.
In MS teams, there is a api called ChatMessage to post a message to a chat(only if the chat already exist or started). But, there is no api to create/start a new chat. I have raised a feature request. Do vote for this to suggest this idea to Microsoft.
https://microsoftteams.uservoice.com/forums/913786-microsoft-teams-free/suggestions/38776681-it-would-be-awesome-l-if-there-is-an-api-functiona

Create Skype meeting event in Microsoft Graph API

I am creating events using the Microsoft Graph API
https://graph.microsoft.com/v1.0/me/events
I am able to schedule meetings with other user. But now question is how I will communicate with that user on the scheduled day or time.
can we add skype meeting as location while scheduling meeting?
or any other way to communicate with the users?
Thanks
Today the Skype for Business APIs are not exposed through the Microsoft Graph and I doubt they will ever be considering Microsoft is investing heavily on Microsoft Teams.
As of today the Microsoft Teams APIs only allow you to CRUD teams and channels, manage tabs and post messages to channels (still beta).
If you want to interact with Skype For Business you have to use the UCWA API where you can create a meeting.
Then you can update your Exchange Event with the S4B online meeting information so the users can access the meeting.
You can create a Microsoft Teams meeting call by adding in the body of your JSON a "contentType" : "HTML",
"content": Call link https://aka/ms:mmkvlb"
This can be found in the Graph Explorer page when you choose a POST method in "add graph community call", which is accessible in the Outlook Calendar Sample Category.
I think that you can also open this link with Skype.
For more information check: "https://developer.microsoft.com/en-us/graph/graph-explorer#"

Teams chat belong to conversation

I'm using the Microsoft Graph API for my application.
I read that Microsoft Teams chat is stored in the Outlook of the sender.
To retrieve all the Teams Chat I use this request https://graph.microsoft.com/v1.0/me/messages (I know that it also return me all the outlook but I use some filter to return me only Teams Chat).
Now my question is how to know which Chats belong to the same conversation, I did not find in the metadata some property to help me.
The Graph API for reading Teams conversations is not yet available but should be by around the end of June.
The API you are trying to use will not work.
The APIs to read messages from a Microsoft Teams channel are available in preview. I've created a multi-platform .NET Core application that demonstrates its use. You can use it to download all of the messages from a specific channel within a Team, or all the channels in a Team.
https://github.com/tamhinsf/QuickTeams
Here are the underlying APIs that it uses:
To read the messages in a given channel. This will return a paginated list of messages, each with a unique ID.
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/channel_list_messages
Given a unique message ID, this will enable you to get the replies to the message.
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/channel_list_messagereplies

Resources