注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 基础技术

淘宝Nick脱敏旺旺亮灯改造方案

更新时间:2023/04/03 访问次数:19475

一、背景


旺旺亮灯方案目前是直接使用淘宝nick做入参做旺旺亮灯唤起,后续淘宝开放平台将对API的“买家淘宝nick”字段脱敏,第三方服务商需切换到使用买家OpenUid(appkey维度唯一买家标识)进行旺旺亮灯。


二、淘宝Nick脱敏旺旺亮灯改造范围及节奏

2.1 改造范围


买家淘宝nick、买家OpenUid(appkey维度唯一买家标识)涉及的字段:

旺旺亮灯切换:旺旺亮灯方案从使用“买家淘宝nick”做旺旺亮灯唤起,切换为使用“买家OpenUid”(appkey维度唯一买家标识)做旺旺亮灯唤起。


2.2 技术改造的时间节奏


技术改造节奏:

第一阶段:技术改造期(7.21-7.31)。

服务商根据自身业务情况按旺旺亮灯改造方案进行技术改造。


第二阶段:商家灰度观察期(8.1-8.15)。

服务商对新的旺旺亮灯方案做一定范围的商家灰度(使用买家OpenUid进行旺旺亮灯唤起),过程观察实际效果和反馈问题。


第三阶段:全量业务切换(8.15后Nick脱敏)。


注:第一阶段、第二阶段过程中,平台不会对服务商 TOP API的“买家淘宝nick”脱敏,同时为了保证客户端新老版本兼容性,服务商同时需要传入两个参数:买家淘宝nick、买家OpenUid。


2.3 买家OpenUid从哪里取


目前客服咨询、订单服务(改地址、发货、售后关怀、售后处理)等场景,需要通过旺旺亮灯唤起千牛与消费者链接进行信息沟通。目前我们获取消费者OpenUid信息的方式,集中在以下3个核心的订单API。请服务商根据自身场景进行调整适配,调用API接口获取OpenUid。

1)taobao.trade.fullinfo.get buyer_open_uid字段;

2)taobao.trades.sold.get buyer_open_uid字段;

3)taobao.fenxiao.orders.getopen_buyer_uid字段;


三、旺旺亮灯改造技术实施方案


buyer_open_uid 旺旺亮灯方案唤起消费者;请正确使用端上的唤起,

当前是移动千牛请用 2.1千牛移动端旺旺亮灯改造实施方案

当在pc上,但是是纯H5页面 请参考 2.2 PC-H5页面技术文档:PC旺旺亮灯改造方案

当在pc的千牛容器里,如果是H5插件,请参考 2.3 PC-H5插件旺旺亮灯改造方案

当在pc的千牛容器里,如果是小程序插件,请参考? 2.4 PC-小程序旺旺亮灯改造方案

请不要在H5插件里使用纯h5的技术方案。


3.1 千牛移动端旺旺亮灯改造方案


my.qn.openChat打开聊天页面

千牛移动端7.6.0 及以上版本支持该API。


接口的入参


参数名

必传

类型

示例

描述

nick

【隐私合规版本以上,此参数废弃,不允许传入nick参数】

string

cntaobao买家测试账号

【废弃中,只允许iOS 9.6.5和安卓9.8.20以下版本使用】聊天的对象的nick,nick前请带上nick域, 所属域可选值为:cntaobao|cnalichn|enaliint cntaobao 是淘宝用户 cnalichn 是中文站用户 enaliint 是国际站用户。

text

string

你好

打开聊天窗,同时携带输入框文本

openUId

string

聊天对象的openUserId。

targetType

string

taobao

聊天对象的类型,淘宝用户或者1688用户。

可选值为: taobao, 1688。

sceneParam

string

{"toRole":"buyer"}

场景信息,json格式,默认为空身份为买家。

当前亮灯对象为买家时:

{"toRole":"buyer"}

当前亮灯对象为卖家时:

{"toRole":"seller"}

注意:

1.买家:buyer

触达消费者场景,消息会话在手淘,买旺等消费者端透出(即对方如果在手淘上可以收到消息)。

2.卖家:seller

触达商家场景,消息会话不支持

在手淘,买旺消费端透出,在千牛商家端透出(即对方如果在手淘上收不到消息)。


