I have created Creating Office 365 Connectors for Microsoft Teams successfully. I can send message card to a teams channel. The message card contains an "HttpPOST" action, however when I click button I get an error inside the MS teams apps. The application tries to post to the following https://teams.microsoft.com/api/mt/emea/beta/users/connectors/19:0a75441f3c8340938d5f0789116fb5d5#thread.tacv2;messageid=1620161396652/1620161396652/executeAction, however it receives the following error message {"errorCode":"Forbidden"}.
My connector is register succesfully, with the question "Do you want to enable actions on your Connector cards?" set to yes.
Anybody has any ideas?
{
"#type": "MessageCard",
"#context": "http://schema.org/extensions",
"themeColor": "0076D7",
"summary": "Larry Bryant created a new task",
"sections": [{
"activityTitle": "Larry Bryant created a new task",
"activitySubtitle": "On Project Tango",
"activityImage": "https://teamsnodesample.azurewebsites.net/static/img/image5.png",
"facts": [{
"name": "Assigned to",
"value": "Unassigned"
}, {
"name": "Due date",
"value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
}, {
"name": "Status",
"value": "Not started"
}],
"markdown": true
}],
"potentialAction": [{
"#type": "ActionCard",
"name": "Add a comment",
"inputs": [{
"#type": "TextInput",
"id": "comment",
"isMultiline": false,
"title": "Add a comment here for this task"
}],
"actions": [{
"#type": "HttpPOST",
"name": "Add comment",
"target": "<my url>"
}]
}]
}
I will close this question. I have found the answer. I was using a normal O365 business license, and not a developer license.
Related
I have an Azure bot that we are using to build a message extension functionality in Microsoft Teams.
Users access it via the conversation feature in team channel. It works by taking a search string entered by a user in the message extension, searching our database for matching entries, and once an entry is selected posting a message into a team channel linking to the resource.
It is working as expected in all environments except for Production, where we see the following behaviour:
Some search strings return the expected ("nothing found") response
But most search strings return a 502 error. The bot's log says "The bot is not part of the conversation roster"
We are sideloading the manifest for the bot and its associated tab app. As far as I can tell, there are no differences in bot or app setup between Production and the other apps we setup (QA, staging, etc)
I've checked the other SO posts and those on the Microsoft PowerUsers forum. They mostly say that the bot needs to be added to Teams in Azure, but this has been done. And it's working for all of our environments except for Production...
This is the manifest. It references the eduMe app already published in AppSource:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.11/MicrosoftTeams.schema.json",
"manifestVersion": "1.11",
"version": "1.1.3",
"id": "28beac77-2765-4248-8a25-02779d7242ca",
"packageName": "com.microsoft.teams.extension",
"developer": {
"name": "eduMe",
"websiteUrl": "https://edume.com",
"privacyUrl": "https://edume.com",
"termsOfUseUrl": "https://edume.com"
},
"icons": {
"color": "resources/edume-hexamark.png",
"outline": "resources/edume-outline-hexamark.png"
},
"name": {
"short": "eduMe Beta_test2",
"full": "eduMe Beta_test2"
},
"description": {
"short": "Giving the deskless workforce seamless access to relevant knowledge",
"full": "Training your workforce doesn't need to be painful. No more clunky authoring tools and dated, desktop based learning. eduMe helps you deliver the training when and where your workforce need it."
},
"accentColor": "#F3F3FF",
"bots": [
{
"botId": "e9aa4df6-ed17-423f-bb7a-5cb1f6f090d7",
"scopes": ["personal", "team", "groupchat"],
"supportsFiles": false,
"isNotificationOnly": true
}
],
"composeExtensions": [
{
"botId": "29b96f25-2032-4fa4-8abd-5ac8f652699f",
"commands": [
{
"id": "searchQuery",
"context": ["compose", "commandBox"],
"description": "Command to search courses.",
"title": "Search",
"type": "query",
"parameters": [
{
"name": "searchQuery",
"title": "Search Query",
"description": "Your search query",
"inputType": "text"
}
]
}
]
}
],
"configurableTabs": [
{
"configurationUrl": "https://edume-ms-teams.herokuapp.com/index.html#/config",
"canUpdateConfiguration": true,
"scopes": ["team", "groupchat"]
}
],
"staticTabs": [
{
"entityId": "index",
"name": "Home",
"contentUrl": "https://edume-ms-teams.herokuapp.com/index.html#/tab",
"websiteUrl": "https://edume-ms-teams.herokuapp.com/index.html#/tab",
"scopes": ["personal"]
}
],
"permissions": ["identity", "messageTeamMembers"],
"validDomains": [
"localhost",
"*.microsoftonline.com",
"*.herokuapp.com",
"*.botframework.com",
"edume.com"
],
"webApplicationInfo": {
"id": "29b96f25-2032-4fa4-8abd-5ac8f652699f",
"resource": "api://edume-ms-teams.herokuapp.com/29b96f25-2032-4fa4-8abd-5ac8f652699f"
}
}
Working with a new Microsoft Teams App (a Bot, built with the MS Bot Framework, and deployed to Azure). Whether using the soon-to-be-deprecated App Studio, or the soon-to-replace-it Preview of the Developer Portal, attempting to install directly or to download the manifest and sideload to teams, in every case the following image is displayed:
The message "Manifest parsing has failed" is quite unhelpful. I am mystified that Microsoft is not supplying some additional information about WHAT failed. Is there a log file somewhere that I can find the actual problem?
UPDATE RESPONDING TO COMMENTS:
One kind commenter pointed me to a similar SO question, but the suggested solution (setting manfestVersion from that currently generated at 1.9 to 1.7) did not work. Behavior was identical.
Another commenter asked me to provide the manifest scrubbed of identifying information. Here it is:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.9/MicrosoftTeams.schema.json",
"version": "1.0.0",
"manifestVersion": "1.9",
"id": "VALID-GUID",
"packageName": "com.package.name",
"name": {
"short": "Stephan Trial App",
"full": ""
},
"developer": {
"name": "Valid Company",
"mpnId": "Correct mpnId",
"websiteUrl": "https://www.thiscompany.com",
"privacyUrl": "https://www.thiscompany.com/legal/privacy-policy/",
"termsOfUseUrl": "https://www.thiscompany.com/legal/terms-of-use/"
},
"description": {
"short": "Stephan's App's Short Description",
"full": "Stephan's App's Longer Description"
},
"icons": {
"outline": "outline.png",
"color": "color.png"
},
"accentColor": "#FFFFFF",
"bots": [
{
"botId": "VALID-CORRECT-GUID",
"scopes": [
"team",
"personal"
],
"isNotificationOnly": false,
"supportsFiles": false
}
],
"composeExtensions": [
{
"botId": "SAME-VALID-CORRECT-GUID-AS-BOT-ABOVE",
"commands": [
{
"id": "CmdID",
"type": "query",
"title": "Command Title",
"description": "Command Description",
"initialRun": true,
"fetchTask": false,
"context": [
"commandBox",
"compose",
"message"
],
"parameters": [
{
"name": "ParmID",
"title": "Parameter Title",
"description": "Parameter Description",
"inputType": "Text",
"choices": []
}
]
}
],
"canUpdateConfiguration": true,
"messageHandlers": []
}
],
"validDomains": [],
"devicePermissions": [
"geolocation"
]
}
I think I found the problem. Within composeExtensions > commands > parameters you have inputType but it's set to 'Text' (capital T) which is invalid - it needs to be 'text' (small 't'). Try that and it should be fine.
I am using the yeomen generator to create a Microsoft Teams Application with NodeJS and React. https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/quickstarts/create-personal-tab-node-yeoman
I implemented the "isFullScreen" option into the Schema, but it just doesn't work. Here my Schema:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",
"packageName": "TeamsApp",
"id": "8af948a0-0fc1-409c-942a-9376fc2d7f46",
"version": "1.0.2",
"isFullScreen": true,
"showLoadingIndicator": true,
"developer": {
"name": "xxx GmbH",
"websiteUrl": "https://www.xxx.de",
"privacyUrl": "https://www.xxx.de/Datenschutz",
"termsOfUseUrl": "https://www.xxx.de",
"mpnId": "1512061"
},
"name": {
"short": "Teams App",
"full": "Teams App Tool "
},
"description": {
"short": "xxx",
"full": "xxx"
},
"icons": {
"outline": "icon-outline.png",
"color": "icon-color.png"
},
"accentColor": "#004578",
"staticTabs": [
{
"contentUrl": "https://xxx.ngrok.io/overviewTab",
"entityId": "TeamsApp",
"name": "Overview",
"scopes": ["personal"]
}
],
"validDomains": [
"*.eu.ngrok.io"
]
}
I Developed a Microsoft Teams App with SPfx before and there the option worked completely fine. I also tried using the App Studio Application where the "isFullScreen" option is displayed, but even there it does not do anything.
In a another Post from 3 Months ago they just said it should work now. isFullScreen manifest setting doesn't do anything
"isFullScreen" works only with LoB Store Apps.
I cannot retrieve a subEntityId on a Teams tab app from a deep link. It's always empty in getContext. Could anyone please help me out?
I generated a deep link as following this page, https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/deep-links
The link looks like this,
https://teams.microsoft.com/l/entity/58061894-78f0-49c3-99d7-25830d1c84f0/anpi-personal&context=%7B%22subEntityId%22:%22task123%22%7D
The link works as it expected, it brings me to the tab app on Teams. But no subEntityId.
The manifest of the tab app looks like this,
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",
"version": "1.0.0",
"id": "58061894-78f0-49c3-99d7-25830d1c84f0",
"packageName": "something.package.name",
"developer": {
"name": "dev",
"websiteUrl": "some url",
"privacyUrl": "some url",
"termsOfUseUrl": "some url"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "some name",
"full": "some text"
},
"description": {
"short": "some text",
"full": "some text"
},
"accentColor": "#FFFFFF",
"staticTabs": [
{
"entityId": "anpi-personal",
"name": "app name",
"contentUrl": "https://exmample.com/Default.aspx?entityId={entityId}&subEntityId={subEntityId}",
"scopes": [
"personal"
]
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"foo.com"
],
"webApplicationInfo": {
"id": "13958568-6984-47d4-910f-7bb9c87078c2",
"resource": "api://exmample.com/13958568-6984-47d4-910f-7bb9c87078c2"
}
}
I think you need to change:
...anpi-personal&context=%7B%22subEntityId%22:%22task123%22%7D
to:
...anpi-personal?context=%7B%22subEntityId%22:%22task123%22%7D
the change is hard to see - I've changed "&context" to "?context" - "&" is required if you have -multiple- values you're passing (like "weburl=something" AND "context=something"), but in this case you only have "context", so it needs to start with "?"
I am posting a actionable message card to Microsoft team's channel using custom incoming webhook. However, I am not able to hit the target url using 'HttpPOST' action. I have provided accurate target url. I am able to post to that url through other sources. Whenever I click on button with given action, 'Could not complete the requested action. Please try again later.' this message is displayed.
Following is my JSON for message card. Target url is dummy. Please help.
{
"#type": "MessageCard",
"#context": "http://schema.org/extensions",
"themeColor": "0076D7",
"summary": "Larry Bryant created a new task",
"potentialAction": [{
"#type": "ActionCard",
"name": "Add a comment",
"inputs": [{
"#type": "TextInput",
"id": "comment",
"isMultiline": false,
"title": "Add a comment here for this task"
}],
"actions": [{
"#type": "HttpPOST",
"name": "Add comment",
"body":"hello",
"bodyContentType":"application/json",
"target":"https://demo.xyz.com/abc"
}]
}
]
}
Issue was resolved after using MS Teams with developer license.