当前位置: 首页 > 知识库问答 >
问题:

ASP. NET MVC与LACRM Api集成

公孙英飙
2023-03-14

我以前在另一篇文章中问过这个问题,但是我没有收到回复。我正在尝试将ASP. Net MVC与少烦人的CRM API集成。目的是将表单提交存储到CRM中,以便将每个提交组织成类别或任务。LACRM api是为PHP设计的,开发人员提到他们缺乏在C#方面提供帮助的技能。这是我的代码(LACRM使用默认字段“FullName”和“Email”,然后它有一个参数“CustomFields”,以便可以创建自定义表单输入。我遇到的问题是只有FullName被注册,“电子邮件和”CustomFields显示在Api日志中,但没有在crm上的字段中注册):我的代码:


    public async Task createContact(Booking booking)
        {
           
            //string APITOKEN = "some token";
            //string UserCode = "98992";
            //string Function = "CreateContact";
            //string PipeLineId = "3687195324475747612076041165694";
            //string url = "https://api.lessannoyingcrm.com?APIToken=" + APITOKEN + "&UserCode=" + UserCode + "&Function=" + Function + "&PipelineId=" + PipeLineId + "";
            string url = "https://api.lessannoyingcrm.com?APIToken=sometoken&UserCode=A2575&Function=CreateContact&PipelineId=3727019319364096972431828675722";
            var postData = new List>
            {
                
               };
            postData.Add(new KeyValuePair
            (
                   "Email[1]", (new KeyValuePair("Text", booking.Email),
                               new KeyValuePair("Type", "Work")).ToString()
               ));
    
            postData.Add(new KeyValuePair
               (
                   "Phone[1]", (new KeyValuePair("Text", booking.Phone),
                               new KeyValuePair("Type", "Work")).ToString()
               ));
    
            postData.Add(new KeyValuePair
               (
                   "Website[0]", (new KeyValuePair("Text", "")).ToString()
               ));
    
    
            postData.Add(new KeyValuePair
               (
                   "Location", (
                                new KeyValuePair("", booking.PostCode)
                                
                               ).ToString()
               ));
    
    
            postData.Add(new KeyValuePair
                (
    
                    "CustomFields", (
    
                        new KeyValuePair("Conservatory", booking.Consevatory),
                        new KeyValuePair("Size", booking.Size),
                        new KeyValuePair("Type", booking.RoofType),
                        new KeyValuePair("Source", booking.HearAboutUs),
                        new KeyValuePair("Comment", booking.OtherInfo),
                        new KeyValuePair("Conservatory", booking.SelectedProduct)
    
    
                    ).ToString()
    
    
                ));
        
    
            using (var httpClient = new HttpClient())
            {
                using (var content = new FormUrlEncodedContent(postData))
                {
                    content.Headers.Clear();
                    content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
    
                    HttpResponseMessage response = await httpClient.PostAsync(url, content);
    
                    var apiresponse = await response.Content.ReadAsAsync();
                }
            }
            return true;
        }

这是LACRM PHP代码:


    $_REQUEST['ContactName'],
        "Email"=>array(
                    0=>array(
                        "Text"=>"$_REQUEST[Email]",
                        "Type"=>"Work"
                    )
                ),
        "Phone"=>array(
                    0=>array(
                        "Text"=>"$_REQUEST[Phone]",
                        "Type"=>"Work"
                    )
                ),
    );
     
    //...And then use the "CallAPI" function to send the information to LACRM
    $Result = CallAPI($UserCode, $APIToken, $Function, $Parameters);
    //That's it, the contact will now show up in the CRM!
     
    //Now let's enter the "Comment" field from the HTML form as a note on the contact's record
    //Get the new ContactId
    $ContactId = $Result['ContactId'];
     
     
    $Function = "CreateNote";
    $Parameters = array(
        "ContactId"=>$ContactId,
        "Note"=>$_REQUEST['Comment']
    );
     
    //And pass that note to the API
    $Result = CallAPI($UserCode, $APIToken, $Function, $Parameters);
     
    /*
    There are all kinds of other things you might want to do here as well such as:
        -Set a task to follow up with the contact (https://www.lessannoyingcrm.com/help/topic/API_Example_Code_PHP/11/)
        -Add the contact as a lead (https://www.lessannoyingcrm.com/help/topic/API_Example_Code_PHP/87/)
        -Add the contact to a group (https://www.lessannoyingcrm.com/help/topic/API_Example_Code_PHP/13/)
        -Send an email to yourself letting you know a form was submitted (you can use the PHP "mail" function)
    */
     
     
    //Now forward the visitor to an html page confirming that we got their contact info
    header('location:confirm.html');
     
      
    /*
        This function takes all of the settings needed to call the API and puts them into
        one long URL, and then it makes an HTTP request to that URL.
    */
    function CallAPI($UserCode, $APIToken, $Function, $Parameters){
        $APIResult = file_get_contents("https://api.lessannoyingcrm.com?UserCode=$UserCode&APIToken=$APIToken&".
                    "Function=$Function&Parameters=".urlencode(json_encode($Parameters)));
        $APIResult = json_decode($APIResult, true);
          
        if(@$APIResult['Success'] === true){
            //echo "Success!";
        }
        else{
            echo "API call failed. Error:".@$APIResult['Error'];
            exit;
        }
        return $APIResult;
    }

  

