Skip to content

发送模板消息

liaofei edited this page Jan 20, 2021 · 1 revision
我们此处说的模板消息主要指小程序订阅消息和微信模板消息,我们先介绍框架内发送模板消息的一些要素。

第一,数据表

下面微信和小程序消息模板存储表

CREATE TABLE `eb_template_message` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '模板id',
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=订阅消息,1=微信模板消息',
  `tempkey` char(50) NOT NULL DEFAULT '' COMMENT '模板编号',
  `name` char(100) NOT NULL DEFAULT '' COMMENT '模板名',
  `kid` varchar(255) NOT NULL DEFAULT '',
  `content` varchar(1000) NOT NULL DEFAULT '' COMMENT '回复内容',
  `tempid` char(100) DEFAULT NULL COMMENT '模板ID',
  `add_time` varchar(15) NOT NULL DEFAULT '' COMMENT '添加时间',
  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='微信模板';

第二,队列

当前模板消息发送多采用异步队列方式,队列文件存放于crmeb/jobs目录。调用方式举例:

use crmeb\utils\Queue;

Queue::instance()->job(\crmeb\jobs\OtherOrderJob::class)->data($orderInfo)->push();

此处只是调用方式举例,不代表发送逻辑在此队列中开发,具体的发送业务,在具体的异步队列类中开发。


第三,配置文件

配置文件位置:config/template.php,将从微信公众平台获取的模板消息编号在此文件进行配置

微信公众号模板消息配置 输入图片说明

小程序订阅消息配置 输入图片说明


下面我们详细讲解如何添加一个新的模板消息,并发送模板消息。

第一,微信公众平台添加模板消息,不会的开发者可以自行“度娘”或者看一下微信开发文档。

第二,在商城后台添加模板消息,公众号和小程序分别在不同的功能菜单中添加

输入图片说明

第三,逻辑中调用发送

公众号和小程序各业务模板消息方法分别在不同的队列类中,所以新的模板消息方法也开发到相对应的模板消息队列类中 公众号:crmeb/jobs/WechatTemplateJob.php 小程序:crmeb/jobs/RoutineTemplateJob.php

如果是公众号则调用公众号队列类,小程序则调用小程序队列类,但是不管是哪种都需要用户的openid才能发送模板消息。下面是调用示例:

调起OtherOrderJob::class队列

use crmeb\utils\Queue;

Queue::instance()->job(\crmeb\jobs\OtherOrderJob::class)->data($orderInfo)->push();

OtherOrderJob::class中发送模板消息

<?php

class OtherOrderJob extends BaseJob
{
    public function sendServicesAndTemplate($order)
    {
        $openid = $wechatUserServices->uidToOpenid($order['uid'], 'wechat');
        $wechatTemplate = new WechatTemplateJob();
        $wechatTemplate->sendOrderPaySuccess($openid, $order);
    }
}
Clone this wiki locally