使用外部接口功能实现新记录监控(二)-发送订单详细内容

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

1 配置数据发布任务,设置邮件模板

1.1 设置任务变量

1.2 设置任务邮件标题

1.3 设置收件人地址

1.4 设置邮件正文

2 启用数据源的“允许从该数据源上的接口表中启动数据提取任务”功能

3 修改触发器,从外部触发任务

4 执行结果

 

《使用外部接口功能实现新记录监控(一)-发送简单提醒消息》一文中,我们了解了如何利用EasySQLMAIL的外部接口功能来发送新订单的提醒消息。在这一节中,我们将描述如何在发送的提醒邮件中加入更为详细的订单信息。

下图是我们想要实现的邮件样式:

需求样例

可以通过从EasySQLMAIL的外部接口表上触发数据发布任务来实现此需求。以下是详细步骤。

1 配置数据发布任务,设置邮件模板

1.1 设置任务变量

首先在EasySQLMAIL中创建一个“高级任务”。任务类型为“电子邮件”。在任务中加入下列变量:

需要创建的任务变量

这里特别要说明的是,由于变量“订单号”需要在执行时从接口表传入,所以在设置“订单号”变量的属性时,需要勾选“允许从外部接口表中传入变量值”选项。

勾选“允许从外部接口表中传入变量值”选项

各个变量的说明如下:

变量名称 取值方式 SQL语句 变量说明
订单号 从外部接口传入   从外部接口传入。用于指定要查询的订单号
客户ID 使用SQL语句动态生成
SELECT cust_id FROM orders WHERE order_id = #订单号#
用于查询订单的客户ID
客户名称 使用SQL语句动态生成
SELECT cust_name FROM cust WHERE cust_id = #客户ID#
用于查询订单的客户名称
客户员工邮件地址 使用SQL语句动态生成
SELECT a.mail_addr FROM staff a,vip b WHERE b.cust_id = #客户ID# AND a.staff_id = b.serv_staff_id
用于查询客户对口的服务人员邮件地址。任务执行完成后会将邮件发送到这个地址上。

1.2 设置任务邮件标题

在设置邮件标题时,需要在标题中加入变量。设置的标题象这样:

VIP客户订单跟踪提示:客户名称:#客户名称#,订单号:#订单号#

其中,#客户名称##订单号#是两个变量。EasySQLMAIL在执行任务时会用我们前面设置的任务变量的值去替换标题中的变量,任务执行完成后生成的邮件标题如下:

VIP客户订单跟踪提示:客户名称:XXXX酒店,订单号:5

1.3 设置收件人地址

由于每个客户的服务人员不一样,因此必须使用变量来确定邮件的收件人。通过一个SQL查询客户的服务人员的邮件地址:

SELECT a.mail_addr FROM staff a,vip b 
WHERE
 b.cust_id = #客户ID# AND a.staff_id = b.serv_staff_id;

在选择任务收件人时,点击窗口右侧的“从变量添加”按钮,并选择前面创建的变量“客服员工邮件地址”。

从变量添加收件人地址

这样,EasySQLMAIL在执行任务时会将变量“客服员工邮件地址”的值作为收件人邮件地址处理,从而达到根据订单情况动态设置收件人的目的。

1.4 设置邮件正文

邮件中需要显示客户名称、订单号和订单的详细表格。设置好后的邮件模板如下:

邮件模板

正文中的变量处理与标题中的变量处理模式相同。在设置好表格后,需要输入查询订单信息的SQL语句并查询结果字段与表格中的字段相关联。点击正文设计界面中的“编辑查询语句”按钮,打开“正文模板属性”对话框。然后点击“正文模板属性”对话框中的“创建新查询”,打开“创建新查询”对话框。

打开正文模板属性对话框

创建新查询对话框

在这个对话框中选择好数据源,并输入用于查询订单信息的SQL,然后点击“测试SQL语句”按钮。测试完成后,“未关联的数据字段”列表中将会列出SQL语句的查询结果字段。选择要显示的字段,并在“未关联的单元格”列表中选择字段相关的单元格,点击“增加关联关系”。这样EasySQLMAIL就知道应该将哪个字段放到正文表格中的哪个单元格上了。

到这里任务设置就完成了。

注意:

(1)不需要为此任务设置执行计划。

(2)任务默认是单进程执行的。如果同一时间订单数较多的话,建议将任务指定在一个“任务容器”中运行,并且允许同时运行多个任务实例。如下图:

任务选项

2 启用数据源的“允许从该数据源上的接口表中启动数据提取任务”功能

设置数据源属性

将任务添加到允许启动列表

3 修改触发器,从外部触发任务

将触发器的类型修改为“T”(触发一个指定的任务)。即在插入记录到EASYSQLMAIL_INTF的时候指定OPER_TYPE="T",TASK_ID为新创建的任务的ID。并且将新的ORDER_ID(订单号)作为任务参数传给EasySQLMAIL。

create trigger trigger_orders_insert on orders after insert
as
declare @cust_id int;
select @cust_id = cust_id,@order_id = order_id from inserted;
if exists(select from vip where cust_id = @cust_id)
begin
      insert into easysqlmail_intf(oper_type,task_id,task_params)
      values(
            --操作类型为T(触发一个指定的任务)
            'T',
            --任务在EasySQLMAIL中的ID
            230,
            --任务参数。写法为"参数名=参数值"
            '订单号=' CONVERT(varchar(20),@order_id)
          );
end

 

4 执行结果

手机邮箱中收到的邮件

相关文档:

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

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

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

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