developer
1356 TopicsHTML display
I’ve encountered a small issue with the logo we provided for https://parapet.com, which is misaligned when accessing the system through the Microsoft Teams app. It displays perfectly fine in the browser. IT doesn’t impact Parapet’s core https://parapet.com/Articles/Integrated-risk-Management functionalities. Does anyone know what kind of back-end engine Microsoft Teams uses for the html display?Solved67KViews0likes1CommentCreating a Teams meeting programmatically
I have several customers using HCL Notes/Domino (previously Lotus Notes/Domino). Some of them are also using Teams. I've been asked by some of them if it would be possible to add a button to the calendar form in the Notes calendar that will create a Teams meeting for them. The Teams meeting will then receive the Subject, date, time and participants, and return the URL for the Teams meeting, which will then be put in the description field in Notes. I know that Teams has a good API, so I'm sure this can be done. Unfortunately I'm not that experienced with JSON and REST APIs, but I want to give it a shot. Any tips on how to to do this are welcome.63KViews1like8CommentsCommand Line args to goto channels directly?
Hello! So in our custom tools we try to give quick access to the responsible people. Its already possible to chat with co-workers in Teams with a click. In the background: getting the executable from `LOCALAPPDATA` + \Microsoft\Teams\current\Teams.exe works pretty reliable then just call this with `sip:name@company.com` and Voilà we chat! Now I'd like users to be able to goto public channels with a click. I can get a link with Get link to channel. But running Teams.exe with this link does nothing! Just opens up the Teams main window with whatever was just open. No change. I CAN just "run" this link with the webbrowser but then the user has to accept to always open the according links with MS Teams which is do-able but rather crude for some simpler users. And STILL one would have a useless web page open. Maybe the user doesn't even have a browser open... However it would be quite great to just go like: Teams.exe %channel_link% What command line switch do I need? Is there a list of command line switches? like the sip: one? I'd love to do sth like Teams.exe /? or -help ... btw: Currently there is a big fat ERROR msg when you do Teams on the console window: Error while parsing hooks JSON. Error: "ENOENT: no such file or directory, open 'C:\\Users\\techarteric\\AppData\\Roaming\\Microsoft\\Teams\\hooks.json'" (node:17212) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.Solved53KViews1like25CommentsHow to add multiple (camera) video streams to an MS Teams meeting (video conference)?
I work for a company that produces a video camera device (ie: webcam) that uses smart AI technology to produce a separate video stream for each person in the camera's field of view (in the room). We would like to each of the multiple camera video streams to an MS Teams meeting (video conference) as if they were separate participants (sitting at another computer attending the same video conference). Any thoughts on how we might do this?42KViews2likes8CommentsMisleading Error Message 53004
I wanted to document an issue I have spent a few months on (off and on) in hopes that the error messaging might be improved. The use case is that I can sign-in to Teams however, when I tried to switch orgs (guest access), I am seeing a "Your sign-in was blocked" error message on the screen with a body of, "We've detected something unusual about this sign-in."... I received the same experience when using the web app or the Teams client as well as both at work and at home. When I went into Azure, the failed authentication event said (example pasted at the bottom.) The actual issue was that there was an old unaddressed risky sign-in event that was never dismissed after it was addressed in August. Of course there is a business process gap however, if the both the user facing message and the Azure failed sign-in event had pointed me in the risky sign-in direction instead of an incomplete MFA registration I would have spent considerably less time trying to resolve this issue. I understand if this post needs to be redirected to a different group but I wanted to start by documenting it here to hopefully save someone else from burning their time and MS premier (though I did not actually find the resolution as a result of that ticket) hours on this. Date 2/10/2020, 11:34:59 AM Request ID e7faa82a-32e7-4d1c-8498-320946ed7500 Correlation ID d6581197-d1a2-470b-87d9-0c3283e1a1a2 Status Failure Sign-in error code 53004 Failure reason User needs to complete Multi-factor authentication registration process before accessing this content. User should register for multi-factor authentication. User REDACTED Username REDACTED User ID REDACTED Alternate sign-in name Application Microsoft Teams Application ID 1fec8e78-bce4-4aaf-ab1b-5451cc387264 Resource Microsoft Teams Services Resource ID cc15fd57-2c6c-4117-a88c-83b1d56b4bbe Client app Token issuer type Azure AD Token issuer name Latency 391ms User agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Zoom 3.6.0)40KViews1like9CommentsProgramatically accessing files shared in teams
My group has filed stored in teams channels. They're basically using excel files for data entry. I'd like to access them automatically/programatically for data analysis. Ideally in Python, but I'm open to any language. ANY solution that automatically mirrors a Teams file to a hard drive would be wonderful as an alternative. There is a REST API for 365 but it doesn't seem to provide the functionality I need based on the Microsoft.com docs, it's only for accessing files in public chat? See my stack overflow post here if you want to dive into some code: https://stackoverflow.com/questions/57103597/grabbing-files-from-microsoft-teams-using-python?noredirect=1#comment100729051_5710359738KViews0likes6CommentsSimple Workflow to Replace Teams Incoming Webhooks
Replacing Teams Connectors As you may be aware, Teams connectors have been deprecated (as discussed in Retirement of Office 365 connectors within Microsoft Teams). This means that a change to the connector URL must be made by December 31, 2024 (more information forthcoming) and that you should not create new webhooks by August 15 th , 2024. After August 15 th , 2024, you should be using the Power Automate Workflows app in Teams instead of webhooks. The connectors are being retired for several reasons, including security, scalability and flexibility. These are all requests our customers have made repeatedly in the past. Power Automate workflows are powerful 5 th generation programs which use a drag-and-drop, graphical user interface (GUI) paradigm to allow powerful data transformations and selective publishing to Teams. There is a lot of information for Power Automate Workflow at Browse and add workflows in Microsoft Teams - Microsoft Support. This article is not meant to make you an expert on Power Automate or Workflows. There are plenty of articles for you to read to become an expert. I just wanted to create an article on how you can recreate the original webhook experience. From there, you should be able to experiment with the new capabilities Workflows provide. Replacing an Incoming Webhook To replace the incoming connector, I’m going to start by creating a new team in my test tenant. All of this will be done using the Teams Web Client (because it’s easier for me to work with at present). From the Teams blade, I’ll press the ‘+’ symbol and choose ‘Create team.’ I’ll name my team a really thought-provoking name like ‘Webhook-Replace’ and give it an awesome description. I’ll then click on the ‘Create’ button. Teams will congratulate me for making such a great team with a great team name and ask me to add new members. I’ll add my System Admin account (just to make it easier for that account to delete this later) and Teams will drop me in the ‘General’ channel for this tab (all teams will have a default ‘General’ tab). Since it doesn’t matter to me where I make this webhook replacement, I’m fine with the General tab so I’ll just use it and not add another channel [Important Note: At the time I’m writing this, private channels do not work with Power Automate Workflows. My understanding is that they are working to expand Workflows to include private channels, but that work isn’t completed yet.] Install Power Automate Workflows Now, I need to install Power Automate Workflows into Teams. To do this, I’ll click on the ‘Apps’ button on the far-left vertical bar which will open up the apps I have available to install [Note: This list will be limited based on the App permission and App setup policies and/or App Centric Management. For App permission policies, if you don’t see Workflows in the Apps section, you need to discuss availability of this app with your Teams Administrator. Even if it appears in your apps, you may need to REQUEST the app in order to install it, depending on these policies. For App Centric Management, the App will need to be assigned to you in order to use it] In the apps application that opens up, you can type ‘Workflows’ in the ‘Search apps and more’ textbox to quickly find the app. Click the ‘Add’ or ‘Install’ button. This will open the Workflows setup/information dialog. From here, you can do a few things. If you just click the ‘Add’ button, it will install/add the app as a ‘one-on-one chat app’. This is actually what I want, so that it allows me to determine as I design the workflow, how it acts. For a webhook replacement, this is what I recommend. You can use the down carat and choose to add to a team, chat or meeting but I will leave you to experiment with these features. This adds the ‘Workflows’ app to the far-left application bar and opens the application. This is the Workflows App in Teams. Personally, I don’t like using it because it will occasionally make suggestions or assumptions that go beyond what I really want to do. So, I almost always use the ‘open in browser’ option from the upper right. This opens up the full Power Automate flow page. From the left, I’m going to choose the ‘Templates’ blade. In the ‘Search templates’, I’ll enter ‘Teams Webhook’ and hit enter to find the webhook templates. As you can see, you can start with a Teams template. The recommended template to begin with is ‘Post to a chat when a webhook request is received’ so that is what I will use here. We’ll change it after opening it and I’ll explain all of this in a moment. Choosing the template opens the flow connection. The ‘This flow will connect to:’ should be pre-populated with your username and contain a green checkmark. Click on ‘Continue’ and the flow will ask you which team and channel you wish to send to. Here, I’m going to use the dropdown to select ‘Webhook-Replace’ from my list of Teams. Then, I’ll choose the ‘General’ channel and choose to ‘Edit in advanced mode.’ You could simply choose ‘Create’ but that will automatically create the flow and we’ll need to edit it anyway. Clicking ‘Edit in advanced mode’ will display the current flow template. By default, this flow will take whatever is sent to the webhook and attempt to send it as an adaptive card. Generally, this won’t work. You need to do some transformation on the data, unless the application is sending an Adaptive Card – which most providers don’t do. Instead, most providers such as GitHub, send a JSON filled with data and events. Going through how to connect GitHub is out of scope for this article, though I may follow up with a GitHub case in a new article later. Likewise, creating an adaptive card to present in the Teams channel is outside the scope of this article. I’m just going to show you a simple JSON dataset and how to send it to a channel. For this, I’m going to use a very simple CURL commandline (from Windows) with a very small, easy JSON payload. It's just a lame payload with text and ‘hello world’ but this is just an article to show a simple webhook replacement. First, we need to get the URL from the ‘When a Teams webhook request is received’ step. Click on that step and it will open up the settings for the step. Copy the HTTP URL and place it in a safe place. (For me, I’ll use it in the Powershell curl.exe I have copied and pasted above). Even though the JSON payload here is simplistic, I still need to have the flow process it. In order to do that, I’m going to need to add something to this flow. So, I’ll choose the ‘+’ button between the two existing flow steps (because I need to parse the JSON between those two steps) and choose to ‘Add an action’. This opens the ‘Add an action’ popup on the left side. We want to process json, so I’ll enter ‘JSON’ in the search bar and look at my options. I see that ‘Data Oepration’ has a ‘Parse JSON’ option, so I’m going to choose that by clicking on it. This adds the action between the two steps, exactly like I wanted. This also opens the ‘Parse JSON’ settings because I still need to instruct this flow step on how to process the JSON content. I’ll click in the ‘Content’ textbox. This will bring up the ‘actions’ choices on the right side of the textbox. The lightning bolt means ‘Dynamic Content’. The ‘fx’ stands for formulas or expressions. I want to process Dynamic Content coming from the webhook step, so I’ll choose the lightning bolt. This brings up the potential content from the webhook step. The ‘Attachments Adaptive Card’ will allow you to parse any Adaptive Cards coming into the webhook. ‘Attachments Item’ processes a single attachment included to the webhook package. The ‘Attachments’ collection are any multiple attachments to the package sent to the webhook. Finally, the ‘Body’ just gives you the body of the package sent to the webhook. Since I’m sending a simple JSON body, that’s what I want here. Now, I have to supply the schema for the content I’m sending. At the very bottom of the textbox you have the option to ‘Use sample payload to generate schema.’ If you can’t write JSON Schema but you have a sample JSON payload that you’re sending, you can add it here and let the service process it. I’m going to do this, especially because this is such a simple payload. Clicking on this opens a window where you can type or paste a sample payload. I’ll enter my simple payload here and click the ‘Done’ button at the lower right corner which will populate the schema. You don’t need to ‘Save’ here; once entered it will remain until you change it. As I said, creating an adaptive card is beyond the scope of this article, so I’m going to delete that. I’ll Select the ‘Send each adaptive card’ to open the ‘Settings on the left’. Next, I’ll click the three dots on the right side of that popup and choose ‘Delete.’ Now, I’ll click the ‘+’ circle under the ‘Parse JSON’ and choose ‘Add an action’ to send a message to my team’s channel. This opens the ‘Add an action’ popup on the left. I want to add an action specific to Microsoft Teams, so I’ll select those from the available action categories. This brings up available steps for Microsoft Teams. I’ll scroll down and find the one I’m looking for – ‘Post message in a chat or channel.’ This opens the ‘Post message in a chat or channel’ settings. From here, I’ll want to ‘Post As’ a ‘Flow bot’ (you can change this to a user but there’ll be other settings necessary; I’m happy with the ‘Flow bot’). Next, I’ll drop down the ‘Post In’ selection box which will allow me to choose either a ‘channel’ or ‘group chat.’ Obviously, I want to post to a ‘channel’. Wait a second and this will open up further choices of which Team and channel. I’ll pick the ‘Webhook-Replace’ team and ‘General’ channel. Finally, I’ll click in the ‘Message’ textbox. In this box, I can actually type a message to send – but I’m interested in more ‘Dynamic Content’ so I’ll choose the lightning bolt and from the ‘Parse Json’ step, choose ‘body text’ (Note: If you look back at the automatic schema generated in the ‘Parse JSON’ step, you’ll see that ‘text’ is the only ‘Propery’ in the ‘Properties’ collection so this will post the VALUE (string) from the ‘text’ property). You might see that there are 2 ‘Advanced Parameters’ you can set. I’m not going to set them, but they will allow you to set a static or dynamic ‘Subject’ and ‘Hosted contents.’ With that, we’re done. From the bar on the upper right hand side of the screen we want to ‘Save’ the content (you can test with ‘flow checker’ if you want) and then click the ‘back’ arrow from the upper left on the same bar. You’ll get a pop up that says ‘Your flow is ready to go’. Just click ‘Got it’. The flow will have a title the same as the template. You can click ‘Edit’ for the details action and rename it, add a description and so on. I’m not going to – it’s time to TEST!! I click ‘enter’ on my Powershell curl.exe command and it processes! Conclusion As you can see, setting up a Power Automate webhook processor is not as simple as the old Teams ‘Incoming Webhook’ but it is much more scalable and flexible and, though I didn’t delve into the options here because this was a simple article to show how to replace the incoming webhook functionality, it can provide security to ensure that malicious actors can’t hijack your webhook and send data to your users.35KViews1like10Comments