This website uses cookies to ensure you get the best experience. Learn More.
Integrating Audience Targeting with your Apps – Part III: Channels
at-sdk-dir>./create_channel.sh twitter-sample “Twitter Sample”
at-sdk-dir/channel-twitter-sample>ant deploy
@Override public String getIcon() { return "icon-twitter"; }
<#assign aui = PortletJspTagLibs["/META-INF/aui.tld"] /> <#assign liferay_ui = PortletJspTagLibs["/META-INF/liferay-ui.tld"] /> <#setting number_format="computer"> <@aui["input"] label="message" name="{ct_field_guid}message" type="textarea" value=message> <@aui["validator"] name="required" /> </@>
private List<String> _getTwitterUsers(PortletRequest request) throws Exception { long campaignId = ParamUtil.getLong(request, "campaignId"); Campaign campaign = _campaignLocalService.fetchCampaign(campaignId); if (!campaign.isActive()) { return Collections.emptyList(); } long tacticId = ParamUtil.getLong(request, "tacticId"); List<UserSegment> tacticUserSegments = _userSegmentLocalService.getTacticUserSegments(tacticId); List<User> users = _userLocalService.getGroupUsers( campaign.getGroupId()); List<String> twitterUsers = new ArrayList<String>(); for (User user : users) { Contact contact = user.getContact(); String twitterScreenName = contact.getTwitterSn(); if (Validator.isNull(twitterScreenName)) { continue; } List<UserSegment> userSegments = _anonymousUserUserSegmentLocalService.getUserSegmentsByUserId( user.getUserId(), true); if (Collections.disjoint(userSegments, tacticUserSegments)) { continue; } twitterUsers.add(twitterScreenName); } return twitterUsers; }
private void _sendMessage(List<String> twitterUsers, String message) throws Exception { ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true); cb.setOAuthConsumerKey(_CONSUMER_KEY); cb.setOAuthConsumerSecret(_CONSUMER_SECRET); cb.setOAuthAccessToken(_ACCESS_KEY); cb.setOAuthAccessTokenSecret(_ACCESS_SECRET); TwitterFactory twitterFactory = new TwitterFactory(cb.build()); Twitter twitter = twitterFactory.getInstance(); for (String twitterUser : twitterUsers) { twitter.updateStatus("@" + twitterUser + " " + message); } }
@Override public String processChannel( PortletRequest request, PortletResponse response, String id, Map<String, String> values) throws InvalidChannelException { String message = values.get("message"); JSONObject jsonObj = JSONFactoryUtil.createJSONObject(); jsonObj.put("message", message); try { List<String> twitterUsers = _getTwitterUsers(request); if (!twitterUsers.isEmpty()) { _sendMessage(twitterUsers, message); } } catch (Exception e) { throw new InvalidChannelException( "Cannot send twitter messages", e); } return jsonObj.toString(); }
<ivy-module> ... <dependencies defaultconf="default"> ... <dependency name="twitter4j-core" org="org.twitter4j" rev="4.0.4" /> </dependencies> </ivy-module>
... Include-Resource:\ ...,\ @lib/twitter4j-core.jar ...