1.如何对接CRM系统?

答:①点击菜单栏【设置】,webhook设置,添加地址,完成账号绑定;

customer(客资内容)字段对照表

字段名称 标识
落地页所属媒介名称 channelName
渠道名称(多个以“,”分隔) clName
落地页地址(包含渠道信息) clUrl
表单内容 content
表单名称 formName
落地页名称 landingPageName
图片多选 multiPicture
落地页预览地址 previewUrl
图片单选 singlePicture
当前记录唯一标识 submitId
页面文本框、富文本框等展示名称 usedColumnDescs
页面文本框、富文本框等数据库标识名称 usedColumns
落地页所属公司ID webCompanyId

content字段对照表

字段名称 标识
防作弊蜜罐 full_name
组件标识 form_uuid
表单标识 form_id
落地页地址 url
链接来源 referrer
填单用户会话唯一标识 sid
填单用户唯一标识 uid
曝光标识 pid
控制器名称 controller
客资控件 -
通用控件 -

客资组件字段对照表

组件名称 标识
姓名 name
电话 phone
公司 company
微信 wechat
邮箱 email
性别 sex
QQ qq
地区 areaSelect

注:客资组件为通用字段,固定不变

通用组件字段对照表

控件名称 标识
单选 singleselect
多选 multiselectb
输入框 generalinput
图片多选 picmultiselect
图片单选 picsingleselectbe
下拉框 dropdown
二级下拉框 twostagedropdown

注:通用组件为多用字段,前缀+变量

数据推送样例

例如,指定URL为http://url.com/yiye/callback,当一叶接受到表单数据时,一叶以application/x-www-form-urlencoded 格式POST该数据的customer信息

POST http://url.com/yiye/callback
Content-Type: application/x-www-form-urlencoded
channelName: "",
clName: "",
clUrl: "落地页地址",
content: "",
formName: "表单名称",
landingPageName: "落地页名称",
multiPicture:"",
previewUrl: "落地页预览地址",
singlePicture: "",
submitId: "2370",
usedColumnDescs: "",
usedColumns: ""

接收示例

webhookdemo.java

public void demo(Customer customer){
        //解码
        customer.decode();
        // 字段标识 key
        JSONArray keyArray = JSON.parseArray(customer.getUsedColumns());
        // 字段标题 desc
        JSONArray keyDescsArray = JSON.parseArray(customer.getUsedColumnDescs());
        // 填单内容 value
        JSONObject contentMap = JSON.parseObject(customer.getContent());
        //
        log.info("customer:{}",JSON.toJSONString(customer));
        // 遍历key 获取 对应的值 与 标单上展示的名称
        log.info("keyArray:{} ",keyArray);
        log.info("keyDescsArray:{} ",keyDescsArray);
        log.info("contentMap:{} ",contentMap);
        //遍历获取数据
        for(int i = 0;i
<
keyArray.size();i++){
            String key = keyArray.get(i).toString();
            String desc = keyDescsArray.get(i).toString();
            //地区选择
            if(StringUtils.equals(key,"areaSelect")){
                //省 市 区
                String province = contentMap.get("select_province").toString();
                String city = contentMap.get("select_city").toString();
                String area = contentMap.get("select_area").toString();
                System.out.println("key = " + key + "  desc = " + desc + " value = " + province + " " + city + " "+area);
            }else {
                String value = contentMap.get(key).toString();
                System.out.println("key = " + key + "  desc = " + desc + " value = " + value);
             }
        }
}

webhookdemo.php

<?php
   /**
    * 建议整体分为两部分,‘数据接收’和‘数据使用’
    */
   /** 
    * 数据接收时,使用统一处理逻辑,将数据存储起来 
    */ 
   // 落地页链接
   $clUrl = $_POST['clUrl'];
   // 各字段显示的名称
   $usedColumnDescs = urldecode($_POST['usedColumnDescs']);
   // 各字段标识 
   $usedColumns = urldecode($_POST['usedColumns']);
   // 填单内容
   $content = urldecode($_POST['content']);
   // 其他字段略
   // ...

   /**
    * 数据使用时,因为业务本身不固定,建议根据特定业务编写特定处理逻辑
    * 实际业务处理中,并不需要直接分析‘usedColumns’里面的具体值(判断字段类型除外(generalinput*, singleselect*, name... 全部类型请参考具体文档))
    * 单个填单的 usedColumns 和 usedColumnDescs 可以构造一个 kv 映射结构,跟 content 里面的字段标识做匹配,进行具体业务处理
    */
   // test
   $str=  $clUrl."\n".$usedColumnDescs."\n".$usedColumns."\n".$content."\n";
   file_put_contents('submit.log', $str); 
?
>

results matching ""

    No results matching ""