Message Trigger
Processing Heroku Message records
As soon as message arrive in the Salesforce environment GoTallo has triggers that will be executed. These triggers will process the messages for you if this is enabled in the active GoTallo config. Please refer to the Flow Chart for the message flow.

The entire flow is customisable since every Salesforce environment is different. This existing flow is applicable to most Salesforce environments that have a standard Sales for Service cloud implementation. For more information how to configure the standard trigger, go to:
https://gomeddo.atlassian.net/wiki/spaces/GPDI/pages/2864873541
Field Mapping
1. Lead
Lead(
Heroku_Conversation_Id__c = Heroku_Message__c.Chat_Identifier__c,
LastName = Heroku_Message__c.User_Full_Name__c,
Phone = Heroku_Message__c.User_Phone_Number__c,
LeadSource = Heroku_Message__c.Conversation_Medium__c,
RecordTypeId = Social25_Config__c.Default_Lead_Recordtype__c
)
2. Person Account
Account(
FirstName = Heroku_Message__c.User_First_Name__c,
LastName = Heroku_Message__c.User_Last_Name__c,//When User_Last_Name__c is empty, use User_Full_Name__c
Phone = Heroku_Message__c.User_Phone_Number__c,
RecordTypeId = Social25_Config__c.Default_Account_Recordtype__c
)
3. Business Account
Account(
Name = Social25_Config__c.Default_Account_Name__c,
RecordTypeId = Social25_Config__c.Default_Account_Recordtype__c
)
4. Contact
Contact(
FirstName = Heroku_Message__c.User_First_Name__c,
LastName = Heroku_Message__c.User_Last_Name__c,//When User_Last_Name__c is empty, use User_Full_Name__c
Phone = Heroku_Message__c.User_Phone_Number__c,
AccountId = {Id of Default or Created Account},
RecordTypeId = Social25_Config__c.Default_Contact_Recordtype__c
)
5. Social Post
SocialPost(
Name = 'Message to/from' + Heroku_Message__c.User_Full_Name__c,
ExternalPostId = Heroku_Message__c.Identifier__c,
IsOutbound = Heroku_Message__c.Outbound__c,
Content = Heroku_Message__c.Text__c,
Provider = Heroku_Message__c.Conversation_Medium__c,
Posted = Heroku_Message__c.Timestamp__c,
Headline = Heroku_Message__c.Text__c,//First 255 characters
AttachmentUrl = Heroku_Message__c.Content_Url__c,
ParentId = {Id of the found/created Case}, //Only when existing
Opportunity__c = {Id of the found/created Opportunity}, //Only when existing
PersonaId = {Id of the found/created Social Persona},
Conversation__c = {Id of the found/created Conversation__c},
WhoId = {Id of the Parent from the Social Persona}, //Only when the parent is not a Social Post
OwnerId = Heroku_Message__c.Agent_Identifier__c //Only for Outbound messages
)
6. Social Persona
SocialPersona(
Name = Heroku_Message__c.User_Full_Name__c, //When User_Full_Name__c is empty, use User_Last_Name__c
Provider = Heroku_Message__c.Conversation_Medium__c,
ExternalId = Heroku_Message__c.Heroku_User_Identifier__c,
ParentId = {Id of the found New Person Type} //Can be Account/Contact/Lead/SocialPost
)
7. Conversation
Conversation__c(
Heroku_Conversation_Id__c = Heroku_Message__c.Chat_Identifier__c,
Channel__c = Heroku_Message__c.Conversation_Medium__c,
Account__c = {Id of the found/created Account},//Only when existing
Contact__c = {Id of the found/created Contact},//Only when existing,
Lead__c = {Id of the found/created Lead},//Only when existing,
Social_Persona__c = {Id of the found/created Social Persona},
)
8. Case
Case(
Heroku_Conversation_Id__c = Heroku_Message__c.Chat_Identifier__c,
Platform_Identifier__c = Heroku_Message__c.Platform_Identifier__c,
Origin = Heroku_Message__c.Conversation_Medium__c,
Opportunity__c = {Id of found Opportunity},//Only when existing
Lead__c = {Id of found Lead},//Only when existing
RecordTypeId = Social25_Config__c.Default_Case_Recordtype__c,
SourceId = {When parent of Social Persona is Social Post, Id of that parent},
Subject = Heroku_Message__c.Text__c,//Only first 255 characters
Description = Heroku_Message__c.Text__c,
AccountId = {When parent of Social Persona is Account, Id of that parent},//Or AccountId of Contact when Parent is Contact
ContactId = {When parent of Social Persona is Contact, Id of that parent},//Or PersonContactId of Account when Parent is Account
AssignmentRuleId = {Heroku_Message__c.Use_Case_Assignment_Rules__c is True, use Id of Active AssignmentRule}
)
9. Opportunity
Opportunity(
StageName = 'Prospecting',
Name = Heroku_Message__c.User_Full_Name__c,
Heroku_Conversation_Id__c = Heroku_Message__c.Chat_Identifier__c,
CloseDate = {Date.today() + Social25_Config__c.Opportunity_Duration_In_Days__c},//When Opportunity_Duration_In_Days__c empty, then Date.today()
AccountId = {When parent of Social Persona is Account, Id of that parent},//Or AccountId of Contact when Parent is Contact
Opportunity_Source__c = Heroku_Message__c.Conversation_Medium__c,
RecordTypeId = Social25_Config__c.Default_Opportunity_Recordtype__c,
Source_Post__c = {When parent of Social Persona is Social Post, Id of that parent}
)
10. Heroku Message
Heroku_Message__c(
Account__c = {When parent of Social Persona is Account, Id of that parent},//Or AccountId of Contact when Parent is Contact
Contact__c = {When parent of Social Persona is Contact, Id of that parent},//Or PersonContactId of Account when Parent is Account
Related_Lead__c = {Id of found Lead},//Only when existing
Conversation__c = {Id of found/created Conversation__c},
Related_Case__c = {Id of found/created Case},//Only when existing
Related_Opportunity__c = {Id of found/created Opportunity},//Only when existing
Social_Persona__c = {Id of the found/created Social Persona},
)