Deep Link error - slack-api

Trying to deep link from a mediawiki uri to a slack channel using
slack://channel?team={TEAM_ID}&id={CHANNEL_ID}
I'm confident in both TEAM_ID and CHANNEL_ID, and slack app opens, but I get a slack error
You tried to perform an action on a team you’re not yet logged into! Sorry, no can do :/
I'm actually looking at the target team when I get the error displayed.
Thoughts?

Make sure you enter the TEAM_ID which is completely different from the team name.
Just log in to your Slack team in a browser, open the developer tools and watch the console, you'll see both USER_ID and TEAM_ID as following:
2017/9/4 14:37:52.747 BOOT: Finished first boot 3247 ms after DOM ready
2017/9/4 14:37:52.747 User id: U02A6ESU2, team id: T10A2F3GM
2017/9/4 14:37:54.578 Finished processing users.counts
2017/9/4 14:37:54.578 0 IMs with unreads, 0 total dm_count

Related

Slack api conversations.history returns error: not_in_channel

I'm starting out with the Slack API and trying to just get a list of messages.
Here are my steps:
Created a Slack app and gave it channels:read and channels:history scope (also re-installed it)
Queried the list of channels with conversations.list (this worked fine)
From the output of conversations.list, I found a channel that I use and copied the id
Used the conversations.history api with the channelid from step 3
Result:
{ "ok": false, "error": "not_in_channel" }
I'm not at all sure what is happening here. I definitely have messages in the channel, and the documentation page for that api does not say anything about this "not_in_channel" error code.
What am I doing wrong?
After a long time of investigations (~2 hours), I found an easy approach. For Caleb's answer, I didn't understand how to invite a Bot to the channel. Hence, I am posting this answer.
Go to your Slack Channel and type the following as a message.
/invite #BOT_NAME
Eg: If your Bot name is SRE Incident Manager the command would be as follows.
/invite #sre_incident_manager
As soon as you start typing #, Slack will automatically suggest. So it becomes easy. For this, the Bot needs to be added to your Slack Workspace.
PS: Original answer.
The error not_in_channel has the exact meaning, your custom Slack app should be added to the channel.
Exact solution 1
To resolve the error, in the Web Slack interface:
Open channel settings
Click on the Integrations tab
Click Add apps and find your custom app.
Slack app might have different interface, see Iryna Vernik's answer.
Alternative solution 2
Give access to the bot to all channels by adding workspace wide scope, for example, chat:write.public. Depends on your needs and security requirements.
Alternative solution 3
To access the channel chat from API specify Incoming webhook. Slack will generate a unique URL with the token per each channel. Only convenient for a few channels.
This error arises when you are using the bot oauth token and the bot is not invited to the channel. To solve this you need to
Invite the bot(slack app) to join the channel.
Use the OAuth Access Token instead
To add Bot to your channel you need to write /invite #Bot_name in the slack channel
I also didn't understand how to invite a Bot to the channel. Way that was proposed by Caleb and Keet was not clear for me or not working. From my side, 'invite' work after
open channel
in Details tab, choose a 'More'clause
in dropdown menu, chouse an 'add app'
in pop-up look for you app (bot)
Also i was use Bot User OAuth Access Token, because i need this functionality in private channel (additionaly, you should add for bot groups:history scope)
FOr me, instead of invite a user/bot, I invite the app.
I'm getting started with the Slack API as well, and I've come to realize that not_in_channel simply means that the user/bot you are using the token for hasn't joined that particular channel you're trying to perform an action on.
Think of it this way: if you're using Slack on the web-browser or web-app, you wouldn't be able to post a message on a channel you haven't either joined or was invited to.
☝️ You'll also never run into this issue through the Slack UI/UX because you're not even able to access the channels UNTIL you are invited or join it.
Click to see png example of a slack message stating my bot being added to a channel
However, because we're using the API we can essentially skip some steps, and in this case we skipped the step where a user/bot has joined the channel before doing the action we're trying to perform (writing a message, grabbing information, etc).
πŸ’ͺ How to address this
There's probably plenty of ways to do it that I'm not versed in, but if you're just concerned about a specific channel or two without the concern of scaling to x channels I'll list the way that worked for me.
πŸ“‡ /invite Slash Command
As others have mentioned, putting /invite in the message box lets you use Slack's slash command shortcut to add users. What's important is this way also allows us to invite bots to the channel.
Putting "#" triggers Slack to start auto-suggesting, which is why it then becomes easy to find your bot name in the list.
Click here to see screenshot example of the /invite command with #bot_name_here
Hope this helps answer people's question on why it's happening, and thank you to the original posts that got me out of my initial mess. πŸ™
As all others said, you need to join each channel.
The bot can join channel programmatically by using API below:
https://api.slack.com/methods/conversations.join
Don't forget to add permission of conversations.join

How to get Youtube channel page id for creating Google BQ DTS

