Mashing up CRM and Twitter, Part 2

The Truth is Out There (in 140 Characters or less!)

If you didn’t read the first part of this “series”, here’s a link to Mashing up CRM and Twitter, Part 1. That article provides a high-level overview of three topics:

  1. What the heck Twitter is, in case you’re new to it
  2. Why you might want to integrate it with Dynamics CRM
  3. Some basics of Twitter Search

To follow up on part 1, I want to cover two main topics here:

  1. How you can implement a managed Twitter search from a Dynamics CRM record
  2. Discuss some of the interesting extensions of the simple example I’ll show, and argue a little more why Twitter search is so important

Implementing a Managed Twitter Search from Dynamics CRM

What I’ll show here is some of the mechanics of doing a contextual Twitter search from a CRM record. These will be similar no matter what entity you’re searching from, so I’m going to show how to customize the Dynamics CRM “Competitor” entity. (In the example I show it will be not for my competitors, but for a group of companies that compete against each other. Same techniques, either way.)

The general technique is to use an IFRAME control on a customized CRM form, and dynamically update the “src” property of the IFRAME with information from the current record. Here’s what the user experience looks like, starting with the Competitor form opened to a specific record, in this case my favorite food company, Kraft:

"Competitor" form open with record selected

Figure 1: Competitor form open with a record selected

This shows a standard Dynamics CRM form, in this case having double-clicked on the “Kraft” record from the Competitors grid. When a user clicks on the Twitter Search tab, what they see is an IFRAME that exposes the results of a Twitter search. What that might look like is shown here:

comp_form2

 

Figure 2: Twitter search results based on CRM data

How to Build it

That’s the user experience. What I’ll show you next is how to build a customization like this — essentially, how to update the “src” property of an IFRAME like that with information from the current record. The idea here is to provide a managed search experience from within CRM, so my brand managers or whoever else might be using this don’t need to worry about Twitter search syntax. To save a little time, I’ll give you a “heuristic” step by step. I’ll post a video shortly where you can see all of the detailed steps, but for now…

…follow these steps:

  1. Customize the Competitors entity, by adding a tab, a section, and an IFRAME; call them all Twitter Search or something like that.
  2. To start out, set the IFRAME’s URL property to http://search.twitter.com . Turn off the “prevent cross-frame scripting” property by unchecking it.
  3. Navigate to the form’s OnLoad event, and add the following  jscript code:

code starts here:

var CRM_FORM_TYPE_CREATE = 1;
var CRM_FORM_TYPE_UPDATE = 2;

var twittersearchURL = “”;

switch (crmForm.FormType)
{
 case CRM_FORM_TYPE_CREATE:
    twittersearchURL = “http://search.twitter.com“;  
   break;

 case CRM_FORM_TYPE_UPDATE:
       // Use Twitter search with this account’s name when updating account
  twittersearchURL = “http://search.twitter.com/search.atom?q=”;
  // Encode the account name and add it to the search string
  twittersearchURL += encodeURIComponent(crmForm.all.name.DataValue)+”&rpp=100&lang=en&tude=:)”; 
  break;
}

// Set the respective IFRAME’s URL
//alert (twittersearchURL);

crmForm.all.IFRAME_twittersearch.src = twittersearchURL; 

end of code