代码样例


 var privacyEnabled = xx;//判断端版本是否大于等于 >=(iOS 9.6.5 / android 9.8.20), 如果大于等于则为true,反之为false
   if (privacyEnabled) {
      my.qn.openChat({
        text: '您好',
        openUId: 'xxxxxxx',
        targetType: 'taobao',
        sceneParam: '\"{\\\"toRole\\\":\\\"buyer\\\"}\"',
        success: () => { },
        fail: () => { },
      });
    } else {
      my.qn.openChat({
        nick: 'cntaobao买家测试账号',
        text: '您好',
        targetType: 'taobao',
        sceneParam: '\"{\\\"toRole\\\":\\\"buyer\\\"}\"',
        success: () => { },
        fail: () => { },
      });
    }


3.2 PC-H5页面技术文档:PC旺旺亮灯改造方案


步骤1:引入资源


<script src="https://market.m.taobao.com/app/aliww/bc-ww/webww"></script>

步骤2:准备Dom

旺旺亮灯脚本会取 DOM 元素上的一些属性用于拼接旺旺点灯的链接,需要传入对方的nick。


 <span class="J_WangWang" data-nick="${nick}" data-icon="small"></span>


支持的属性有:


DOM 属性

备注

data-encode

当前的 nick 是否已经被 encode(uic nick,不支持displaynick)

data-nick

需要呼起旺旺的用户 nick,如果 data-encode 为 true,则会对 nick 做一次 decode

data-item || window.g_config.itemId

交易焦点的 item id

data-items

交易焦点的 item id,支持多个

data-display

显示样式,可取 inline, block,默认 inline

data-icon

图标样式,可取 small, large, static,默认 large

data-from

来源站点,默认 cntaobao

data-portal

入口,比如 taojianghu

data-scene

会话场景
包括但不限于以下:

  1. 普通咨询:consult
  2. 普通聊天:chat
  3. ISV咨询:isvConsult

data-toRole

会话 to 的角色包括:

  1. 买家:buyer
  2. 卖家:seller
  3. 小二:xiaoer
  4. 服务商:isv

data-encryptuid(新增,必填)

用户加密uid

data-bizdomain(新增,必填)

来源站点,后续替换data-from,淘宝域为taobao,1688域为cbu

data-appkey(新增,二方不用填)

三方加解密openUid需要

data-biztype(新增,必填)

业务类型,0-二方,1-三方

data-sceneparam(新增,bizRef必填)

场景信息,json格式,需要填入调用来源及亮灯对象等

当前亮灯对象为买家时:

{"toRole":"buyer","bizRef": ""}

当前亮灯对象为卖家时:

{"toRole":"seller","bizRef": ""}

注意:

1.toRole的值

买家:buyer

触达消费者场景,消息会话在手淘,买旺等消费者端透出(即对方如果在手淘上可以收到消息)。

卖家:seller

触达商家场景,消息会话不支持

在手淘,买旺消费端透出,在千牛商家端透出(即对方如果在手淘上收不到消息)。


步骤3:亮灯


window.Light.init(); // 需要保证元素的nick数据已填充
或者
window.Light.light(selector); // 点亮某个节点下所有的亮灯


代码样例


import React, { FunctionComponent, useEffect, useState } from 'react';
import _uniqueId from 'lodash/uniqueId';
import _get from 'lodash/get';
import _isFunction from 'lodash/isFunction';
import { loadScript } from './scriptLoader';

const webwwDependencies = {
    kissy: 'https://assets.alicdn.com/s/kissy/1.2.0/kissy-min.js',
    webww: 'https://market.m.taobao.com/app/aliww/bc-ww/webww',
};

interface IWangWangProps extends React.HTMLAttributes<HTMLSpanElement> {
    nick: string;
    disabled?: boolean;
    // scene: string;
    // toRole: string;
    // source: string;
}
async function light(id: string) {
    function initWW() {
        const Light = window['Light'];
        if (_isFunction(Light?.light)) {
            Light.light(id);
            return true;
        }
        return false;
    }
    if (!_isFunction(_get(window, 'KISSY.config'))) {
        await loadScript(webwwDependencies.kissy);
    }
    if (!initWW()) {
        await loadScript(webwwDependencies.webww);
        initWW();
    }
}

const WangWang: FunctionComponent<IWangWangProps> = (props: IWangWangProps) => {
    const { nick, disabled, ...others } = props;
    const [id] = useState(_uniqueId('webww'));
    useEffect(() => {
        try {
            light(id);
        } catch (e) {}
    }, []);

    return (
            <span
                className="J_WangWang"
                data-display="inline"
                data-nick={nick}
                data-icon="small"
        data-encryptuid="RAzN8HWYGXdCDjUiVYYSmzS6uXqTCSYHofcTy84dETXz8eYEsiw"
                // data-scene={scene}
                // data-torole={toRole}
                // data-source={source}
            />
    );
};
export default WangWang;


