模板消息

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

关于使用规则,请注意:

  1. 1. 所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
  2. 2. 需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
  3. 3. 在所选择行业的模板库中选用已有的模板进行调用;
  4. 4. 每个账号可以同时使用多个模板。
  5. 5. 当前每个模板的日调用上限为 10 万次【20141118日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。

关于接口文档,请注意:

  1. 1. 模板消息调用时主要需要模板 ID 和模板中各参数的赋值内容;
  2. 2. 模板中参数内容必须以 ".DATA" 结尾,否则视为保留字;
  3. 3. 模板保留符号 "\{\{ \}\}"

获取实例

  1. <?php
  2. use EasyWeChat\Foundation\Application;
  3. // ...
  4. $app = new Application($options);
  5. $notice = $app->notice;

API

  • boolean setIndustry($industryId1, $industryId2) 修改账号所属行业;
  • array getIndustry() 返回所有支持的行业列表,用于做下拉选择行业可视化更新;
  • string addTemplate($shortId) 添加模板并获取模板ID;
  • collection send($message) 发送模板消息, 返回消息ID;
  • array getPrivateTemplates() 获取所有模板列表;
  • array deletePrivateTemplate($templateId) 删除指定ID的模板。

非链接调用方法:

  1. $messageId = $notice->send([
  2. 'touser' => 'user-openid',
  3. 'template_id' => 'template-id',
  4. 'url' => 'xxxxx',
  5. 'data' => [
  6. //...
  7. ],
  8. ]);

链式调用方法:

  1. 设置模板IDtemplate / templateId / uses
  2. 设置接收者openId: to / receiver
  3. 设置详情链接:url / link / linkTo
  4. 设置模板数据:data / with
  5. 以上方法都支持 `withXXX` `andXXX` 形式链式调用
  1. $messageId = $notice->to($userOpenId)->uses($templateId)->andUrl($url)->data($data)->send();
  2. // 或者
  3. $messageId = $notice->to($userOpenId)->url($url)->template($templateId)->andData($data)->send();
  4. // 或者
  5. $messageId = $notice->withTo($userOpenId)->withUrl($url)->withTemplate($templateId)->withData($data)->send();
  6. // 或者
  7. $messageId = $notice->to($userOpenId)->url($url)->withTemplateId($templateId)->send();
  8. // ... ...

示例:

模板

  1. @{{ first.DATA }}
  2. 商品明细:
  3. 名称:@{{ name.DATA }}
  4. 价格:@{{ price.DATA }}
  5. @{{ remark.DATA }}

发送模板消息:

  1. $userId = 'OPENID';
  2. $templateId = 'ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY';
  3. $url = 'http://overtrue.me';
  4. $data = array(
  5. "first" => "恭喜你购买成功!",
  6. "name" => "巧克力",
  7. "price" => "39.8元",
  8. "remark" => "欢迎再次购买!",
  9. );
  10. $result = $notice->uses($templateId)->withUrl($url)->andData($data)->andReceiver($userId)->send();
  11. var_dump($result);
  12. // {
  13. // "errcode":0,
  14. // "errmsg":"ok",
  15. // "msgid":200228332
  16. // }

结果:

notice-demo

模板数据

为了方便大家开发,我们拓展支持以下格式的模板数据,其它格式的数据可能会导致接口调用失败:

  • 所有数据项颜色一样的(这是方便的一种方式):

    1. $data = array(
    2. "first" => "恭喜你购买成功!",
    3. "keynote1" => "巧克力",
    4. "keynote2" => "39.8元",
    5. "keynote3" => "2014年9月16日",
    6. "remark" => "欢迎再次购买!",
    7. );

    默认颜色为’#173177’, 你可以通过 defaultColor($color) 来修改

  • 独立设置每个模板项颜色的:

    • 简便型:

      1. $data = array(
      2. "first" => array("恭喜你购买成功!", '#555555'),
      3. "keynote1" => array("巧克力", "#336699"),
      4. "keynote2" => array("39.8元", "#FF0000"),
      5. "keynote3" => array("2014年9月16日", "#888888"),
      6. "remark" => array("欢迎再次购买!", "#5599FF"),
      7. );
    • 复杂型(也是微信官方唯一支持的方式,估计没有人想这么用):

      1. $data = array(
      2. "first" => array("value" => "恭喜你购买成功!", "color" => '#555555'),
      3. "keynote1" => array("value" => "巧克力", "color" => "#336699"),
      4. "keynote2" => array("value" => "39.8元","color" => "#FF0000"),
      5. "keynote3" => array("value" => "2014年9月16日", "color" => "#888888"),
      6. "remark" => array("value" => "欢迎再次购买!", "color" => "#5599FF"),
      7. );

关于模板消息的使用请参考 微信官方文档