Slack Web hook - Attach a git diff - slack-api

I am looking to add a simple webhook to Slack my team git diffs when certain files on certain branches are updated. The webhook is working, however I am only sending plain text. I'd like to be able to send the payload so it appears the same as if a user were to 'Add Attachment' and set the type to 'Diff'.
All the docs I can find are about sending media or unfurling links like youtube or cnn. Could someone point me in the right direction. I tried creating a bot to read the JSON of a similar message, but it seems much more complex than I expected, with fields like url_private_download which I wasn't expecting. All I got, was that it is uploaded as an attachment.

Here are two ways how you could send information about a git diff to Slack: Attachments and File uploads
Attachments can contain text and one image. They are limited in size, but you can add up to 20 (official recommendation) / 100 (hard limit) to one message. They work with all methods for sending messages, including the incoming webhook you mentioned as requirement.
File uploads mean that you are literally uploading a file to you Slack team. You need to share it in a channel to make it visible as new post. It can not be attached to a normal message, but you can add comments to it. This will not work with incoming webhooks though. You will need need to use the API method file.upload to upload and share your file. Slack supports a variety of file types, but for a git diff I would recommend "text".

Related

Zapier: How to post tweets from trello multiple attachments of images?

I am using a zapier zap to post tweet from trello card added to a specific list.
The description part goes to tweet text and attachment image goes to image of tweet.
In case of one image attachment works well. I use zapier formatter to extract an image url from trello card's attachment.
But I want to tweet more than 1 images. In that case zapier pass the multiple attachments as one zipped file contains attached images. So it fails to pass it to the twitter as invalid media format because it is zipped format but not image format just like .jpg, or .png.
How can I implement this?
Thank you in advance.
What you're describing is expected behavior in how the hydration process is handled for multiple images.
You might be able to use a third-party service like - https://zapier.com/apps/convertapi/integrations app to get these files unzipped within the editor.
With that said, afaik, unless you're creating your own private dev Twitter app, the main app only able to accept one image per post at the moment.

Twilio: Is there a way to export all opt outs?

I want to export everyone who has reply stop (opt out) for my messages. I see that my options are
API. However, through the API I can see that I get everything in pages of 50 messages, so I have to go and do a lot of code to go page by page, message by message just to check if the content is stop. Seems a bit unnecessary for a 1 time job.
From the console in my account, however when each time i try to filter on status received I get the following error, and when I dont filter I get error:
Your export request has more than 10,000 records, please filter your results and try again.
Surely there must be an easy way that I can get all the list of numbers that had opt out?
This answer above is not strictly true as of October 2020. Twilio now has an "insights" dashboard that allows you to view and download "Opt outs Received". When you click on that dashboard you are able to see and download the information.
It is under: Programmable Messaging -> Monitor -> Insights
Our account has "Opt-Out Management" enabled and this addition has been a game changer in finding out what users have or have not done in our system.
There isn't a way to export all opt-outs for LC's/TF's that Twilio maintains on your behalf but opt-outs are forwarded to your application for logging as well as added to the Twilio maintained opt-out list. Your application can keep track of the opt-outs this way. You can find more details in the Help Center article below.
Twilio support for opt-out keywords (SMS STOP filtering)
"When Twilio receives one of these replies, we will create a "blacklist" entry on our side, and then pass the message on to your webhook. Once we have a blacklist entry for a particular recipient phone number, any future attempts to message them will be met with a 400 response from our API, along with Error Code 21610 - Message cannot be sent to the 'To' number because the customer has replied with STOP. Recipients can disable this message stop, and resume receiving messages with the START, YES, or UNSTOP commands as outlined below."
Also, if you use the Twilio helper library for the respective language, it handles the paging for you, for example, for Node.js, reference.
Usage and Migration Guide for Twilio's Node.js Helper Library 3.x
"One of the biggest advantages of twilio-node 3.x is that it automatically handles paging for you! In both list and each, you can specify the maximum number of instances to grab (limit), and the page size (pageSize). The library will take care of everything else."

Use mention in dialog Slack

I have developed a slack bot which purpose is to give details about the company's projects.
I tried to use slack dialog to ask for different information such as the name, a description and the people involved in the project.
To do the last part (people involved), I wanted to use mention (#), so that the person who adds the project doesn't have to know the exact name / email of each participants. I'm pretty sure it's not possible but before trying another solution, I wanted to ask since I didn't find anything on internet.
Can we or can we not use mentions in slack dialog ? And if we can, how ?
No, the Slack Dialog currently does not have support for multiple mentions. The text elements will has support for url, email, number and telephone number. But not for mentions.
However, mentions work nicely with slash commands. You can add a list of users after your slash command with a mention and their will be automatically detected and matched to list of Slack user.
So maybe its possible for you to start with a slash command including mentions and use the Dialog to request additional information.

Slack Slash Command - inline image attachments

I'm making a cribbage app for our slack channel. It's played using Slash commands. I'm currently showing the player their hand when they type the /showHand command, and it works, but I'd really like to be able to inline the image attachments but I cannot find a way to do this. Currently, it looks like this:
And if I use thumbnails it looks like this:
Is there a better approach? Possibly a way to add multiple images to one attachment? Possibly a display option to display response attachments inline?
UPDATE:
I followed Szymon Roziewski's advice and created a server-side module to download the card images I needed and create the final image of the player's hand. The images are cached so they only need to be downloaded once during the lifetime of the dyno.
I also contacted Slack support and I was told that inlining image attachments isn't currently possible but they might make it a future feature.

Twitter API: how to know what application was used to follow

In the email notification we can see something like
<username> followed you using <appname>.
It is great. But is there any possible way to know the application name using API?
I took a look through the REST API, and I could not find anything that would support this. My guess is that this is a twitter.com feature that is available in the API (yet).
The most logical places I looked were statuses/followers and friendships/show. In both cases there was nothing definitive. Checking the follower emails for my account, I found multiple followers that used applications (like PeopleBrowr and SocialOomph) to follow the account. In most cases, the source on their latest status object matched the application name used to follow me, but that was definitely not a sure thing.
So, to answer your question directly, no I don't think it can be done through the API (not unless there's an undocumented method out there that does this.)
I can, however, think of a way to get that info. One approach would be to set up the email account receiving the follow notifications to forward a copy to a mailbox that is checked by an automated process. When emails show up, parse them to find the app name used to follow you.
I used the following regular expression (in C#) to find the application's name and URI in the email's body:
Match m = Regex.Match(input, #"followed you using\s*<a[^""]+""(?<appUri>[^""]+)""[^>]+>(?<appName>\w*)</a>");
I used m.Groups["appName"].Value to pull out the application name, and m.Groups["appUri"].Value to pull out the URI from the match.
In order to tie the app info to a user, I had to also find the screen name with:
Match m = Regex.Match(user, #"\(#<a[^>]+>(?<screenName>\w*)</a>\) is now following");
I used m.Groups["screenName"].Value to extract the value from the match.

Resources