返回首页


我最近启动了一个项目之间的谷歌日历和销售队伍日历同步的事件,有可能会提供不同的产品有,但那些真正昂贵和一些要求您安装在最终用户计算机中的文件的阵列。对于系统管理员,这将是一场噩梦,特别是当你有超过1000个用户,所以我们选择使用。NET开发我们的解决方案,并创造了我们的服务器上的服务做的工作。这里讨论的文章并不描绘的方式,我们创建了一个解决方案,但一个重要的方面,你可能会使用自己的解决方案,如节能活动,以不同的日历提供商的evets参考。
在这篇文章将讨论如何保存使用C#的销售人员活动的一些要点。Net和令人惊讶的是特别简单的一个有案可稽的API为Salesforce的使用,你可以找到。现在让我们开始。
首先,你需要在SalesForce公司开发帐户,你可以通过签订{A},不要担心,这是洒脱。注意,你应该签署作为一名开发人员,另有一些项目将是不可见的,如API参考。一旦你这样做,可以产生您的企业的WSDL名称(其"测试帐户?- GT;?安装GT;应用设置- GT,发展GT,API在我的情况。
{A2}
请注意,你必须这样做每次您变更或更新您的Salesforce实例的结构,如自定义字段的。一旦多数民众赞成产生的,它保存在"WSDL??文件handly位置。
名单上的下你需要生成一个安全令牌,您需要在您的应用程序,用于连接到Salesforce。现在去命名(在我的测试帐户- GT;??设置- GT - GT我的个人信息;复位安全问题
{A4}
消防启动Visual Studio并创建一个您选择的解决方案,添加WSDL到您的项目,然后添加,右击"引用"文件夹,并添加服务引用的WSDL作为Web参考。
{A5}
你需要一个Web引用,所以你需要打高级
{A6}
然后添加Web引用
{A7}
现在的命中指向您的文件添加引用。此时,您已经创建您的Web参考。我叫我的实例"SalesForceService??现在,在这一点上,你有你需要的一切摇滚。
{A8}
为了能够访问您的Salesforce例如,你需要使用此代码通过验证。这是在您使用您的令牌,你前面生成。您还可以看到有一个代理身份验证的情况下,你需要它。

<span style="color: blue;">private</span> <span style="color: rgb(43, 145, 175);">SforceService</span> SFAuthenticate()



{

    <span style="color: rgb(43, 145, 175);">SforceService</span> oSalesForceService = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">SforceService</span>();

    oSalesForceService.Timeout = 60000;



    <span style="color: green;">// Set Proxy Details if you are using one</span>

    <span style="color: rgb(43, 145, 175);">WebProxy</span> oWebProxy = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">WebProxy</span>(<span style="color: rgb(43, 145, 175);">WebRequest</span>.DefaultWebProxy.GetProxy(<span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Uri</span>(oSalesForceService.Url.ToString())));

    oWebProxy.Credentials = <span style="color: rgb(43, 145, 175);">CredentialCache</span>.DefaultCredentials;

    oWebProxy.UseDefaultCredentials = <span style="color: blue;">true</span>;

    oSalesForceService.Proxy = oWebProxy;



    <span style="color: green;">//Initialize SalesForce Service</span>

    <span style="color: blue;">string</span> username = <span style="color: rgb(163, 21, 21);">"you@company.com"</span>;

    <span style="color: blue;">string</span> password = <span style="color: blue;">string</span>.Concat(<span style="color: rgb(163, 21, 21);">"password"</span>, <span style="color: rgb(163, 21, 21);">"token"</span>);



    <span style="color: rgb(43, 145, 175);">LoginResult</span> oLoginResult = oSalesForceService.login(username, password);



    oSalesForceService.Url = oLoginResult.serverUrl;

    oSalesForceService.SessionHeaderValue = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">SessionHeader</span>();

    oSalesForceService.SessionHeaderValue.sessionId = oLoginResult.sessionId;

    <span style="color: rgb(43, 145, 175);">GetUserInfoResult</span> oUserInfo = oLoginResult.userInfo;



    <span style="color: blue;">return</span> oSalesForceService;

}

现在让我们去你所需要的方法,讨论的所有的方法,下面您将需要SFAuthenticate执行你的方法1。创建到Salesforce的事件编程
这是一个stratight进approch虽然每个事件属性暴露事件类的,也是我创建自定义UniquKey领域之一是生成的WSDL文件也暴露。一旦事件创建SforceService.create方法的参数传递,如果你发现它接受一个事件数组,所以你可以通过在一个调用多个事件。
提示:这是我使用上不同的日历提供商同步事件。{C}
{A9}2。在SaleForce寻找的事件编程
搜索也很容易,你需要的是创建一个{A10}(没有拼错,其真正SOQL是Salesforce的对象类似于SQL的查询语言),以获得您所需要的领域。注意,以及,你不能使用*(选择所有字段),这使得确保你的代码总是你只需要优化。该查询的结果是作为一个QueryResult输出,并可以解析它作为一个事件。只有你所选择领域的事件对象上填充的唯一领域。要得到的是什么事件对象的可用字段列表,检查事件属性。
{A11}
<span style="color: rgb(43, 145, 175);">SforceService</span> oSalesForceService = SFAuthenticate();



<span style="color: rgb(43, 145, 175);">QueryResult</span> oQueryResult = <span style="color: blue;">null</span>;

oSalesForceService.QueryOptionsValue = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">QueryOptions</span>();



oQueryResult = oSalesForceService.query(<span style="color: rgb(163, 21, 21);">"SELECT Id, Subject, Description, Location, StartDateTime, EndDateTime FROM Event WHERE UniqueKey__c = '{Your GUID Here}'"</span>);

<span style="color: blue;">for</span> (<span style="color: blue;">int</span> i = 0; i < oQueryResult.size; i++)

{

    <span style="color: rgb(43, 145, 175);">Event</span> oCalendarEvent = oQueryResult.records[i] <span style="color: blue;">as</span> <span style="color: rgb(43, 145, 175);">Event</span>;

}



oSalesForceService.logout();
在Salesforce编程更新活动
更新你刚才设置的事件属性,你想要的值,并通过SforceService.update方法的参数
<span style="color: rgb(43, 145, 175);">SforceService</span> oSalesForceService = SFAuthenticate();



<span style="color: rgb(43, 145, 175);">QueryResult</span> oQueryResult = <span style="color: blue;">null</span>;

oSalesForceService.QueryOptionsValue = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">QueryOptions</span>();



oQueryResult = oSalesForceService.query(<span style="color: rgb(163, 21, 21);">"SELECT Id FROM Event WHERE UniqueKey__c = '{Your GUID Here}'"</span>);

<span style="color: blue;">for</span> (<span style="color: blue;">int</span> i = 0; i < oQueryResult.size; i++)

{

    <span style="color: rgb(43, 145, 175);">Event</span> oCalendarEvent = oQueryResult.records[i] <span style="color: blue;">as</span> <span style="color: rgb(43, 145, 175);">Event</span>;

    oCalendarEvent.Description = <span style="color: rgb(163, 21, 21);">"Updated Sales Force Event from .Net"</span>;

    <span style="color: rgb(43, 145, 175);">SaveResult</span>[] oSaveResults = oSalesForceService.update(<span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">Event</span>[] { oCalendarEvent });

}



oSalesForceService.logout();
4。在Salesforce中删除事件编程
删除您SforceService.delete方法的参数传递事件
<span style="color: rgb(43, 145, 175);">SforceService</span> oSalesForceService = SFAuthenticate();



<span style="color: rgb(43, 145, 175);">QueryResult</span> oQueryResult = <span style="color: blue;">null</span>;

oSalesForceService.QueryOptionsValue = <span style="color: blue;">new</span> <span style="color: rgb(43, 145, 175);">QueryOptions</span>();



oQueryResult = oSalesForceService.query(<span style="color: rgb(163, 21, 21);">"select Id from Event where UniqueKey__c = '{Your GUID Here}'"</span>);

<span style="color: blue;">for</span> (<span style="color: blue;">int</span> i = 0; i < oQueryResult.size; i++)

{

    <span style="color: rgb(43, 145, 175);">Event</span> oCalendarEvent = oQueryResult.records[i] <span style="color: blue;">as</span> <span style="color: rgb(43, 145, 175);">Event</span>;



    <span style="color: rgb(43, 145, 175);">DeleteResult</span>[] oSaveResults = oSalesForceService.delete(<span style="color: blue;">new</span> <span style="color: blue;">string</span>[] { oCalendarEvent.Id.ToString() });

}



oSalesForceService.logout();

{A12} {S16}

回答

评论会员:O 时间:2