cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
JSivonen
Frequent Visitor

Twitter connector - filtering out retweets and replies

Hello experts,

 

is anyone experienced with the Twitter connector? I'm trying to figure out, whether it is possible to pick up only "new tweets" from user's feed. Is it possible to ignore (aka filter out) replies to another tweet and pure retweets? I'm having trouble figuring out the answer, so I'm asking the community for a (possible) shortcut! 🙂

 

Here is the documentation regarding the connector:

https://docs.microsoft.com/en-us/connectors/twitter/

 

What I've done so far is made a twitter account where I post language-translated tweets from another account. The problem is, the replies are especially non-working, since they don't contain a link to the original thread as all @ characters are stripped. Same goes with retweets, I'd like to filter them out as well

1 ACCEPTED SOLUTION

Accepted Solutions
JSivonen
Frequent Visitor

I think I got it, after some trial-and-error. This is the condition that leaves only "non-replies":

 

@equals(triggerBody()?['TweetInReplyToUserId'], '')

 

Seems to work 🙂

View solution in original post

7 REPLIES 7
JSivonen
Frequent Visitor

After looking into the JSON of the tweets, I concluded that I might be able to extract at least replies by filtering out all the tweets where "TweetText" starts with a @ character, which implies to a reply tweet. It's not foolproof, but if there is no parameter or more sophisticated method for this. 😛

Even better... there indeed is a parameter called "TweetInReplyToUserId" which contains the user ID is the tweet is a reply to some other tweet. But how do I make a expression that needs to be something else than "" aka NULL?

 

@contains(triggerBody()?['TweetInReplyToUserId'], 0)

 

^-- that is "TweetInReplyToUserId contains 0", since the ID's are long numbers which usually contain at least one zero... It's not a proper solution, but better than nothing 😛

JSivonen
Frequent Visitor

I think I got it, after some trial-and-error. This is the condition that leaves only "non-replies":

 

@equals(triggerBody()?['TweetInReplyToUserId'], '')

 

Seems to work 🙂

View solution in original post

Hey, thanks for this, was facing same challenge.   Can i ask taht you post screenshots of your actual flow with sample data as i struggle to implement the suggested trigger '@equals(triggerBody()?['TweetInReplyToUserId'], '')'

 

Many thanks!

JSivonen
Frequent Visitor

I posted the pic on twitter, here: https://twitter.com/jsivonen/status/1084147585424732161

 

Translate tweets with Flow and Azure Cognitive Services


@JSivonen wrote:

I posted the pic on twitter, here: https://twitter.com/jsivonen/status/1084147585424732161


I know that this might be a little late to the party, but I thought I'd mentioned that I'm implementing a couple of solutions that are either similar or taking a different approach to this.

 

Solution the First - Use the Timeline and Filter

  1. Trigger - When a user posts a new tweet.
  2. Action - Get timeline, last 10 tweets (just in case).
  3. Filter - Match IDs on the Body from the action in #2.
  4. Handle Data - Push any required details onward to your list, notification, email, app, whatever.

I can't screenshot the process quite yet, because I've only run it once, and there were some text field failures which I need to iron out (I'm slipping the results into a SharePoint list), but it worked until it had to put the data in the list. Smiley LOL

 

Second Solution

Only slightly different to yours, mate, but I don't have the advanced option to just put the text in.

no advanced edit for me.jpg

 

I did all of this because I'm a bit unsure as to whether or the current solution shows threads. My thoughts are that it doesn't since they're marked as replies by the very nature of having an 'in reply to' stated.

 

So the logic I'll introduce to the (pretty much working) timeline/filter method will be to add a condition or filter to check that the 'in reply to user' is the same as the 'tweeted by' user, which should indicate a thread within those that are on the timeline.

 

But *all* of this is contingent on the 'Get user timeline' only getting what's literally on the user's Twitter timeline, and not *all* of their Tweets. Smiley Frustrated

I feel like this should be easier to achieve, but at last I found a solution now which isn't too complicated. For some reason other suggested solutions didn't work for me... so here is my take for filtering out the replies.

 

twitter-flow.jpg

 

Create a string variable Reply from in_reply_to_user_id, then check if the variable is empty with empty(variables('Reply')) is equal to true (the function true, only typing true as text doesn't work). I have to check with the variable and empty - checking for Null (yes the function null) does not work, no clue why that is.

 

Also I check (OR) if the variable Reply is equal to 474113855 which is the ID of the Twitter Account I check (Microsoft 365 Status) because they reply to their own tweets when they have updates on an issue. And yes I have to do this with the variable, doing the same directly with in_reply_to_user_id does NOT work - although it should in my opinion.

 

The flow seems to work reliably so far.

 

I thinks this doesn't filter out retweets but probably you can just check if OriginalTweet is equal to Null - didn't test that.

 

Hope that helps 🙂 I was a bit hesistant to use a variable because it thought it's complicated, but actually it makes it much easier.

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Users online (2,435)