User Profile
adamhouck
Copper Contributor
Joined 5 years ago
User Widgets
Recent Discussions
Re: How to create a message Extension that does not require any additional parameters, no pop ups
I was able to get the desired functionality by having the following in my manifest.json file "composeExtensions": [ { "botId": "--Bot Id Here--", "canUpdateConfiguration": true, "commands": [ { "id": "commandId", "type": "action", "title": "Command Title", "description": "", "initialRun": true, "fetchTask": false, "context": [ "message" ] } ] } ],1.6KViews0likes2CommentsRe: How to create a message Extension that does not require any additional parameters, no pop ups
Lewis-H. Thanks for the reply but I think you are misreading my question. The popup is part of the teams flow right now, and I believe mandatory. Even if changing this setting in Chrome prevented the popup it would break the teams logic flow as far as I can tell. Also I wouldn't be able to force every customer who downloads the app to enable this. In addition, I assume most users would be on Mobile or use the Teams dedicated app.1.6KViews0likes4CommentsHow to create a message Extension that does not require any additional parameters, no pop ups
I want to make a message extension that simply sends the message text to the Message Handler endpoint configured in the associated bot. I would like to avoid showing the user additional popups as they provide no value in my use case. The "App Studio" and the schema requires some additional parameter to be present Is there not a way to simply have the user click on the message extension and that be the totality of the user interaction required?1.7KViews0likes6CommentsRe: Read Teams messages
abhikhopade2109 You could look at these API's, they are protected, but you can list the messages in a channelhttps://docs.microsoft.com/en-us/graph/api/channel-list-messages?view=graph-rest-beta&tabs=http I don't believe there is a way to get a stream of the messages sent to your service as they occur. If you want the users to specify which messages to send you, you can create a bot and when they mention the bot, the message will automatically get sent to your service.3.3KViews1like2CommentsRe: Bug? app catalog seems to be broken after many install/uninstall's of test app, no longer installs
Good news, after manually reinstalling the application and using the Graph API endpoints to uninstall then remove it from the app catalog I was able to clear out the references to it and now it installs again. It still shows up in the app catalog in admin.teams.microsoft.com, and throws an error when you try to click delete, but I that doesn't matter to me.1.1KViews0likes0CommentsRe: Bug? app catalog seems to be broken after many install/uninstall's of test app, no longer installs
Trinetra-MSFTsure, please see the attached file. Just to clarify the manifest seems to install fine manually, its just when using POST https://graph.microsoft.com/v1.0/appCatalogs/teamsApps Content-type: application/zip Content-length: {size} [Zip file containing a Teams app package] That seems to create issues.1.1KViews0likes1CommentBug? app catalog seems to be broken after many install/uninstall's of test app, no longer installs
I have been uploading my own app to our organization and removing it multiple times via the POST /appCatalogs/teamsApps endpoint then removing it via the Teams admin portal. After a while I would get an error in the Teams admin portal when I tried to remove it from the App Catalog. Eventually it would work itself out. (Error screen captured in attached image) Now the application does not show up in the Teams admin app catalog portal, or via calling GET /appCatalogs/teamsApps. BUT I get a 400 error when trying to upload the same app manifest file that succeeded before AND after manually uploading the manifest zip file into teams, teams stalled for a bit but now shows the app icon without the image. The application still is not listed in our catalog. Since this is still under development I tried to change the App ID and continue on, but this had the same result. In my developer instance of Teams, the app still shows in the Teams admin app catalog portal, but attempting to delete it results in an error. The app also does not show up when trying the endpoint GET/appCatalogs/teamsApps. Is this a bug internally to Microsoft? UPDATE: I made another completely different barebones test app with the App Studio and I get the same 400 error when attempting to POST /appCatalogs/teamsApps1.2KViews0likes3CommentsRe: How to have app send message to channel without configuring connector
Turns out it was due to using an outdated dependency, `botbuilder`https://github.com/microsoft/botframework-sdk#readmethough I was only on 4.7.2 and the latest was 4.8.0. We will probably forgo these dependencies in favor of working with the REST API's directly like Stackoverflow.https://stackoverflow.blog/2019/11/04/a-technical-deep-dive-into-our-ms-teams-integration/ Having our teams integration totally fail due to a slightly newer version of the botframework package coming out is not a longterm option.9.5KViews0likes0CommentsRe: How to have app send message to channel without configuring connector
subhasish-MSFTThank you, I successfully implemented this based off the Microsoft example herehttps://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/16.proactive-messages But I can't seem to authenticate correctly after restarting my server when using a saved conversation reference. I did put in a call to `MicrosoftAppCredentials.trustServiceURL()` as the example shows. Is there something else I am missing to authenticate after re-instantiating the `BotFrameworkAdapter` on server restart with a saved conversation reference? { Error: Authorization has been denied for this request. at new RestError (...../node_modules/@azure/ms-rest-js/lib/restError.ts:18:5) at ..../node_modules/@azure/ms-rest-js/lib/policies/deserializationPolicy.ts:117:27 at <anonymous> at process._tickDomainCallback (internal/process/next_tick.js:229:7) code: undefined, statusCode: 401, request: WebResource { streamResponseBody: false, url: 'https://smba.trafficmanager.net/amer/v3/conversations/{convo ID}%40thread.skype/activities/{activiyID}', method: 'POST', headers: HttpHeaders { _headersMap: [Object] }, body: '{"type":"message","serviceUrl":"https://smba.trafficmanager.net/amer/","channelId":"msteams","from":{"id":"{ID}","name":"CrossLead Dev Local"},"conversation":{"isGroup":true,"conversationType":"channel","id":"{ID}","tenantId":"{ID}"},"recipient":{"id":"{ID}","aadObjectId":"{ID}"},"text":"The bot encountered an error or bug.","inputHint":"acceptingInput","replyToId":"{ID}"}', query: undefined, formData: undefined, withCredentials: false, abortSignal: undefined, timeout: 0, onUploadProgress: undefined, onDownloadProgress: undefined, operationSpec: { httpMethod: 'POST', path: 'v3/conversations/{conversationId}/activities/{activityId}', urlParameters: [Array], requestBody: [Object], responses: [Object], serializer: [Object] } }, response: { body: '{"message":"Authorization has been denied for this request."}', headers: HttpHeaders { _headersMap: [Object] }, status: 401 }, body: { message: 'Authorization has been denied for this request.' } } const msBotAdapter = new BotFrameworkAdapter({ appId: {ID as string} appPassword: {ID as string}, }); //Some people also said to do this, but never used it anywhere. It doesn't seem to help const msCreditials = new MicrosoftAppCredentials( {ID as string}, {ID as string} ); //Save Conversation Reference from when the app was installed into teams const conversationReference: { [key: string]: Partial<ConversationReference>; } = { activityId: '{activity ID}', //@ts-ignore user: { id: '{ID}', aadObjectId: '{ID}', }, bot: { id: '{Bot Id}', name: '{Bot Name}', }, //@ts-ignore conversation: { isGroup: true, conversationType: 'channel', tenantId: '{tenant ID}', id: '19:{ID}@thread.skype', }, channelId: 'msteams', serviceUrl: 'https://smba.trafficmanager.net/amer/', }; const postMessage = async () => { MicrosoftAppCredentials.trustServiceUrl(conversationReference.serviceUrl); await msBotAdapter.continueConversation( conversationReference as any, async turnContext => { // If you encounter permission-related errors when sending this message, see // https://aka.ms/BotTrustServiceUrl await turnContext.sendActivity('test message); } ); }9.5KViews0likes1CommentRe: How to have app send message to channel without configuring connector
subhasish-MSFT thank you, this is exactly what I was looking for. At first I dismissed this approach because I didn't realize aConversationUpdate event was fired when the app was installed, I thought it needed direct user input. That being said if I save the Conversation Reference from the initial app installation, can I use that indefinitely to post in other channels of the Team, or will it expire at some point like an Oauth Token?9.7KViews0likes3CommentsHow to have app send message to channel without configuring connector
I know it is possible asMonday.comand Smartsheet integrations both do this. You can configure the app by allowing `adminconsent` and then selecting (on the web-service not in teams) which team & channel to have the service post to. Then the web application is able to make posts into that channel without the user configuring a connector/webhook. In addition when I look into the channel that was mapped, there is no connector configured. These apps have the exact functionality I'm looking for, and so far the only way to do this that I know of is to use the /messages graph apifound hereor to configure a connector. The /messages api cannot be used by the application as far as I can tell. Though Monday.com appears to have a disclaimer that they are utilizing the beta features of the graph api. So how can I have my Teams app send a message to a specific channel within an organization without having to have the user configure a connector?Solved9.8KViews0likes5CommentsCan I load an app to a Teams org without publishing the app publicly, and how to test?
The teams "app" I am creating integrates my web platform for the users of the platform. People outside of my platform do not need the teams app. After I get an oauth token from the organization's admin, can I install the Teams app onto their Teams instance without actually publishing the app to the app store? But also equally important, how can I set up a test instance for this? The permissions require the admin of an organization (not school or personal account). How do I set up a test teams tenant, does it require me to have a paid subscription to the developer community?1.1KViews0likes1CommentRe: How to create connector programmatically?
Trinetra-MSFTLooking at these examples I don't think a connector is what I need. I want to have more flexibility and not need the user to manually install it to every team in their organization then enable it on each channel. Looking at theGraph APIit looks like utilizing oAuth to get a token, then being able to post a message to any channel on any team on behalf of a user is the functionality I am looking for. However, to request the permission "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize" It looks like the Teams account has to be work or school which is fine, but that the user requesting it has to be the administrator. How can I set up a test environment for this? When I create my own teams account it is setup as personal.2.3KViews0likes1CommentHow to create connector programmatically?
I have a web application that has channels that I would like to allow the users to map 1:1 to channels in Teams. The channels will always keep the 1:1 mapping so as they create channels in the application or teams I would like to have them be able to create a connector between the two so that they can send massages to Teams. I've already completed this with Slack (https://api.slack.com/messaging/webhooks#generating_incoming_webhook_urls_programmatically). But the documentation for Teams makes it seem like a connector is a static/rigid entity that has to be manually mapped by a user. Is this true? If so what is anot2.3KViews0likes3Comments
Recent Blog Articles
No content to show