如果能为customfield的工作提供帮助,我将不胜感激。非常感谢。

共有1个答案

端木令
2023-03-14

在C#中,关联数组是字典。您可以准备以下参数:

var parameters = new Dictionary<string, object> {
    { "FullName", booking.FullName },
    { "Email",
        new object[] {
            new Dictionary<string, string> {
                { "Text", booking.Email},
                { "Type", "Work"},
            }
        }
    },
    { "Phone", new object[] {
            new Dictionary<string, string> {
                { "Text", booking.Phone},
                { "Type", "Work"},
            }
        }
    }
    // Complete the other data
};

在PHP示例中,API调用使用HTTP方法GET,但您可以使用POST(我提倡这样做)。从LACRAM文档中:

您可以使用POST、GET或任何您想要的东西(对我们来说都一样)。

string url = "https://api.lessannoyingcrm.com?APIToken=sometoken&UserCode=A2575&Function=CreateContact&PipelineId=3727019319364096972431828675722";
var parametersAsJson = Newtonsoft.Json.JsonConvert.SerializeObject(parameters);
using (var httpClient = new HttpClient())
{
    var response = await httpClient.PostAsync(url, new StringContent(parametersAsJson));
    // Check the response status code to check if operation success
    // Usualy 200 (Ok), maybe LACRAM return other success code, check the doc
    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        var resultAsJson = await response.Content.ReadAsStringAsync();
        var result = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(resultAsJson);
        var contactId = result["ContactId"];
        var companyId = result["CompanyId"];
    }
    else
    {
        throw new InvalidOperationException("Fail to create the contact");
    }
}
 类似资料:
  • 您好,我有一个按钮,当我单击它时,此函数称为: 这里是CreateQrLink函数 这是我想通过点击下载QrCode按钮从这个视图下载图像的视图,我如何实现它?我不在数据库中保存QrLink我应该保存它还是其他什么?我想从src=Model获取照片。QrUrl

  • 我在时区面临一个问题。现在我正在从客户端保存时区,并将所有日期时间存储在UTC中。它工作正常,但当我试图将UTC的日期时间转换为CST、EST、EDT等时区后,它会显示错误的数据。 问题-假设我在美国东部夏令时晚上10点做了任何任务,并且它将在凌晨2点(按照UTC)保存在DB中,但当我尝试获取一天的数据并通过当前UTC日期时。 我的问题是,如果我试图获取一天的数据,比如从美国东部时间午夜11点到当

  • 问题内容: 我在Internet Explorer中的页面出现问题。我有一个Ajax调用,在其他浏览器中,当我单击该链接时,该调用会传递到控制器中并正确加载数据。但是在IE中,一次加载后,它消失了,而我却没有通过控制器就获得了相同的旧结果。 问题答案: 尝试: 放置在控制器类中的此属性禁用缓存。由于不需要在应用程序中缓存,因此将其放置在BaseController类中: 这是有关OutputCac

  • 我是新点燃的。 步骤1:我在两个VM(ubuntu)中安装了Ignite 2.6.0,在一个VM中启动了节点。下面有COMAND。bin/ignite.sh examples/config/example-ignite.xml 步骤2:我的所有配置都在example-default.xml中 步骤3:在其他VM中执行包含datagrid逻辑的client.jar(该VM既是客户机也是节点)。 步骤

  • 0.9.2 新版功能. 这些函数提高了初始化 Django 配置中环境变量的效率,运行后即可从 Django 项目或者 Django 本身中提取环境变量,而不需要每次使用 fabfile 时都亲自设置环境变量,或者使用 manage.py 插件。 目前,这些函数仅支持 Fabric 和 fabfile 以及它能引用到的 Django 库交互。听起来限制了你的使用,其实不然。在下面的例子中,你可以像

  • 问题内容: 我对SQL(Server2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,这是一个唯一字段(主键),应该像我

  • 问题内容: 我正在尝试将Lucene与EclipseLink结合使用,并想知道那里是否有任何好的集成库?我已经看过太阳耀斑,看起来像石灰,它可以满足我的要求,但是它已经过时了(尽管我使用的是EclipseLink的较旧版本,但我使用的是Lucene 4.10)这可能有用,但是我找不到任何文档,有关如何使用它的示例或教程。 任何建议将不胜感激(我也不相信我们也可以切换到Hibernate) 提前致谢

  • 我正在寻找一些关于使用webpack的帮助,用于一个大型AngularJS应用程序。我们使用基于特性的文件夹结构(每个特性/页面都有一个模块,它们有控制器、指令)。我已经成功地配置了webpack,使其能够与Grunt一起工作,生成一个包。我想创建块,因为它将是一个大的应用程序,我们想要加载模块(页面/特征)工件异步。 我将通过一些webpack示例使用语法使用。然而,我不能得到块懒惰加载。首先,