How to get YouTube channel page id for creating Google BigQuery Data Transfer Service YouTube Channel as data source.
Trying to create transfer service from BQ console and CLI. Getting the following error from console and CLI.
Now I am using the pageId from this YouTube Channel URL: https://www.youtube.com/channel/XXXXXXXXXYYYYYYYYYY
From CLI:
bq mk --transfer_config --project_id=test-dts --target_dataset=YTChannelDTS --display_name='YTChannelTest' --params='{"page_id":"XXXXXXXXXYYYYYYYYYY","table_suffix":"MT","configure_jobs":"true"}' --data_source='youtube_channel'
BigQuery error in mk operation: Request contains an invalid argument.
From Console: refer the below image(error marked in red colour).
Navigate to https://www.youtube.com/account_advanced in order to see your YouTube account settings. You will then see a value for YouTube Channel ID. This is what you pass to BigQuery.
Update: After trying to replicate the above steps on a project that I was the Owner on, I encountered the same error message. The workaround was to:
Go to the IAM admin page
Select the project that will be housing your data transfer BigQuery dataset
Find your account
Add the BigQuery Admin privilege to your account
Retry the steps to set up your data transfer
Besides "Channel page ID", the help button says that it needs "The page ID of the Google+ page associated with the channel."
You can get it by visiting Google plus and then clicking on profile. The pageID will get appended to the URL:
https://plus.google.com/< pageID >
I cannot fully test this because I have just set up a reporting job and it can take up to 48 hours to get created so, for me, right now it fails with a "No reporting jobs found - please ensure that reporting jobs exist." but it looks that the transfer itself was created correctly.
On a side note, Gplus will soon be discontinued for personal accounts so, for such transfers to still work after April 2 on such accounts, I think you'll probably need to "Move channel to Brand Account". This option can be found under Account settings

Get "Target URL ... is not allowed" error message when actioning Outlook actionable message for external email user

We're developing a connector that creates actionable outlook messages for external users. I.E. This is a service. Can anyone please help with the below example? We're getting an error for the external users when they try to action the message by clicking on one of the action buttons.
Example:
User A is on the tenant that registered the connector - Tenant A,
User B is on another Office 365 tenant, Tenant B.
We've created an Office 365 connector targeting the user's "Inbox"
The connector has not been published to the store but is still in dev.
So to be clear we're not implementing our solution using "Actionable Email".
We can create the actionable message for both User A and B, no problems so both users get the email. But only User A ( on the tenant that registered the connector ) can click an Action button from Outlook. User B gets the error message:
"Target URL 'https://nameomitted.com/method' is not allowed"
We are not receiving anything at our web server end from the call. The console error from the browser when clicking the action button is:
So the error is generated from Microsoft internally.
Can we only send to users in the same tenant as the one that registered the connector until we've published to the store? That seems restrictive for development.
Any help is greatly appreciated.
Is your connector's registration pending or approved?
Pending connector's functionality is limited. Most cross tenant operations are blocked.
In my case, I was using a different URL which was not registered in the Provider. If both the end points (in the provider & in the Adaptive Card JSON) match, then only it will work.

Diaglogflow account linking failed for Visual Studio Online

I have spent a lot of time lately trying to link MS VSTS account with Dialogflow. Unfortunately all my attempts failed and I am unable to find out the reason for this.
What I have done so far is:
Went to registered new VSO application (https://app.vsaex.visualstudio.com/app/register), filling in the correct callback URI (https://oauth-redirect.googleusercontent.com/r/MY_PROJECT_ID) also defining the proper scopes.
Got back to Google's action console overview page (https://console.actions.google.com/project/MY_PROJECT_ID/overview/accounts) to fill in the details for the newly created application (authorize URL, token URL etc.) selecting Authentication Code grant type.
Went to Dialogflow to set the "sign in required" for the welcome intent.
Update the action and got the "It looks like your account is not linked yet" message in simulator, but after using the DEBUG URL to complete the process, I received "account linking failed" message for no obvious reason.
I have also tried the linking procedure with 2 other OAUTH providers and it was working flawlessly, but the MS implementation apparently is not standard.

TFS 2018 Email Notifications not sending out

I have been working on a new TFS 2018 install and I have everything setup with the exception of email notifications. I setup in the admin console the SMTP relay information and when i click test and enter in my email, I get the test notification. Now when i switch to the TFS web console and I create a new work item and assign it to a user the user never gets an email. I have verified that the team notification are on and there is a notification setup for when a work item is assigned. Is there something Im missing, is there a log I need to enable to show if there are errors sending emails out?
any help would be great.
Firstly, please make sure you have created the subscriptions correctly and the SMTP server is OK. See Manage notifications for a team.
Based on my test, teams who are not part of Contributors group are not able to receive email notifications.
So, if your project team is not a member of the Contributors group, just add the team to the group. Then try it again.
Another workaround is using the email address directly when creating the subscriptions. This should be related to the AD sync issue. Refer to this thread for details: .
Without Active Directory, TFS will not send team alerts. Users can set
their preferred email address, which TFS will then sync to Active
Directory as the "[Member's default email address]". If no Active
Directory is found, that sync won't work, which means their default
email is blank. Blank email means no alert sent (which means no error
about the sending failing either).

Resources