如何修改微信公众号超期提醒日期 - DigitalPlatform/dp2 GitHub Wiki

通过 dp2library 的 library.xml 配置 monitors/readersMonitor 元素的 notifyDef 属性,可以定义图书到期之前的通知参数。首先,我们来了解一下 monitors 元素。

monitors -- 后台监控任务

样例:

    <monitors>
        <readersMonitor startTime="15:40" />
        <messageMonitor startTime="01:00" />
        <arriveMonitor startTime="01:00" />
    </monitors>

解释:

library.xml根元素下的元素下可以使用子元素<readersMonitor>、<messageMonitor>、<arriveMonitor>来分别定义三种后台监控任务的特性:读者超期催还任务、消息清扫任务、预约到书通知任务。

<readersMonitor>、<messageMonitor>、<arriveMonitor>这三个元素都可以用startTime属性来定义每日自动启动时刻。startTime属性值的格式为:小时:分。例如“15:40”。小时采用24小时制。

如果不配置startTime属性,缺省的效果是后台任务每小时试探启动一次。显然缺省的效果是任务启动更频繁、密集,但对服务器CPU资源占用就更大一些。建议把这些后台任务安排到夜晚图书馆不开馆的时候执行,如果图书馆服务器24小时不间断开机的话。

1)readersMonitor监控超期未还的情况,可及时给读者发通知。

2)messageMonitor监控消息库内的消息,及时清理长期积累的旧消息,以免消息库所占用的硬盘空间失控。

3)arriveMonitor监控预约到书情况,和通知后读者未及时来取的情况。在后者情况下,软件会接着通知后面的预约者。

对于arriveMonitor,这个任务如果配置为每日启动一次,可能会因为刻度太粗,不能做到及时通知后面的预约者,要等到第二天才通知。如果希望这个任务的灵敏度高一些,建议不要配置<arriveMonitor>小节,那么缺省的效果就是每小时启动处理一次。

数据目录中log子目录中,会自动创建一些名字模式为*_lasttime.txt的文件,这些都是有用的工作文件,记载了后台任务启动的相关信息,系统管理员不要去删除这些文件。

log子目录中的日志文件中有对后台任务启动、停止状态的记载信息。

2018/12/17 23:32:28 (定时)arriveMonitor 启动。
2018/12/17 23:32:28 (定时)readersMonitor 启动。
2018/12/17 23:32:28 (定时)messageMonitor 启动。
2018/12/17 23:32:29 (定时)arriveMonitor结束。共处理记录 1 个。
2018/12/17 23:32:29 (定时)messageMonitor结束。共处理记录 2 个。
2018/12/17 23:32:29 (定时)readersMonitor结束。共处理记录 2 个。

notifyDef 属性

定义图书到期之前的通知参数,通过配置 readersMonitor 元素的 notifyDef 属性完成,通常使用以下几种方法。

1)用百分比统一定义提醒时刻。 比如 notifyDef="50%,75%"。表示每当借期到了 50% 和 75% 的时候,各提醒通知一次。因为各种读者类型,各种图书类型,定义的借期长度比较复杂多变,用百分比统一定义提醒时刻是个好办法。

2)用固定的时间长度来定义提醒时刻。 比如 notifyDef="15day,30day"。表示每当借期到了 15day 和 30day 的时候,各提醒通知一次。 这个方法有些固有的问题。比如有一种图书的借期定义为 60day,那么上述定义提醒时刻就会太早。如果有一种图书的借期定义为 15day,则首次提醒又太晚。不如最开始介绍的比例提醒合理。

3)超期的日子开始倒着计算,前N天的时刻进行提醒。 比如 notifyDef="-3day"。这是表示,从超期的日子开始倒着计算,前三天的时刻进行提醒。

4)上面介绍的几种定义方法混用。 例如 nodifyDef="15day,-3day,75%"。表示每当借期到了 15day、超期前3天 和 75% 的时候,各提醒通知一次。

最后提醒一下,dp2 系统中对于借期时间的定义,时间单位不仅只能用 day,还可以用 hour。有些图书馆的阅览室不让读者借出不好,读者总要能借出去复印什么的,但不让读者借期太长,可以用小时来定义。

具体如何配置可以参看测试用例


dp2系统消息发送机制:

dp2系统发送消息的机制为:dp2library服务器的消息通过dp2capo传递给dp2Merser,dp2Merser再根据消息的分流方式或者通过短信平台发送消息给手机,或者通过腾讯公众号发送到绑定账号的用户公众号上。

目前,除了找回密码/接收验证码是通过短信平台发送的以外;读者借还、超期、交费等提醒内容是通过腾讯公众号来发送的。

通过公众号发送的消息都记录在dp2003服务器上weixin_data的log日志里面。如果要查询某天所发送的消息内容,或者是否发送成功的话,需要看当天的日志记录。

每个公众号在注册的时候腾讯会给公众号一个ID,当某个读者关注这个公众号以后,腾讯也会给读者一个ID.

所以dp2系统通过公众号给读者发送消息,是对点发送到公众号下读者的ID.所以日志里面记录发送消息时,会有一个接收ID的记录,形式为weixin=[读者ID@公众号ID]

如果图书馆因为建立了自己的公众号(不是“我爱图书馆”公众号),如果读者关注了单位自己的公众号,那么他接收的消息需要从“我爱图书馆”发送到单位自己的公众号以后才能被他接收到。如果单位的公众号与“我爱图书馆”公众号的连接出了问题,读者也有可能收不到相关消息。

“我爱图书馆”公众号发送给读者的消息包含以下15类(weixin.xml里面可以看到,各种消息的模板已经都在腾讯“我爱图书馆”公众号的“模板消息”中进行了定义),每种类型的ID是腾讯分配的。

1. 绑定通知-Bind
2. 解绑通知-UnBind
3. 借书成功通知-Borrow
4. 还书成功通知-Return
5. 交费成功通知-Pay
6. 交费撤销通知-CancelPay
7. 系统异常提醒-Message
8. 预约到书通知-Arrived
9. 超期(已经超期)-CaoQi
10. 预约取消通知-CancelReserve
11. 停借期满通知-YiTingDaiJinDaoQi
12. 读者注册审核-ReviewPatron
13. 审核结果通知-ReviewResult
14. 图书到期(即将超期通知)-KuaiCaoQi
15. 用户资料变更通知-PatronInfoChanged

在weixin.xml中也定义了用户单位自己的公众号中所配置的消息类型,用户单位的公众号要收到消息的话,同时他的公众号也要配置对应的消息模板。消息模板的命名要与“我爱图书馆”消息模板对应的命名一致。

这里需要注意的是:关于超期的通知消息有两个,一个是已经超期通知,另一个是即将超期通知。即将超期通知模板是2020年后加的,有些单位自己公众号的消息模板中有可能没有同步添加。如果为用户单位增配了消息模板(同时要在单位自己公众号中增加消息模板定义),要回收我爱图书馆的应用池。

⚠️ **GitHub.com Fallback** ⚠️