Mentioning Guest using Slack Bot? - slack

I have numerous guests in my channel.
I'd like my bot to mention these guests in a # mention, but bots don't seem to see channel guests. It find other full users fine, just none of the guests.
Is this an intentional limitation of Slack or does the bot require more permissions?
I'm using the slackclient module (Python) and making the following call:
sc.client.api_call(
"chat.postMessage",
channel="#channel",
link_names=1,
text="#aaron.layfield <-- Working #guest.name <-- Not working This is a message."
)

If you want to link to users from inside of your message, the best format to use is <#USERID> instead of #username. This is because Slack has moved away from using usernames, and towards a more flexible concept of display names, which aren't guaranteed to be unique or immutable.
So in this case, you would do something like
curl --request 'POST' 'https://slack.com/api/chat.postMessage?token=xoxb-21321321-1231321321321-dsfasdgdsfaghsdfhsdfh&channel=C9UFK5F5S&text=Hey <#UFBKH3B63>'
Which would render as
Hey #Colm Doyle

As already explained by Colm's answer the #username syntax is depreciated and you should use the ID syntax instead for mentions.
To get the IDs for your guest users call users.list to get a list of all users in your workspace. Then iterate through that list to match guest name with ID.

Related

Slack slash command: Respond as user, not app

When sending the response to a Slack slash command, I would like to send it under the user that has launched the slach command.
I have created a Slack app with a slash command. It calls my Flask webservice and I use the "response_url" webhook to write something back to the channel. The response in the channel is given by my app. This works as expected. But I would like for the response to be displayed as if a user has given it.
An example would be the Slack plugin from giphy. If I call it, I get an ephemeral message to choose the gif I would like. But then it is posted in the channel under my name.
So I have 2 questions:
How does the API call look like to respond to the slash command as a specific user?
What permissions for my app are required to allow for such behaviour of the app?
The Slack API documentation is comprehensive, but much research didn't yield the result I wanted.
Thanks!
When you are using response_url, you can't customize your username or icon. For this, you'll need to use chat.postMessage API method. There are now two ways to achieve what you need here:
Use user token: This gives you access to take actions on the behalf of the user. Although, you'll need to take authorization from every user you want post the message as.
Request chat:write.customize scope with your bot token: You can post a message with icon_url and username parameters where you can provide the user's icon and name respectively for both the parameters. This is much easier, as this only requires one-time authorization.
More information in the official documentation.

Is it possible to update a group's auto-reply settings using the API?

I'm using Gmail.Users.Settings.updateVacation to update our customer service rep's vacation responses automatically over the weekend and after-hours, so our customers who e-mail when we're not in the office get an informative message of when they can expect a response.
I am attempting to do the same thing with our Google Groups, but have not been able to find the correct API call. If I use the same method as above, but with a group's e-mail address, I get a "Delegation denied" error (even though I'm an Owner of the group). I suspect this is because a Group is not a User, and is just different.
I've found the Manage Group Settings API, which essentially has just one update method, and you use properties to specify what you want to update on the group. The problem is, there is no auto-reply property name that I can find.
How do I update a Group's auto-reply settings?
Many thanks!
Unfortunately, what you want cannot be achieved through the API.
All the possible methods are present in the Groups Settings API so if you didn't find the expected method there, then it means that is not possible through the API.
What you can do instead is to file a Feature Request here and provide all the necessary details.
Reference
Groups Settings API - Groups Resource.

Google People API Field parameter not working

There seems to be issue with the google people api.
If you go to the following link to test out the api,
https://developers.google.com/apis-explorer/#p/people/v1/people.people.connections.list
try:
GET https://people.googleapis.com/v1/people/me/connections?sortOrder=FIRST_NAME_ASCENDING&fields=connections(emailAddresses%2Cnames)&key={YOUR_API_KEY}
The results does not display the email address of the contact even thou it is specified in the fields.
Thanks,
Derek
You want to supply the requestMask parameter and ask for the email addresses and names explicitly:
This updated query should work:
https://people.googleapis.com/v1/people/me/connections?sortOrder=FIRST_NAME_ASCENDING&requestMask.includeField=person.emailAddresses,person.names&fields=connections(emailAddresses%2Cnames)&key={YOUR_API_KEY}

How do I correlate user between channels?

From what I see, Bot Framework is providing an abstraction over users in different channels by providing a ChannelAccount class that has ChannelId/Address pair to identify user via its account and Id property, which is... okay, here's the question.
I suppose that the idea behind Id is to provide a unique and persistent identifier that can be used to cross-correlate users between account (i.e., I can say that Slack user #alpha is also email user alpha#company.con). This idea is supported by the fact that ChannelAccount for my bot always has same Id regardless of the channel (and Address is different between channels, obviously).
If this is right, and I hope it is, is there any way to provide BotConnector with the correlation information? I.e., I want BotConnector to give me ChannelId/Address, and I'd give back user Id which I'd the get back in incoming message.
The purpose of this is quite simple: I want the code inside my bot to use the Id as already correlated identifier so that I can log it, build logic from it and so on.
BotFramework does not yet support linking of accounts. In the interim, take a look at this post for one way you might implement a solution:
Why isn't BotUserData persisting and retrievable in my Bot Framework bot?

Checking multiple lists for one email address in MailChimp API 3.0

In MailChimp API 2.0 there was a single command, helper/lists-for-email, that would return all of my lists that a particular email address was subscribed to.
https://apidocs.mailchimp.com/api/2.0/helper/lists-for-email.php
I'm having trouble finding anything similar in MailChimp API 3.0.
http://developer.mailchimp.com/documentation/mailchimp/reference/overview/
We have our own page on our website for managing newsletter preferences, and we need to be able to have some of our list options pre-checked when a logged-in user looks at the list, based on which lists he is subscribed to. All I have been able to figure to do is to check the API for each list individually (10 different API calls) to see if a specific email address is subscribed, but this takes a very long time and I am concerned it may time out for some users depending on network traffic. Either way, it's so long that it's an awful user experience.
Is there one API 3.0 call I can make to find out which of my lists a user is subscribed to, like there was in 2.0?
There is now a solution using the following API:
http://developer.mailchimp.com/documentation/mailchimp/reference/lists/#read-get_lists
You can include the "email" field to filter by a user's email.

Resources