使用外部接口功能实现新记录监控(一)-发送简单提醒消息

EasySQLMAIL应用案例-使用EasySQLMAIL的外部接口功能实现新记录监控和提醒(一)

1 需求描述

2 解决思路

3 具体实现

3.1 启用数据源上的“外部接口功能”

3.2 编写触发器

3.3 发送邮件提醒给客服员工

3.4 发送企业微信消息给客服员工

1 需求描述

公司想对一批重要客户进行重点关注,客户在公司的系统中办理业务后,要及时通知客服人员对客户的订单进行跟踪处理。但目前CRM系统暂时不支持主动提醒,客服人员也不可能24小时人工监视订单情况。因此需要IT部在现有CRM系统上进行改造实现此功能,但不能影响CRM的其它功能。

2 解决思路

经过探讨,决定使用MSSQL触发器和EasySQLMAIL的外部接口功能实现此需求。主要做法如下:

在CRM系统所使用的MSSQL数据库的订单表上增加触发器,在有新记录时检查用户是否是重点关注客户。如果是,则将新订单的信息插入MSSQL上的EasySQLMAIL的外部接口表中,由EasySQLMAIL将订单信息通过电子邮件或是公司的企业微信发送给相关的客服人员,这样在业务受理完成后客服人员即可立即得到通知。

3 具体实现

3.1 启用数据源上的“外部接口功能”

首先在EasySQLMAIL的数据源设置上启用“外部接口功能”,并设置扫描时间为5秒。启用“外部接口功能”后,EasySQLMAIL会在数据源上创建EASYSQLMAIL_INTF、EASYSQLMAIL_WX_INTF等与接口功能相关的表。这些表的表结构和作用可以在《EasySQLMAIL系统操作手册-外部接口功能》查询到。

启用数据源上的外部接口功能

3.2 编写触发器

为不影响生产系统,先在CRM系统的测试库的orders表中建立触发器测试,在新订单进来时查询订单的客户ID(cust_id)是否在vip表中,如果在,则将订单的信息插入到EasySQLMAIL的接口表easysqlmail_intf表中。触发器代码如下:

create trigger trigger_orders_insert on orders after insert
as
declare @cust_id int,@order_id bigint,@mail_addr varchar(200),@cust_name varchar(200);
select @cust_id = cust_id,@order_id = order_id from inserted;
if exists(select from vip where cust_id = @cust_id)
begin
  --查询客户名称和对应的客服人员的邮件地址
  select @mail_addr = a.mail_addr,@cust_name = c.cust_name
    from staff a,vip b,cust c
      where c.cust_id = @cust_id and b.cust_id = @cust_id and a.staff_id = b.serv_staff_id;
  insert into easysqlmail_intf(subject,body,send_to)
  values(
        --邮件标题
        'VIP客户订单跟踪提示:客户名称:' + @cust_name + ',订单号:' CONVERT(varchar(20),@order_id),
        --邮件正文
        '您好。' char(13) + 'VIP客户"' + @cust_name + '"于' convert(varchar(100),getdate(),120) '在我公司办理了业务,业务订单号为:' CONVERT(varchar(20),@order_id) + ',请及时跟进此订单的处理情况。',
       --收件人邮件地址,即员工的mail_addr
       @mail_addr
   );
end

3.3 发送邮件提醒给客服员工

“外部接口”功能启用后,EasySQLMAIL会每隔5秒检查一次easysqlmail_intf表是否有新记录,如果有,就按接口表的要求将记录通过邮件发送,或是执行指定的任务。下图是测试的结果在手机上的显示情况:

 

客服员工收到的邮件提醒和邮件内容

3.4 发送企业微信消息给客服员工

如果配置了微信企业号,也可以通过接口表调用EasySQLMAIL将消息发到客服人员的微信号上。触发器改成下面这样:

create trigger trigger_orders_insert on orders after insert
as
declare @cust_id int,@order_id bigint,@wx_user_id varchar(200),@cust_name varchar(200);
select @cust_id = cust_id,@order_id = order_id from inserted;
if exists(select from vip where cust_id = @cust_id)
begin
  --查询客户名称和对应的客服人员的微信账号
  select @wx_user_id = a.wx_user_id,@cust_name = c.cust_name
    from staff a,vip b,cust c
      where c.cust_id = @cust_id and b.cust_id = @cust_id and a.staff_id = b.serv_staff_id;
  insert into easysqlmail_wx_intf(wx_app_id,content,to_user)
  values(
        --企业微信应用在EasySQLMAIL中的应用ID,您的可能不一样
        75,
        --消息内容,不能超过2048字节
        '您好。' char(13) + 'VIP客户"' + @cust_name + '"于' convert(varchar(100),getdate(),120) '在我公司办理了业务,业务订单号为:' CONVERT(varchar(20),@order_id) + ',请及时跟进此订单的处理情况。',
       --消息接收者的微信帐号。需要消息接收者事先关注了公司的企业微信号,并且帐号在ID为75企业微信号应用的可见范围内
       @wx_user_id
   );
end

 

下图是发出的微信消息:

客服员工收到的微信消息

 

相关文档:

EasySQLMAIL系统操作手册-外部接口功能

EasySQLMAIL系统操作手册-微信企业号配置

文档最后更新时间:2017-11-21