             description : description
             picurl      : pic_url
             url         : url
+      , wrap callback
+
+    template: ({id: template_id, topcolor: topcolor, url: url, data: data}, callback) ->
+      request
+        method : 'POST'
+        url    : "#{api_common}/message/template/send?access_token=#{access_token}"
+        json   :
+          touser      : @openid
+          template_id : template_id
+          url         : url
+          topcolor    : topcolor or '#FF0000'
+          data        : data
       , wrap callback
 
   # ### 与反`REST`设计战斗

        wx.upload 'thumb', music.thumb_media, (err, res) =>
          return @send 500 unless music.thumb_media = res?.thumb_media_id
          send music
  
    # 新闻类型另含：
    #
    # + 消息类型；
    # + 新闻条数；
    # + 新闻内容。
    news: (articles) ->
  
      articles = [].concat(articles).map ({title, description, pic_url, url}) ->
        "<item>
        <Title><![CDATA[#{title}]]></Title> 
        <Description><![CDATA[#{description}]]></Description>
        <PicUrl><![CDATA[#{pic_url}]]></PicUrl>
        <Url><![CDATA[#{url}]]></Url>
        </item>"
      
      @send message "<MsgType><![CDATA[news]]></MsgType>
        <ArticleCount>#{articles.length}</ArticleCount>
        <Articles>#{articles.join('')}</Articles>"
  
    # 转移客服接口
    transfer: ->
      @send message "<MsgType><![CDATA[transfer_customer_service]]></MsgType>"


                # 如为二维码扫描事件，
                when 'scan' then scan()

                when 'templatesendjobfinish'
                  if @template_handler
                    req.message = message
                    @template_handler(req, res)
                  else res.ok()

                # 尚无法处理的事件，直接响应`200`。
                else res.ok()

