11/23/2024 7:51:56 PM
slxdeveloper.com
Now Live!
|
|
|
Integrating SalesLogix Leads with LinkedIn |
|
Description: |
Social networks have become a big part of today's online landscape. This is true for professionals as well. LinkedIn is a social network that allows professionals to find out more and interact with others whose needs or services align with themselves. This article will show how we can integrate this resource with leads in SalesLogix to show our SalesLogix users as much information about our leads as possible and will provide a complete sample for integrating LinkedIn with SalesLogix leads.
|
Category: |
SalesLogix VBScript Articles
|
Author: |
Ryan Farley
|
Submitted: |
6/19/2007
|
|
|
Stats: |
Article has been read 29503 times
|
Rating:
- 4.6 out of 5 by 24 users |
|
|
|
fiogf49gjkf0d
Social networks have become a big part of today's online landscape. This is true for professionals as well. LinkedIn is a social network that allows professionals to find out more and interact with others whose needs or services align with themselves. This article will show how we can integrate this resource with leads in SalesLogix to show our SalesLogix users as much information about our leads as possible and will provide a complete sample for integrating LinkedIn with SalesLogix leads.
LinkedIn is a social networking site that, according to it's About LinkedIn page, LinkedIn's mission is to help you be more effective in your daily work and open doors to opportunities using professional relationships. It's basis is to help match you up with others, whose needs align with services you provide, create opportunities with other professionals, and to provide information about others in the LinkedIn community. Whether LinkedIn lives up to this or not, the fact is that there is useful information that can certainly add value to our leads in SalesLogix. Helping us to know more about them and make it easier for our SalesLogix users who work with leads to connect with them. Credit for the idea of integrating leads with LinkedIn goes to Ryan Lowermilk, who posted an article about integrating LinkedIn with SageCRM (a 100% web-based CRM application) on his blog.
Unfortunately, LinkedIn does not provide an SDK or webservices layer for us to integrate with. The technique we'll use is one known as "screenscraping". What screenscraping means, is that we'll programatically retrieve the HTML for a webpage, in our case the LinkedIn search results page, and then parse it to see what the results are. This is much simpler than it might sound. We'll add a section on the lead detail form in SalesLogix that automatically shows whether the current lead is "LinkedIn", meaning if we can find the lead in the LinkedIn network or not. We'll have a clickable link as well so the user can click it and go to the LinkedIn site and see the matches. The code for this will be as follows:
- Grab the first and last name of the lead in SalesLogix (and optionally the company name as well to further narrow the results)
- Form a URL for searching the LinkedIn site for the lead
- Get the HTML for the URL (which will contain the results of the search)
- Parse the HTML to determine the results of the search (e.g.: number of matches found, no matches found, or the SalesLogix user is not logged into LinkedIn)
- Update the screen to show the number of results found and provide a click able link. We'll use a single hyperlink-style label for this, displaying the results in the caption of the label and place the URL we'll launch in the hint property of the label.
We'll use XMLHTTP to programatically retrieve the HTML for the LinkedIn search results page. One cool thing about the code is that we'll make the call asynchronously so that the call to the LinkedIn site doesn't slow down the opening of the lead detail form. We don't want the form to take too long to load while it waits for the results from LinkedIn in the case of a slow connection or problems on the LinkedIn site. The way this will be done is we will use VBScript's GetRef function to give a pointer to a function in our script that XMLHTTP will invoke once the process is complete. This will "simulate" a threaded call inside of VBScript and make our process run separately from the "loading" of the lead detail form. One more thing to mention about doing this from SalesLogix. Even though your login for LinkedIn is remembered when you go to the site from a browser, this won't be the case for our code in SalesLogix. We'll need to initiate the login from SalesLogix so that it is associated with the application and we'll have our own cookie. To do this, I used a hidden browser control on the lead details. If a login is needed I show the browser and load the login page in it for the LinkedIn site. After the first time the user logs in from the embedded browser in SalesLogix, they'll be automatically logged in every time after that.
As I mentioned before, we'll be using XMLHTTP to retrieve the results. We'll also be making the call asynchronously. We don't necessarily have to do it that way, but we don't want to slow things down while we wait for the results, so this will provide a better user experience. Let's look at the code:
Dim xmlhttp
Sub CheckLinkedIn
Dim url
Set xmlhttp = CreateObject("Msxml2.XMLHttp")
' use the values from the nedName control holding the lead name
url = "http://www.linkedin.com/ns?search=&name=" & nedName.NameFirst & "+" & nedName.NameLast
' optionally use the company name to further narrow down the search
If chkUseCompany.Checked Then url = url & "&company=" & Replace(txtCompany.Text, " ", "+")
' we'll use a label to show the results and also store the URL (so we can load that if clicked)
' store the URL in the hint property
lnkGotoLinkedIn.Caption = "Retrieving LinkedIn status"
lnkGotoLinkedIn.Hint = url
With xmlhttp
'open request async (passing False as the 3rd param tells it to do this asynchronously)
.Open "GET", url, False
'register callback function. Using VBScript's "GetRef" function we can pass a
'pointer to the function we want invoked when complete
.OnReadyStateChange = GetRef("HandleLinkedInCallback")
'send request
.Send
End With
End Sub
' This is the callback function that will be invoked by XMLHTTP when complete
Sub HandleLinkedInCallback
Dim result
Dim count
Dim i
With xmlhttp
If .ReadyState = 4 Then
' get the HTML from the request so we can parse it
result = xmlhttp.ResponseText
If InStr(1, result, "noresults", 1) <> 0 Then
' no matched results
lnkGotoLinkedIn.Caption = "No matches found"
ElseIf InStr(1, result, "we found", 1) <> 0 Then
' results found, parse the number of results out of the HTML
i = InStr(1, result, "<strong name=""numResults"">", 1) + 26
count = Mid(result, i, InStr(i, result, "</strong>", 1) - i)
lnkGotoLinkedIn.Caption = count & " LinkedIn matches found"
ElseIf InStr(1, result, "login-nonuser", 1) <> 0 Then
' not logged into LinkedIn
menuLinkedIn.Items.Items(1).Enabled = False
lnkGotoLinkedIn.Caption = "Log-in"
lnkGotoLinkedIn.Hint = "https://www.linkedin.com/secure/login"
Else
' something else went wrong - maybe LinkedIn has changed the search results page
menuLinkedIn.Items.Items(1).Enabled = False
lnkGotoLinkedIn.Caption = "Error processing LinkedIn status"
lnkGotoLinkedIn.Hint = "http://www.linkedin.com/"
End If
End If
End With
End Sub
All we need to do now is call "CheckLinkedIn" from the change event of the Lead Detail form so it is invoked with each change in Lead. When we tie that up to some elements on the screen it will end up like this:
If a match is made, we can click the link to see the match on the LinkedIn site:
We'll also be able to see when no matches are made:
And also when the user is not logged in to the LinkedIn site:
If the user is not logged into the LinkedIn site, we invoke the embededed browser to allow the user to sign-in.
Once the user has done this we'll have a cookie for the site and will be automatically logged in from then on. The sample LinkedIn integration bundle (for v7 only, no leads area in prior versions) that accompanies this article (see related section below) provides a more or less complete view of matching up SalesLogix leads with LinkedIn results.
This article shows a few different topics for developing in SalesLogix. The use of XMLHTTP and screenscraping, which certainly could be used for other integrations as well, and making an asynchronous call to retrieve the HTML ressults of the search. Best of all is the integration with LinkedIn to make your SalesLogix leads more meaningful.
Until next time, happy coding.
-Ryan
|
|
|
|
Rate This Article
|
you must log-in to rate articles. [login here] 
|
|
|
Please log in to rate article. |
|
|
Comments & Discussion
|
you must log-in to add comments. [login here]
|
|
|
- subject is missing.
- comment text is missing.
|
|
| Re: Integrating SalesLogix Leads with LinkedIn Posted: 6/20/2007 7:59:45 AM | fiogf49gjkf0d Really HOT!
Added it to a test system.. and Immediately added it to the Production Slx system!
-- rjl | |
|
| Re: Integrating SalesLogix Leads with LinkedIn Posted: 9/7/2007 9:37:58 AM | fiogf49gjkf0d Hi Ryan - cool stuff. Just one question about using it with IE7. Every time you click it opens another instance of IE instead of using tabs. Actually it would be even better if it knew that there was already a window pointing to the linked in site - but that is probably mor difficult to manage. Is there anything to make the link "tab aware"? Thanks. | |
|
| Re: Integrating SalesLogix Leads with LinkedIn Posted: 9/10/2007 12:24:07 AM | fiogf49gjkf0d Hi Ted,
To change the behavior of how the links open, you'd replace the call to Application.BasicFunctions.WebOpen with some other code. Unfortunately, there's not much exposed as far as controlling opening new tabs in IE. Your best bet would be to open the link in an existing IE window. This doesn't mean it will open in a new tab, but would more than likely be an annoyance as it would cause already opened windows to navigate away from their pages to something else. To do this you'd also have to use IE automation, which would force this to work with IE only, no Firefox or anything else.
-Ryan | |
|
| Re: Integrating SalesLogix Leads with LinkedIn Posted: 5/8/2008 2:54:35 AM | fiogf49gjkf0d Brilliant to have this info within SLX. Can this also be added to the main contact screen as well, or only within the leads section?
Also, due to a more open API since this code was submitted, would it now be possible to actually import any of the contact details from LinkedIN into SLX? | |
|
|
|
|
|
Visit the slxdeveloper.com Community Forums!
Not finding the information you need here? Try the forums! Get help from others in the community, share your expertise, get what you need from the slxdeveloper.com community. Go to the forums...
|
|
|
|
|
|