Let me make a couple of comments about this code, in case you want to try it or some variation on it:

  • Notice that the twitter search url uses the “atom” qualifier. This is the way twitter search lets you return results in an RSS format. This is a lot more convenient in many ways than search results returned to an HTML page. In part 1 of this article I discussed Twitter search basics, and included a link to the Twitter search API, which I highly recommend you read if you want to do things like this.
  • Notice the encodeURIComponent function call. In this example, I pass  “crmForm.all.name.DataValue” into that function — this is the value of the “name” field on the Competitor form. If you were doing this for the Account or most other entities, it would be identical, but you might need to change the field name depending on what you want to do. EncodeURIComponent does things like replace spaces with the “%20″ strings you see in URLs; it basically takes text strings and formats them properly as URLs, so get used to this function if you want to do things like this.
  • Also: notice the “&tude=:)” and the other strings I tacked on to the end of the url. If I hadn’t commented out the alert, I’d see a URL like this just before the last line of this OnLoad event code gets run: http://search.twitter.com/search.atom?q=Kraft&rpp=100&lang=en&tude=:) This search query looks for Kraft, then tells Twitter to return up to 100 results per page, then says to only look for English results, and finally says to look for “results with a positive attitude”. Obviously, if I’m a Kraft brand manager and I’m looking at search results for “Oreo Cakesters”, or “mac ‘n cheese”, I’d probably want to look at both “tude=:)” and “tude =:(” results, if you know what I mean!

Refer back to Figure 2 for a second and notice the “Results mood” pulldown list. With very little additional effort (similar jscript to the above, only behind the Change event of the picklist attribute that gets selected) you can build in some flexibility along these lines.

Extensions and the Importance of Twitter Search

