The following Google Apps Script illustrates the use of Chatter REST API to make posts to Salesforce Chatter. The example include the use of @mention function. function postToChatter() { var consumerKey = ""; // Enter OAuth Consumer Key here var consumerSecret = ""; // Enter OAuth Consumer Secret here // Begin boilerplate var oauth = UrlFetchApp.addOAuthService("Chatter user data"); oauth.setAccessTokenUrl("https://login.salesforce.com/_nc_external/system/security/oauth/AccessTokenHandler"); oauth.setRequestTokenUrl("https://login.salesforce.com/_nc_external/system/security/oauth/RequestTokenHandler"); oauth.setAuthorizationUrl("https://login.salesforce.com/setup/secur/RemoteAccessAuthorizationPage.apexp?oauth_consumer_key="+encodeURIComponent(consumerKey)); oauth.setConsumerKey(consumerKey); oauth.setConsumerSecret(consumerSecret); var loginUrl = "https://login.salesforce.com/services/OAuth/u/23.0"; var options = { method : "POST", oAuthServiceName : "Chatter user data", oAuthUseToken : "always" }; var result = UrlFetchApp.fetch(loginUrl, options); var sfResponse = Xml.parse(result.getContentText(), true).getElement(); var sessionId = sfResponse.getElement("sessionId").getText(); var serverUrl = sfResponse.getElement("serverUrl").getText(); var instanceUrl = serverUrl.match(/^https?:\/\/[^\/]+/)[0]; // End boilerplate // Begin Chatter post text var payload = Utilities.jsonStringify( { "body" : { "messageSegments" : [ { "type": "text", "text" : "Check out the new analytics functions in Salesforce \n\n cc:" }, { "type": "mention", "id" : "{Chatter user ID}" } ] } } ); // End Chatter post text var contentType = "application/json; charset=utf-8";// var feedUrl = instanceUrl + "/services/data/v23.0/chatter/feeds/record/{Chatter Group ID}/feed-items"; // For posting to a Chatter Group var feedUrl = instanceUrl + "/services/data/v23.0/chatter/feeds/news/me/feed-items"; // For posting to your own feed. var response = UrlFetchApp.fetch(feedUrl, { method : "POST", headers : { "Authorization" : "OAuth " + sessionId }, payload : payload, contentType: contentType }); var feed = JSON.parse(response.getContentText()); Logger.log(response.getContentText()); } |