How to make a Slack app independent of my account - slack

I'm making a Slack app (basic webhook for our CI to send Slack updates) to replace one that broke/disappeared when a colleague who created the Slack app left the company. But I realized, won't the app I'm making need to be replaced again when I one day leave the company (since it seems Slack apps are tied to the creator's account)?
So is there a way that I can setup this Slack app independent of my account so that it wouldn't be deleted with my work Slack account?

The best practice to do so is by creating a Service Account.
(Service accounts are a special type of non-human privileged account used to execute applications and run automated services, virtual machine instances, and other processes.)
Use this 'Service Account' for creating new apps and add people working on these apps as 'Collaborators'.

Related

What is the best way to setup a test user for a Microsoft teams app in a closed B2B platform

we are running a trading B2B platform were we cannot create testing accounts on a production environment.
Currently we are trying to submit an app to the Microsoft teams catalog, the submission process asks for test credentials to be used to test the app and the connection to the platform alongside the manifest file. however we can only provide sandbox test accounts, which will obviously cannot be used in the production app, and are hosted under different links.
in the manifest to be submitted we setup the production links for the app that needs to be submitted to the store.
The question here is how is this usually handled? how should we provide a sandbox test accounts and a production manifest at the same time for the app submission process?
Basically what Microsoft is asking for is credentials to a test Microsoft 365 tenant, where they can log in and install your app. Your app must for sure already be 100% "production" ready - live hosting etc., not a test setup behind the scenes.

Is it possible to create a custom app for Microsoft Teams that dosn't use a central service provider?

I am working on adding support for our cloud storage solution to MS Teams but there is no central server you can send http messages to and get meaningful relies back from. I have no experience with creating Teams apps so I was hoping someone with Teams apps experience could tell me if this is even possible. At this point I only need my app to work on Windows and OS X.
This is how I would like my Teams App to work:
Each member of the team already has our cloud storage app running locally on their machine which provides access to the files.
Within MS Teams the user adds a file reference to a message via a message extension that would result in a link unfurl creating a card that contains an 'Open' button. The URL in the card would be one generated by our locally running cloud storage app. Other members of the team could then open this file by clicking the 'Open' button. The action of the open button would be to send the URL to our cloud storage app that would then open the local copy of the file on that team members machine.
Is it possible to do something like this within a Teams app? The communication between the Teams app and our cloud storage app would be done over our own protocol.
If it weren't for the fact that all bot communication must be done over https rather than http the local cloud storage app could act as the server.
All the communication in Teams with 3P apps needs to happen over https public endpoint. You could use ngrok to tunnel to local.

Slack app and local storage

We are planning a Slack app but we need local storage, we do not want to store any data of user/channel at our server, we want to save it permanently or temporary on local machine of user or in Slack server.
Is there anyway to do it?
Thanks
Here are my thoughts on the topic:
Local storage solution
You would need to implement a "local" helper-app that every user needs to install. Keep in mind that Slack works on many different platforms. So you would either need to limit your app to certain platforms (e.g browser only), or develop a "helper-app" for all platforms that Slack is currently supporting (e.g. Browser, Windows desktop, Apple desktop, iPhone, Android).
You would still need to host your Slack app on a server. Slack requires you to provide a fixed URL to connect to your Slack app, e.g. to invoke a slash command or after pressing a button. Your app would then need to manage the connection with the local helper-app to access the local data storage.
So, I guess it would be technically possible, but would require a lot of effort. And since you will need to host your app on a server anyways, it might be more feasible to also put your user data there.
Storing data on the Slack server
It is possible to store user data on the slack server through the user profile. There one can add custom key/value pairs through users.profile.get and users.profile.set
However, this will not work for slack team related data, like the individual Slack token that is received during the app installation process and needed by the Slack app to use those API methods. So your app needs to at least store the app token centrally together with the slack app itself.

Cortana channel cannot be added

I am having an issue after migrating my Bot to Azure. I have a Bot that is up and running on Cortana Chanel as well. I previously published it only for me ‘Deployed to self’ so I can see it on my Cortana Canvas but now I want to publish it for group of people but I am unable to do it from Azure portal. Whenever I click on ‘Edit’ button of Cortana Channel through Azure Portal following error prompts me:
As per the error they are expecting me to use my Microsoft Personal Account (i.e. Hotmail or Outlook Account) but unfortunately in my case it’s not possible. I have azure subscriptions in my office account not in my personal account that’s why I migrated all my bots to my office account and now trying to configure it for other peoples (i.e. Deployment for Group) but because of the above error I could not do it. As I know previously it was very straight forward all we have to go to ‘Cortana Dashboard’ and there is an option of deployment by which we can easily publish our skill sets to the group of people by just adding there email address.
Could you please help me how can I resolve this issue? All I want to use my azure account (i.e. my company account) to configure the Cortana channel and other things like Deployment to Group of peoples.

Safely Storing Credentials for Different Users on Heroku Slack App

I'm making a Slack App and just implemented OAuth to take advantage of Slack's Web API. I am using the single Access Token for my particular team that I am testing on.
Should I want to distribute this app on the Slack App Directory, will I have to store the Access Token for every single team? How should I go about securely storing these? Will the Heroku database suffice?
Yes, your app needs to store the access token for each Slack team that installs it. And your app will need to access those tokens in order to enable access to that team's Slack (e.g. post a message). Most people will use a local database (e.g. MySQL) on the server to store the access tokens of each team.
No idea how secure the Heroku database is. However, since Heroku is a commercial service I would assume it can provide sufficient security for your app.

Resources