发送企微消息
访问路径:数据功能 -> 企业微信 -> 企业微信消息
功能简述
基于企业微信平台向特定用户或群组发送自定义消息,或文件。消息内容以JSON格式编辑,具体可以参考对应消息的模版案例。在使用前,需要在数据信息中注册相应的企业微信服务信息,可以参考 统一数据模型 中企微应用的注册方式。
支持的消息类型有:
- 文本消息/Text
- 文本卡片消息/TextCard
- 图文消息/News
- Markdown消息/Markdown
- 文本通知型/Text_Notice
- 图文展示型/News_Notice
- 按钮交互型/Button_Interaction
- 投票选择型/Vote_Interaction
- 多项选择型/Multiple_Interaction
- 仅发送文件/Only File
- 自定义格式/Customized
消息附件
消息附件支持将流程中创建的报表文件,或本地文件作为媒体文件嵌入到消息中。在发送消息前,系统会先将提供的附件上传至企业微信,并获取相应的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。