Skip to main content

发送企微消息

访问路径:数据功能 -> 企业微信 -> 企业微信消息

功能简述

基于企业微信平台向特定用户或群组发送自定义消息,或文件。消息内容以JSON格式编辑,具体可以参考对应消息的模版案例。在使用前,需要在数据信息中注册相应的企业微信服务信息,可以参考 统一数据模型 中企微应用的注册方式。

支持的消息类型有:

  • 文本消息/Text
  • 文本卡片消息/TextCard
  • 图文消息/News
  • Markdown消息/Markdown
  • 文本通知型/Text_Notice
  • 图文展示型/News_Notice
  • 按钮交互型/Button_Interaction
  • 投票选择型/Vote_Interaction
  • 多项选择型/Multiple_Interaction
  • 仅发送文件/Only File
  • 自定义格式/Customized

WeComm Messager

消息附件

消息附件支持将流程中创建的报表文件,或本地文件作为媒体文件嵌入到消息中。在发送消息前,系统会先将提供的附件上传至企业微信,并获取相应的media_id或image_url,这些信息可以通过在消息体中预置的任务临时变量来获取。如:<tsk:media_hamster_user_guid_pdf_id/>。针对图片文件,系统自动创建相应media_id和image_url,如:<tsk:media_hamster_png_url/>,非图片文件,仅提供media_id。
例如:

文件名文件类型任务临时变量任务临时变量
hamster user guid.dpf文件<tsk:media_hamster_user_guid_pdf_id/>
hamster.png图片<tsk:media_hamster_png_id/><tsk:media_hamster_png_url/>

注:

  • 文件名中的空格、连字符、点号、左右大小括号,均会被替换成下划线_,并在尾部添加_id标识media_id,或添加_url标识图片url地址。
  • 当前任务创建的media_id为任务级信息,不会被后续任务所使用。如果需要在其他任务中公用媒体文件,请使用数据功能-企业微信-上传媒体文件功能线上传并获取公用的media_id信息。

消息推送

系统支持单笔消息推送和批量消息推送功能。

  • 单笔消息推送
    基于微信消息页签中配置的消息格式和内容进行单条发送。
  • 批量消息推送
    如果在任务脚本中配置了的查询语句,系统将按该脚本查询出来的结果,批量的轮询替换消息体里面的变量占位符,并依次推送消息。同时,脚本返回的记录集中各个字段信息,可以通过数据变量的模式,在消息内容中被引用。如:
    select user_id, task_id from biz.task_list where task_status<>'completed'
    上述脚本查询返回的是还没有完成的,且本次会被发送任务清单,清单里面的字段可以被按数据变量的模式进行引用:<db:user_id/>,<db:task_id/>

消息状态更新

系统在善后脚本页签中提供了一个在批量消息推送模式下,更新每条消息推送后状态的功能脚本。该脚本会在每条消息推送后被执行,可用于记录当前消息的推送状态,方便后续统计推送的进度,或在失败后重新推送。
为了实现这个功能,系统在每条消息推送完成后,会将当前记录的状态信息通过任务临时变量的模式反馈给操作人员,操作人员只需要将这些任务级变量名占位符嵌入到该脚本中,即可实现捕获每条记录状态的目的。系统反馈的变任务变量有:

任务变量功能描述案例
errcode任务状态,0为成功<tsk:errcode/>
errmsg错误信息<tsk:errmsg/>
msgid推送的消息id<tsk:msgid/>
response_code仅“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,可于更新模版卡片消息接口<tsk:response_code/>
invaliduser不合法的userid<tsk:invaliduser/>
invalidparty不合法的partyid<tsk:invalidparty/>
invalidtag不合法的标签id<tsk:invalidtag/>
unlicenseduser没有基础接口许可(包含已过期)的userid<tsk:unlicenseduser/>

例如:在返回的errCode不为0时,标识为失败,已方便下次重新推送。

update biz.task_list
set task_status=case when '<tsk:errcode/>'='0' then 'completed' else 'failed' end, err_msg='<tsk:errmsg/>'
where user_id='<db:user_id/>'

注意:上述脚本中用到了任务脚本的<db:user_id/>数据查询变量,从而可以获取当前发送的消息对应数据查询中的特定用户id。