scriptLoader.tsx


const asyncTasks: { [id: string]: Promise<any> } = {};
export async function loadScript(url: string) {
    if (asyncTasks[url]) return asyncTasks[url];
    const script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', url);
    script.setAttribute('charset', 'utf-8');
    const task = new Promise(resolve => {
 script.onload = resolve;
 script.onerror = resolve;
    });
    document.body.appendChild(script);
    asyncTasks[url] = task;
    return task;
}


3.3 PC-H5插件旺旺亮灯改造方案


接口名称

接口同原接口,新增参数

打开旺旺聊天窗 (openChat)


接口入参


改动说明

参数名

必传

类型

示例

描述

nick

string

cntaobao商家测试账号

聊天的对象的nick,nick前请带上nick域, 所属域可选值为:cntaobao|cnalichn|enaliint cntaobao 是淘宝用户 cnalichn 是中文站用户 enaliint 是国际站用户

新增

bizDomain

string

taobao

【目前为兼容老端,实际为必填字段】 对方聊天域的信息,目前支持 taobao、cbu两种,taobao:淘宝域,cbu 1688域

新增

sceneParam

string

{"toRole":"buyer"}

场景信息,json格式,默认为空身份为买家。 当前亮灯对象为买家时: {"toRole":"buyer"} 当前亮灯对象为卖家时: {"toRole":"seller"} 注意: 1.买家:buyer 触达消费者场景,消息会话在手淘,买旺等消费者端透出(即对方如果在手淘上可以收到消息)。 2.卖家:seller 触达商家场景,消息会话不支持 在手淘,买旺消费端透出,在千牛商家端透出(即对方如果在手淘上收不到消息)。

新增

securityUID

string

安全UID,三方为openUID,二方为加密UID

安全UID,三方为openUID,二方为加密UID 【目前为兼容老端,实际为必填字段】 对方聊天账号的加密UID


代码样例


QN.application.invoke( {
 cmd : 'openChat',
 param : {
 nick : 'cntaobao商家测试账号' ,
 bizDomain : 'taobao' ,
 sceneParam : '{"toRole":"buyer"}' ,
 securityUID : '安全UID,三方为openUID,二方为加密UID' 
 }
});


3.4 PC-小程序旺旺亮灯改造方案


my.qn.openChat (接口名称无变动,新增参数)

功能:打开聊天窗口并输入待发送的信息。


my.qn.openChat接口的入参


属性

类型

必填

描述

nick

String

[目前阶段:nick,uid,

bizDomain,均为必填字段


隐私保护系统上线全量期(待官方通知):

此字段废除,新逻辑务必使用uid和bizDomain]

聊天对象的nick,含站点名称,例如cntaobaoXXX(淘宝),chalichnYYY(中文站)等等

text

String

待发送的信息。如果聊天框里已有内容,会追加到光标处(如果焦点正在输入框)或追加到最后。

securityUID

String


二方为加密UID,

三方为OpenUID

bizDomain

String

聊天对象的账号域,目前只支持"taobao", "cbu"

sceneParam

String

场景信息,jsonString,默认为空身份为买家。

当前亮灯对象为买家时:

{"toRole":"buyer"}

当前亮灯对象为卖家时:

{"toRole":"seller"}

注意:

1.买家:buyer

触达消费者场景,消息会话在手淘,买旺等消费者端透出(即对方如果在手淘上可以收到消息)。

2.卖家:seller

触达商家场景,消息会话不支持

在手淘,买旺消费端透出,在千牛商家端透出(即对方如果在手淘上收不到消息)。


出参


名称

类型

描述

success

Boolean

是否调用成功



代码样例


// 打开聊天窗口并输入待发送的信息
my.qn.openChat({
 nick: 'cnalichnalikjj', // 昵称,要带站点
 text: 'hello', // 信息,可选
 securityUID:'alikjj的加密UID',
 bizDomain:'taobao',
 success: (res) => {
 console.log(res); // {success: true}
 },
 fail: (res) => {
 console.log(res); // {errorMessage: "nick 错误", error: 3}
 },
});


FAQ

关于此文档暂时还没有FAQ
返回
顶部