Here are some of the more obvious ways this could be extended. (You can probably think of a lot more — let me know if you have some good ones!)

  • If I’m a Kraft brand manager, I’d want to use the Product entity, and add a bunch of my products (see above), and search on them with both :) and :( tude qualifiers, and maybe stack up how I’m doing against my competition.
  • If I really did want to keep track of my competitors, the Competitor entity would work well, but you might want to do this for their products as opposed to just the company name.
  • I think where it really starts to get cool is to store the results and start doing some analysis over time on the search results. You could store off these RSS data, say to a database, and really start to crunch some interesting numbers. For example, suppose you’re launching a new ad campaign for an existing product, and you want to see how it impacts the buzz about your product over time. Or suppose you’re watching to see how your competitors’ campaigns are doing over time. Or suppose you’re managing a product recall or something along those lines and how that impacts discussion of your product over time…

I could go on and on, but you probably get the point by now (if you’ve read this far! in which case, thank you very much). People who dismiss Twitter as a narcissistic time-suck are missing the point. If you’ve got 6 million+ people out there tweeting away about almost any topic you can think of, the chances are good they’re talking about things that matter to you. And if you can aggregate up all those tweets, you can actually learn some interesting things you might not already know.

The Truth is Out There…in the form of millions and millions of 140 character tweets.    

Cheers –

Richard

richardk@imginc.com

Leave a Comment

Mashing up CRM and Twitter, Part 1

In my (apparently) ongoing series of articles on mashing up Dynamics CRM with various web applications, here’s the latest installment: Twitter. You might be familiar with the technique: using a little client-side scripting to update the src property of an IFRAME. I’ve illustrated it before in a some  different contexts – here are three:

·         Search SharePoint 2007 for information related to a CRM Account record

·         Display a Google map for a CRM Contact or Account record

·         For one of your Account records, which of their associated Contacts are on LinkedIn and where are their profile pages?

Here’s a brief backgrounder on Twitter, and why you might want to extend your Dynamics CRM with Twitter search results.

What’s all this Twitter stuff, anyway?

Twitter is one of the fastest growing of the so-called Web 2.0 applications. If you haven’t used it, it’s easy to characterize it as a narcissistic exercise in time wasting. Who but my Mom would really care to know what I’m doing at random times throughout the day, anyway, especially if I’m always tweeting (a Twitter version of a post) “just got back from a movie”, or “going into the kitchen to get some OJ”? There are a lot of people on Twitter. Just how many is open to debate, so visit this site if you’re interested.

In any case, once you start using it, you start to appreciate the real business value it can have. Twitter is essentially a broadcast medium. Any tweet can be searched, and if I find an interesting tweeter (twitterer?) I can “follow” that person. Someone else can follow me. When I follow someone, I can see a history of their tweets from my Twitter home page, and I can (optionally) configure it so that for certain people I’m following, their tweets get sent to my phone or mobile device. So how can you use it for your business?

1.       Think of who might be following you, and push out an announcement to all of them at the same time. People who follow me might be interested in CRM training, so when I got locked in dates for an upcoming CRM training roadshow I’m doing with United Training, I tweeted out with a link to the landing and registration pages.

2.       If you have a blog, Twitter’s a great way to announce a new post to your network. The 140 character maximum tweet length includes the URL, so you’re forced to be brief. For me, at least, this makes me feel a little less like I’m wasting peoples’ time, so I’ll always tweet out a new post.

3.       Tweet a question to your network. OK, I haven’t actually done this very much, but anecdotal evidence tells me it’s effective.

4.       Find people who have valuable things to say on topics you care about, and follow them. From what I can tell so far, about 90% of the people I’m interested in following include links to their recent blog posts and other more detailed content in their tweets, so don’t make the mistake of thinking what you can learn from Twitter must be expressible in 140 characters. And just think: there’s always a chance, however slim, that you really will learn something that will change your life within the 140 character limit! How awesome would that be?

These are just some specific examples, but for me so far, the two most compelling Big Reasons to use Twitter are that I can promote myself and my company’s services in an efficient, opt-in format; and that I can learn things from people who have interesting things to say.

Searching Twitter

Before we get to the mashing up part, we have to talk about Twitter search. I don’t claim to be the Twitter Search Zen Master, but I’ve started to appreciate its huge potential. If you’ve ever wanted to know “what everybody’s thinking” about some topic or another, think about Twitter: millions of people, entering 140-character thought-snippets on any topic you can think of … and all of it nice, searchable data! If there really is wisdom in crowds, we should be able to find some of it here.

Here’s your Twitter search primer: http://search.twitter.com/about

The two most important resources linked to from that page are for Twitter search operators and for the Twitter search API.

I’ll summarize them by way of a few examples. To see how these work go to http://search.twitter.com/ and enter the search phrase, verbatim, in the search box.

Search phrase

What it returns

The search URL

oreos

Tweets containing the word “oreo”

http://search.twitter.com/search?q=oreos

oreo cakesters

Tweets containing both “oreo”, and “cakesters”

http://search.twitter.com/search?q=oreo+cakesters

“oreo cakesters”

Tweets containing the exact phrase “oreo cakesters”

http://search.twitter.com/search?q=%22oreo+cakesters%22

– the %22’s are the quotation marks

from:richardknudson

All Tweets from me (richardknudson’s my twitter name)

http://search.twitter.com/search?q=from%3Arichardknudson

– %3A is the colon

@richardknudson

All Tweets about me

http://search.twitter.com/search?q=@richardknudson

– CRMGuy: you are my Mom’s second favorite micro-blogger!

dynamics crm from:richardknudson

All Tweets from me containing both “dynamics” and “crm”

http://search.twitter.com/search?q=dynamics+crm+from%3Arichardknudson

– you can combine search conditions

Then you can extend this a little bit by turning the URL into an RSS feed. Add the text “atom” (a popular RSS feed format) after the second “search”, and you can turn any of these into an RSS feed. RSS feeds are XML data, so you can extract useful things like how many posts are returned, and other very interesting aggregate data.

So, this URL:

http://search.twitter.com/search.atom?q=%22oreo+cakesters%22 starts to return some data a Kraft product manager should be interested in!

Oh, and don’t forget to add a smiley-face :) on the end of a search to return only positive tweets and a :( to return negatives. So if you want to know whether they like your cakesters or not, and to what extent, compare

http://search.twitter.com/search.atom?q=oreos%20 :)

with

http://search.twitter.com/search.atom?q=oreos%20 :(

Now that we’ve covered the basics of Twitter search, here’s what’s coming up in part 2: how to extend Dynamics CRM with Twitter search results.

Leave a Comment