1.0.5 • Published 3 years ago

@meiqia/widget-sdk v1.0.5

Weekly downloads
5
License
MIT
Repository
-
Last release
3 years ago

Widget SDK

安装

ES6 模块

npm install @meiqia/widget-sdk
或
yarn add @meiqia/widget-sdk

浏览器环境

<script src="widget-sdk.js"></script>

使用

ES6 模块

import widgetSdk from '@meiqia/widget-sdk';
widgetSdk.init();

浏览器环境

<script>
  widgetSdk.init();
</script>

注意事项

SDK 内部使用了 JSON , Array 等原生对象的原型链方法,如果您的应用有修改原生对象的行为则可能造成未知影响。

API

Callback 数据格式

widgetSdk.emit('init', data, res => {
  const {
    code: 0,          // 成功返回0,失败返回值 < 0
    data: {},         // 成功返回相应的数据,失败返回 null
    message: 'string' // 成功无该字段,失败返回相应的错误信息
  } = res;
});

通用数据类型:
Agent {
  id: number;
  groupId: number;
  token: string;
  privilege: string;
  avatar: string;
  nickname: string;
  realname: string;
  signature: string;
  cellphone: string;
  telephone: string;
  email: string;
  qq: string;
  weixin: string;
}

Msg {
  id: number;
  agent: Agent;
  convId: number;
  contentType: ReceiveMsgType;
  content: string | unknown[];
  fromType: 'agent' | 'bot' | 'client';
}

向sdk发送指令执行一些操作 widgetSdk.emit(name, data, callback)

初始化

初始化widget

widgetSdk.emit('init', data, callbcak);

// widgetSdk.init 是 widgetSdk.emit('init') 的别名

data {
  entId: number;        // 企业ID
  trackId?: string;     // 访客跟踪ID
  title?: string;       // 页面标题
  url?: string;         // 页面URL
  referrerUrl?: string; // 来源URL
}

callback data {
  visitorStatus: number;
  trackId: string;
  visitId: string;
  browserId: string;
  servability: boolean;
  agentOnline: boolean;
  entWelcomeMessage: string;
}

分配对话

分配对话,在init成功之后执行

widgetSdk.emit('scheduler', data, callback);

data {
  agentToken: string; // 客服Token
  groupToken: string; // 客服组Token
  url: string;        // 页面标题
  title: string;      // 页面URL
}

callback data {
  success: boolean;
  result: string;
  agent?: Agent;
  conv?: {
    id: number;
  };
  historyMsgs?: Msg[];
}

消息

访客发送消息

widgetSdk.emit('sendMsg', data, callback);

data {
  type: 'text' | 'photo' | 'file'; // 消息类型
  content: string;                 // 消息内容,消息为text类型时传入
  file: File;                      // 文件对象,消息为photo或file类型时传入
}

callback data {
  success: boolean;
  msg?: Msg;
}

排队

获取访客排队进度

// 没有参数
widgetSdk.emit('getQueuePosition', callback);

callback data {
  inQueue: boolean;
  position: number;
}

访客名片

设置访客名片

widgetSdk.emit('setAttr', data, callback);

data {
  [your-attr-name]: string | number;
  ...
}

callback data: null

工单

获取工单配置

widgetSdk.emit('getTicketConfig', callback);

callback data {
  addresser_name: string;
  captcha: Switch;
  category: Switch;
  contactRule: 'single' | 'multi';
  intro: string;
  defaultTemplate: Switch;
  defaultTemplateContent: string;
  email: Switch;
  name: Switch;
  qq: Switch;
  tel: Switch;
  wechat: Switch;
  custom_fields: {
    name: string;
    type: 'string' | 'number' | 'radio' | 'check' | 'date';
    metainfo: string[];
    required: boolean;
    placeholder: string;
  }[];
  content_title: string;
  content_fill_type: 'content' | 'placeholder';
  content_placeholder: string;
}

提交工单

widgetSdk.emit('sendTicket', data, callback);

data {
  content: string;
  categoryId: number;
}

callback data null

询前表单

获取询前表单配置

widgetSdk.emit('getPreinquiryConfig', callback);

callback data {
  status: Switch;
  title: string;
  form: {
    captcha: boolean;
    inputs: {
      status: Switch;
      title: string;
      fields: PreInquiryInputField[];
    };
    menus: {
      status: Switch;
      title: string;
      assignments: PreInquiryAssignItem[];
    };
  }
}

事件监听 widgetSdk.on(name, callback)

收到新消息

widgetSdk.on('newMsg', (msg: Msg) => {});

对话结束

widgetSdk.on('endConversation', ({ evaluation: boolean }) => {});

收到对话邀请

widgetSdk.on('invitation', ({ agentToken: string }) => {});

客服邀请评价

widgetSdk.on('inviteEvaluation', () => {});

排队进入对话

widgetSdk.on('initConvFromQueue', (agent: Agent) => {});
1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

4 years ago

1.0.2

4 years ago