Hi Team,
I have integrated Salesforce and Trello using Trello API. Currently when a record is created in Salesforce trello creates card for the same from Trello API. Webhook is active for the board. If Trello user create new card in trello callbackurl is called in salesforce to receive the json from webhook to check the type and if it 'createCard' then it create record in salesforce. Now the issue comes when Salesforce creates the card from Trello API and Trello assumes card to be created manually and fires webhook and salesforce ends up creating same duplicate record. I was looking if we have any custom parameter in the webhook json to difference if that card is created from API or manually?
Thanks,
Gaurav
above is end result
@Gaurav Srivastava you are right. As you do not integrate SF into an empty board..best to setup the board first
trello_card = client.get_card('5efc55a5b9233223b368767a')
board = client.get_board(trello_card.board.id)
print(trello_card.labels)
print('board name : ', board.name)
print('card name : ',trello_card.name)
print('labels defined on board', board.get_labels())
print('*******\n\n')
board.add_label(name = 'Wayscript', color = 'purple')
print('labels defined on board', board.get_labels())
print('*******\n\n')
trello_card.create_label(name='Trello_Card', color = 'red')
print('labels defined on board', board.get_labels())
print('*******\n\n')
for label in board.get_labels():
if label.name == 'Wayscript':
trello_card.add_label(label)
Python Log
None board name : Wayscript - Trello Demo card name : Salesforce Test Card labels defined on board [] ******* labels defined on board [<Label Wayscript>] ******* labels defined on board [<Label Trello_Card>, <Label Wayscript>] *******
@milynnus @Iain Dooley Since there was no label field returned from webhook json, I ended up calling below GET request to get label field from card.
GET /1/cards/{id}/{field}
As soon as webhook is triggered, I took created card Id and checked if label exists or not. If not then card is created from trello else from its created from trello.
Appreciate your help :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
when you create the card automatically using the API post it with an idLabels parameter set to some label like “Salesforce” then only create the sales force record if the created card doesn’t have this label
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Gaurav Srivastava agree with @Iain Dooley use of label will be eye catching. Regardless, there has to be logic to differentiate between machine and man, if that is your goal. Not difficult. Just have to come up with a scheme. In the trigger panel you can see that there is enough for you to work with once the trigger detects a createCard action.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you team! I tried this earlier but unfortunately it doesn't work in my case of webhook response.
I see there are two ways for assigning label to card.
1. Create card and then call another API to set label on card.
2. Create label on board and then while creating card assign label Id to card.
In first case the card will be created first and webhook will be fired without label so doesn't work.
In second case, if I create label on board and then assign on card, then in webhook response I don't see label field returned. It returns LabelNames for Board which is present across all cards irrespective of card created from API (Salesforce) or manually.
Below is the response from webhook when created from Trello.
{Code}
{
"model":{
"id":"5efc1e73a8e90177259ab4a3",
"name":"BSR - Data Migration (E00301)",
"desc":"",
"descData":null,
"closed":false,
"idOrganization":null,
"idEnterprise":null,
"pinned":false,
"url":"https://trello.com/b/u6w1xCv/bsr-data-migration-e00301",
"shortUrl":"https://trello.com/b/u6w1xCKv",
"prefs":{
"permissionLevel":"private",
"hideVotes":false,
"voting":"disabled",
"comments":"members",
"invitations":"members",
"selfJoin":true,
"cardCovers":true,
"isTemplate":false,
"cardAging":"regular",
"calendarFeedEnabled":false,
"background":"blue",
"backgroundImage":null,
"backgroundImageScaled":null,
"backgroundTile":false,
"backgroundBrightness":"dark",
"backgroundColor":"#0079BF",
"backgroundBottomColor":"#0079BF",
"backgroundTopColor":"#0079BF",
"canBePublic":true,
"canBeEnterprise":true,
"canBeOrg":true,
"canBePrivate":true,
"canInvite":true
},
"labelNames":{
"green":"",
"yellow":"",
"orange":"",
"red":"",
"purple":"",
"blue":"",
"sky":"",
"lime":"",
"pink":"",
"black":"Kimble Originated"
}
},
"action":{
"id":"5efc3ec20492d077e20a45e8",
"idMemberCreator":"5e495130215e22480cf63c3a",
"data":{
"card":{
"id":"5efc3ec20492d077e20a45e7",
"name":"second",
"idShort":11,
"shortLink":"CNAK3gfe"
},
"list":{
"id":"5efc1e7581f64b37224ec4cc",
"name":"Sprint 1API test"
},
"board":{
"id":"5efc1e73a8e90177259ab4a3",
"name":"BSR - Data Migration (E00301)",
"shortLink":"u6w1xCKv"
}
},
"type":"createCard",
"date":"2020-07-01T07:44:02.228Z",
"limits":{
},
"display":{
"translationKey":"action_create_card",
"entities":{
"card":{
"type":"card",
"id":"5efc3ec20492d077e20a45e7",
"shortLink":"CNAK3gfe",
"text":"second"
},
"list":{
"type":"list",
"id":"5efc1e7581f64b37224ec4cc",
"text":"Sprint 1API test"
},
"memberCreator":{
"type":"member",
"id":"5e495130215e22480cf63c3a",
"username":"gauravsrivastava64",
"text":"Gaurav Srivastava"
}
}
},
"memberCreator":{
"id":"5e495130215e22480cf63c3a",
"username":"gauravsrivastava64",
"activityBlocked":false,
"avatarHash":null,
"avatarUrl":null,
"fullName":"Gaurav Srivastava",
"idMemberReferrer":null,
"initials":"GS",
"nonPublic":{
},
"nonPublicAvailable":true
}
}
}
{code}
Below is the response from webhook when created from Trello.
{Code}
{
"model":{
"id":"5efc1e73a8e90177259ab4a3",
"name":"BSR - Data Migration (E00301)",
"desc":"",
"descData":null,
"closed":false,
"idOrganization":null,
"idEnterprise":null,
"pinned":false,
"url":"https://trello.com/b/u6w1xCKv/bsr-data-migration-e00301",
"shortUrl":"https://trello.com/b/u6w1xCKv",
"prefs":{
"permissionLevel":"private",
"hideVotes":false,
"voting":"disabled",
"comments":"members",
"invitations":"members",
"selfJoin":true,
"cardCovers":true,
"isTemplate":false,
"cardAging":"regular",
"calendarFeedEnabled":false,
"background":"blue",
"backgroundImage":null,
"backgroundImageScaled":null,
"backgroundTile":false,
"backgroundBrightness":"dark",
"backgroundColor":"#0079BF",
"backgroundBottomColor":"#0079BF",
"backgroundTopColor":"#0079BF",
"canBePublic":true,
"canBeEnterprise":true,
"canBeOrg":true,
"canBePrivate":true,
"canInvite":true
},
"labelNames":{
"green":"",
"yellow":"",
"orange":"",
"red":"",
"purple":"",
"blue":"",
"sky":"",
"lime":"",
"pink":"",
"black":"Kimble Originated"
}
},
"action":{
"id":"5efc422050d51e08558d2d97",
"idMemberCreator":"5e495130215e22480cf63c3a",
"data":{
"card":{
"id":"5efc422050d51e08558d2d96",
"name":"Created from Salesforce",
"idShort":14,
"shortLink":"p4il2cKr"
},
"list":{
"id":"5efc1e7581f64b37224ec4cc",
"name":"Sprint 1API test"
},
"board":{
"id":"5efc1e73a8e90177259ab4a3",
"name":"BSR - Data Migration (E00301)",
"shortLink":"u6w1xCKv"
}
},
"type":"createCard",
"date":"2020-07-01T07:58:24.115Z",
"limits":{
},
"display":{
"translationKey":"action_create_card",
"entities":{
"card":{
"type":"card",
"id":"5efc422050d51e08558d2d96",
"shortLink":"p4il2cKr",
"text":"Created from Salesforce"
},
"list":{
"type":"list",
"id":"5efc1e7581f64b37224ec4cc",
"text":"Sprint 1API test"
},
"memberCreator":{
"type":"member",
"id":"5e495130215e22480cf63c3a",
"username":"gauravsrivastava64",
"text":"Gaurav Srivastava"
}
}
},
"memberCreator":{
"id":"5e495130215e22480cf63c3a",
"username":"gauravsrivastava64",
"activityBlocked":false,
"avatarHash":null,
"avatarUrl":null,
"fullName":"Gaurav Srivastava",
"idMemberReferrer":null,
"initials":"GS",
"nonPublic":{
},
"nonPublicAvailable":true
}
}
}
{Code}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Gaurav Srivastava The platform that I been investigating has a Salesforce module and Trello modules and Triggers (board, list and card). While I have not worked on Salesforce, I have used the Trello modules and triggers. I used it in conjunction with py-trello library.
This is something I posted today https://youtu.be/vuu4nJ8ET4Y
In the situation you described, and if I am using the triggers I have I would probably have to check the Changer Name/Username. You will have to design this to your webhook.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@[deleted] Currently webhook is called from Salesforce for a board. So when I create card webhook is fired and returns me json data for same card. Can we add custom variable when we are creating card from API so that in response json we can see custom variable and operates based on that?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Will try to show you how I can do it with a demo.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hope this help clarifies
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.