developing interactive applications using windows live robots, activities, and alerts
TRANSCRIPT
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
1/81
Developing InteractiveApplications UsingWindows Live Robots,
Activities, And AlertsCampbell Gunn
Program ManagerMicrosoft Corporation
John Kim
Pierre Berkaloff
BTB025
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
2/81
Agenda
IntroductionActivity Applications
Alerts
Building and Deploying Bots
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
3/81
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
4/81
Windows Live MessengerApplications
Its all about user interaction
and engagement!
Activities, Bots, Alerts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
5/81
Activity Window
Windows Live MessengerApplications
Client to Client data xferConversation interaction
HTTPS for secure data exchangeMashup style applications (DHTML & AJAX)
Activities, Bots, Alerts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
6/81
Interact via the conversation, user tile, psmBroad, or domain specific interaction
Can be combined with Activity appsBuilt on 3rd party hosting platforms
Bot Conversation
Windows Live MessengerApplications
Activities, Bots, Alerts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
7/81
Published via RSS feeds
Draw users back into Messenger
Launch Activities and Bots from toast
Windows Live MessengerApplications
Activities, Bots, Alerts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
8/81
What Are MSN Alerts?
A great new way to deliver information to consumers
Up to 10x more effective than simple e-mail *
Find where customers are on network,
then deliver byMSN Messenger (Desktop Alert and Tab)
MSN Hotmail
MSN Mobile*
A great new way to partner with MSN
Drive trafficReinforce brand
Generate revenues
* Based on 1% average simple email response** Mobile available in US and Canada only
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
9/81
Windows Live Safety Scanner ActivityApplication
ESPBilly Bot And Activity Application
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
10/81
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
11/81
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
12/81
Activity Applications
How to Create a Messenger ActivityMulti User Activity
Sample Code
Single User ActivitySample Code
Debugging an Activity App
Demo-Walk through
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
13/81
What Are Activity Apps?
One or two user apps built on the Windows LiveMessenger communication infrastructure
Connect Peer to Peer or through the Windows Live Cloud
Work across firewalls and proxies
Run in an IE window attached to the MessengerConversation window
Can be hosted on the Internet or intranet
Interact with
Messenger conversation stream
Messenger user Info
Launchable from inside or outside Messenger
Contact based invitation model
Launch ability provisioned by Windows Live
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
14/81
Messenger Activity Platform
Apps can be built using DHTML or ActiveXDevelopment options
ASP.NET, C/C++, C#, Visual Basic, VBScript,JScript, HTML, DHTML, XML, and more
Great international support!
Windows Live Messenger Worldwide Support
25+ languages
45+ Markets
Can be market and/or language specific
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
15/81
Design Considerations
IE 5.01 or greater requiredMax window size 500 x 500 pixels
Recommended, but now limited
Connection TypesIndirect via Messenger cloud
195k per minute
Direct Peer to PeerLimited by connection bandwidth
Security considerations require that ActiveXapps be certified by Windows Live
No adult, gambling or hateful content
Application should include a Help link
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
16/81
Messenger Activity Objects
External Parent objectChannel Client to client communication
Error Error code and data
FileInfo File transfer operationsMessenger Dialer and Options dialogs
User User properties
Users Collection Enumerates user list
Access restricted
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
17/81
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
18/81
function Channel_OnRemoteAppLoaded() {
// The remote application is loaded and ready; start multiplayer
}
function Channel_OnRemoteAppClosed() {
// Remote application is shutting down; game over
}
function Channel_OnDataReceived() {
// Data received from remote app, inspect value of Channel.Data
}
function Channel_OnDataError() {
// Error during SendData, may need to retry.
}
function Channel_OnTypeChanged() {
// Inspect Channel.Type for the state of the connection (Direct, Indirect, Disconnected)
}
function Channel_OnAppClose() {
// Messenger is shutting down, clean up application
}
Required DefinitionsApps must sync these events
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
19/81
Provisioning Restricted Functionality
SendIMExposes EnterIM & SendIM methods in the Channel object
ReceiveIM
Exposes OnIMReceived event and IM property (ro)
ActiveXload ActiveX controls in local user security context
EnableIP
Allows access to local & global IP addresses
ReplaceIM
Exposes OnIMReceived event and IM property (rw)
SendFile
Exposes file xfer PEMs in the Channel object
UserProperties
Exposes E-mail and Name in User object
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
20/81
Channel Object
PropertiesData
A variant containing the data received from the remote application
Error
An Error object containing data that could not be delivered
FileInfoA FileInfo object that represents a file being sent or received. RequiresSendFile permission
Type
A ConnectionType value representing the type of connection between peers
IM (read-only)
String containing the instant message that was received and displayed.Requires ReceiveIM permission
IM (read-write)
String containing the instant message that was received. The message canbe changed before it is displayed. Requires ReplaceIM permission
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
21/81
Use Of XMLHTTP
Given to you with IE 7.0Windows.External.XMLHTTP
Allowed with IE 6.0
ActiveX control allowed to load
CreateObject(XMLHTTP);
Pull in dynamic AJAX content into yourApplication without IFrame manipulation
Support for XMLHTTPGet it with Windows Live Messenger Version 8.0
MSN Messenger 7.5 and lower needs IE 7.0
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
22/81
Building An Activity
Application
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
23/81
What Is Provisioning?
Two step processEnabling you to test your application
Making your app available to
Windows Live Messenger usersWhy is provisioning required forWindows Live Messenger Activities.
Verify apps use the Activity API properly
Verify app compliance with Terms of Use
Give Messenger users a great experience
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
24/81
Provisioning SettingsCreating the msgrp2p.xml file
Enables Messenger to load an un-provisioned application for testing
Same XML as used by Windows LiveServers
Adds item to the Actions menu
Start (Name)(Name) defined by the Name element
Needed on both machines for testing
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
25/81
Creating msgrp2p.xmlImportant values to set
EntryID = 7 for test apps
Category = 50 for test apps
Sequence = 10 for testing
Name = String displayed in Actions menuURL = HTTP address of Activity web page
TypeApp=application
Dir=gameHeight
max=500
Widthmax=500
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
26/81
Launching An Activity App
Launch from Actions menuStart (App Name)
Works prior to provisioning
Launching From a Web Page
Only works after provisioning
Invoke Windows Live Messenger by calling:http://messenger.msn.com/Resource/games.aspx?appID=APPID
The APPID valueUniquely represents your Activity appAssigned by Windows Live during provisioning
http://messenger.msn.com/Resource/games.aspx?appID=APPIDhttp://messenger.msn.com/Resource/games.aspx?appID=APPID -
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
27/81
Debugging Setup
Enable debugging in IE Advanced TabUncheck Disable script debugging (IE)
Uncheck Disable script debugging
(Other)Place app and resources on web server
Multi-user apps require 2 machines tohave 2 Messenger logins
Edit msgrp2p.xml to reference web server
Place msgrp2p.xml on test machines
C:\Program Files\MSN Messenger
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
28/81
Debugging Tips And Tricks
Use VisualStudio 2005.netHave the debugger break post the point where youwant to check variables and walk backwards
Check the P2P channel occasionally in application
JavaScript: Use the debugger keyword to startscript debugging
Place debugger keyword at top of pageEnables vars in Immediate window, Enables settingbreakpoints
Use Alerts oftenUse Channel.SendIM to output debugging text toconversation window
Reopen conversation to reload msgrp2p.xml
App is reloaded on every invocation
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
29/81
Provisioning, Debugging
And running Application
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
30/81
Alerts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
31/81
What Are MSN Alerts?
FREE Real-Time Info DeliveryA Killer Communications Platform!
Ne
ws
Spo
rts
Blo
gs
Jobhunting
Travel
Products
Any Kind of RSS-Triggered Information
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
32/81
How Do Users Sign Up?
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
33/81
100% User Opt-In
Delivery to:
DesktopEmailSMS
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
34/81
Using PRESENCE, Our Alerts PlatformAutomatically Finds User With RSS-TriggeredInformation
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
35/81
Which DRIVES Traffic ToYour Platform
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
36/81
And Offers Stunning Click-ThruPERFORMANCE To Almost 200 MillionMessenger Users
LOreal 24% and 35% (Beauty Alerts)
MSN Autos 18% (Detroit Auto Show)
ILoveMessenger 23% (Contest)
Messenger Beta 37% (Upgrade info)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
37/81
MSN Alerts ManagerOnline App To Manage It All
Customize
Create
Report
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
38/81
MSN Alerts PlatformPartners Include
Windows Live Expo
MSNBC
FOX SportsMSN Spaces (Australia)
Feedburner
MSN TravelMoney Central
Etc.
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
39/81
Best PartZERO deployment time
Please visit http://SignUp.Alerts.MSN.com
or [email protected] for more information
MSN Alerts Platform is Free to Developersand Users (Ad Supported)
http://signup.alerts.msn.com/mailto:[email protected]:[email protected]://signup.alerts.msn.com/ -
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
40/81
Building And Deploying
Windows Live Robots
John KimPierre Berkaloff
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
41/81
IM Robots Are Not Web Sites
Conversational natureRate of growth
Traffic patterns
Incoming users ramp-up rates at peak timesResponsiveness expectations from users
Off the shelf Web serving technology is notpractical in this environment.
Web serving bandwidth constrained
IM Bots are CPU constrained/OS limitations
constrained
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
42/81
Case StudySmarter Child
Launched 4 months ago on MSN
300 million+ queries per month
3 million + unique messenger usersTraffic at peak times 300 queries per sec
never promoted or advertisedanywhere
viral growth (entirely word of mouth)
Wh Y N d T B ild B
mailto:[email protected]:[email protected] -
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
43/81
What You Need To Build Bots
Natural Language EngineConversational System
User Profile
Messenger network faceless clientsupporting latest large range offeatures
All these should be highly scalable andcost effective
Wh Y N d
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
44/81
What You NeedNatural language
Comprehensive natural language processing engineHighly optimized for IM scale traffic
Efficient natural language definition syntax
Support for both Static , dynamic (data-driven) and procedural lexical items
Automatic binding of user input data to variables
Dialog handlingAbility to handle complex conversational dialogs
Context awarenessGiving preference to the current conversation subject
Anaphora ( Ex: Can you show it to me ?}
Ambiguity resolutionrecognizes ambiguous queries
Prompts user to clarify intent
Language LibrariesLanguage Parsing Rules
Lexicons
Industry specific Extensions
Spell Correction
Wh Y N d
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
45/81
What You NeedConversational Centric platform
Adaptive output
IM centric User Profile Management
LoggingUsage Reporting
Quality Analysis
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
46/81
B ildi A A
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
47/81
Building An Agent
Adding Basic Natural LanguageStarting the Agent
Data Feed Binding
User Input Binding
Adding Conversational Structure
Adding Activity Support
Addi B i N t l L
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
48/81
Adding Basic Natural LanguageAnd Conversation Structure
? Hello.
- Hi ! Nice to see you.
? I am lost
? Help
- I am here to get you todiscover MSN Music.
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
49/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music.
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
50/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
51/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music.
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
52/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music.
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
53/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music.
I A ti
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
54/81
In Action
? Hello.- Hi ! Nice tosee you.
? I am lost
? Help
- I am here to
get you todiscover MSN
Music.
D t Bi di
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
55/81
Data Binding
5 Line binding to a RSS feed:
datasource GetMSNMusicFeed() => Title,Description,Link
http {timeout="20"}
http://music.msn.com/services/rss.aspx?uid=00000002-0000-0000-0000-000000000000
simple xml
rsschannel {loop=content}
item {loop=content}
title
description
link
Hooking it up to a reference request
? Show me the top 10
TITLE, DESCRIPTION,LINK = GetMSNMusicFeed() show 10
* Here is the Top 10:
- TITLE
* more to see more items.
In Action (Data Feed)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
56/81
In Action (Data Feed)
? Show me the top10
TITLE,DESCRIPTION,LINK
=GetMSNMusicFeed()show 10
* Here is the
Top 10:
- TITLE
* more to
see more items.
In Action (Data Feed)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
57/81
In Action (Data Feed)
? Show me the top 10TITLE,
DESCRIPTION,LINK=
GetMSNMusicFeed()show 10
* Here is theTop 10:
- TITLE
* more to seemore items.
User Input Binding
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
58/81
User Input Binding
subpattern anArtist+ eminem
+ shakira
? Downloads for ARTIST=anArtist
- Here are the downloads availablefor ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
59/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
60/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
61/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
62/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
63/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
In Action (User Input Binding)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
64/81
In Action (User Input Binding)
subpattern anArtist+ eminem
+ shakira
? Downloads forARTIST=anArtist
- Here are the
downloadsavailable for
ARTIST
Adding Conversational Structure
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
65/81
Adding Conversational StructureDialogs
? What is the number 1 song?
call ShowNumber1Song()
- Do you want me to play it foryou?
? Yes
- call DoPlayMusic(1)? No
- Ok. What would you like to dothen?
In Action (Dialogs)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
66/81
In Action (Dialogs)
? What is the number 1song?
callShowNumber1Song()
- Do you want me toplay it for you?
? Yes
- callDoPlayMusic(1)
? No
- Ok. What wouldyou like to do then?
In Action (Dialogs)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
67/81
In Action (Dialogs)
? What is the number 1song?
callShowNumber1Song()
- Do you want me toplay it for you?
? Yes
- callDoPlayMusic(1)
? No
- Ok. What wouldyou like to do then?
In Action (Dialogs)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
68/81
In Action (Dialogs)
? What is the number 1song?
callShowNumber1Song()
- Do you want me toplay it for you?
? Yes
- callDoPlayMusic(1)
? No
- Ok. What wouldyou like to do then?
In Action (Dialogs)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
69/81
In Action (Dialogs)
? What is the number 1song?
callShowNumber1Song()
- Do you want me toplay it for you?
? Yes
- callDoPlayMusic(1)
? No
- Ok. What wouldyou like to do then?
Adding Activity Support
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
70/81
Adding Activity Support
Defining which activity to use
function overrides MSNSLPGetAgentMainP4ApplicationName()
return MSNMusic"
function overrides MSNSLPGetAgentMainP4ApplicationId()
return "99991046" // Application ID
Inviting the user
? Invite me again.
? Can you reopen the window?
? Invite me!
call MSNSLPSendInvitationToOpenMainP4Application()
Sending Data to the Activity
Procedure ShowMusicLink(LINK)
REQUEST = StringConcat(REQUEST, "url=", LINK)
call MSNSLPSendData(REQUEST)
In Action (Activity)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
71/81
In Action (Activity)
In Action (Activity)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
72/81
In Action (Activity)
In Action (Activity)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
73/81
In Action (Activity)
In Action (Activity)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
74/81
In Action (Activity)
In Action (Activity)
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
75/81
In Action (Activity)
Live Bot Content
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
76/81
Live Bot ContentManagement
Natural language andconversationstructure we havebuilt can beedited/approved and
published live
Live Editing
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
77/81
Live EditingReference questions and content
Deployment
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
78/81
DeploymentDevelop for free - pay to deploy model
Develop and Test on your Developeredition
When you want to deploy at scaleBuy a Server license
Or
Use Conversagent hosting services
Final Thoughts
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
79/81
Final Thoughts
SDK Freely available6 months up to 50,000 sessions a month
Download available at:
http://buddyscript.conversagent.com
Contact us at:
Developer Resources
http://buddyscript.conversagent.com/mailto:[email protected]:[email protected]://buddyscript.conversagent.com/ -
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
80/81
Developer Resources
Windows Live Messenger Dev Center on MSDNhttp://msdn.microsoft.com/msn/msnmessenger/Activity API Download
Windows Live Messenger Discussion Forum onMSDN
http://forums.microsoft.com/msdn/showforum.aspx?forumid=112&siteid=1
Windows Live Messenger Team Spacehttp://spaces.msn.com/messengersays/PersonalSpace.aspx
Windows Live Alerts Signuphttp://signup.alerts.msn.com
Windows Live Business Questions?E-mail: [email protected]
-
8/14/2019 Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
81/81