企业微信应用文本消息

应用支持推送文本、图片、视频、文件、图文等类型,本篇主要实现发送应用文本消息。

获取企业凭证

发送应用消息首先需要获取调用凭证access_token,此处的凭证为企业凭证,可通过企业授权安装时返回的授权信息中获取access_token;之后可通过获取企业凭证进行刷新。

请求方式

POST

请求地址

https://qyapi.weixin.qq.com/cgi-bin/service/get_corp_token?suite_access_token=SUITE_ACCESS_TOKEN

请求包体

{
    "auth_corpid": "auth_corpid_value",
    "permanent_code": "code_value"
}

方法示例

需要授权企业id和企业永久授权码及三方企业凭证,先写好方法下方发送应用消息时使用。

代码如下:

/**
 * 获取授权企业access_token
 * @param $corpid
 * @param $permanent_code
 * @return array|mixed
 */
public function getCompanyToken($corpid, $permanent_code)
{
    $access_token = '三方企业凭证';
    $url = 'https://qyapi.weixin.qq.com/cgi-bin/service/get_corp_token?suite_access_token=' . $access_token;
    $params = json([
        'auth_corpid' => $corpid,
        'permanent_code' => $permanent_code
    ]);
    $info = $this->linkCurl($url, 'POST', $params);
    $res = djson($info);
    if (isset($res['errcode']) && $res['errcode'] != 0) {
        return toFail($res['errmsg']);
    }
    return toSuccess('success', ['token' => $res['access_token']]);
}

参数说明

参数

是否必须

说明

suite_access_token

三方应用凭证,获取点击可查看

auth_corpid

授权方企业corpid,通过获取永久授权码得到

permanent_code

永久授权码,通过get_permanent_code获取

 

返回结果

返回结果为json格式。

{
    "errcode":0 ,
    "errmsg":"ok" ,
    "access_token": "xxxxxx", 
    "expires_in": 7200
}

参数说明

参数

说明

access_token

授权方(企业)access_token,最长为512字节

expires_in

授权方(企业)access_token有效时间

应用消息

应用支持推送文本、图片、视频、文件、图文等类型。

请求方式

POST

 

请求地址

https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN

 

参数说明

参数

是否必须

说明

access_token

调用接口企业凭证

发送文本消息

其他消息类型需要上传临时素材后,才可调用暂无用到其他类型功能,因此本篇暂时只实现文本消息。

请求示例

通过上方封装好的凭证方法获取企业凭证,之后编辑好文本消息包体内容。

代码如下:

/**
 * 发送企业微信-文本消息
 * @return array|bool|mixed|string
 */
public function sendAppTextMsg()
{
    $get_token = $this->getCompanyToken('授权企业id', '企业永久授权码');
    if ($get_token['status'] != 1) {
        return $get_token;
    }
    $access_token = $get_token['data']['token'] ?? '';
    $url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?debug=1&access_token=' . $access_token;
    // 参数设置
    $params = json([
        "touser" => "YuanLaiShiNi",
        "msgtype" => "text",
        "agentid" => '授权企业安装时获取的agentid',
        "text" => [
            "content" => "今天已经是周三,请尽快完成计划完成事件。\n详情可点击<a href='http://www.baidu.com'>计划清单</a>查看,\n按照轻重缓急完成。"
        ],
        "safe" => 0,
        "enable_id_trans" => 0,
        "enable_duplicate_check" => 0,
        "duplicate_check_interval" => 1800,
    ]);

    return $this->linkCurl($url, 'POST', $params);
}

特殊说明

其中text参数的content字段可以支持换行、以及A标签,即可打开自定义的网页(可参考以上示例代码)(注意:换行符请用转义过的\n)

文本消息显示

返回内容
{"errcode":0,"errmsg":"ok","msgid":"WpLDpQFMGSE843kRbNhgXV0ggM0ngtU7e4rl2FNJGnSHw6BCjVyX8G_4bz8CpnrVjV1rbMI_h_xzkPismuXuQg"}

返回参数说明

参数

说明

errcode

返回码

errmsg

对返回码的文本描述内容

invaliduser

不合法的userid,不区分大小写,统一转为小写

invalidparty

不合法的partyid

invalidtag

不合法的标签id

unlicenseduser

没有基础接口许可(包含已过期)的userid

msgid

消息id,用于撤回应用消息

response_code

仅消息类型为“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,应用可使用response_code调用更新模版卡片消息接口,72小时内有效,且只能使用一次

注意

支持重复消息检查,当指定 "enable_duplicate_check": 1开启: 表示在一定时间间隔内,同样内容(请求json)的消息,不会重复收到;时间间隔可通过duplicate_check_interval指定,默认1800秒。

调用建议:大部分企业应用在每小时的0分或30分触发推送消息,容易造成资源挤占,从而投递不够及时,建议尽量避开这两个时间点进行调用。

频率限制:每应用不可超过账号上限数*200人次/天(注:若调用api一次发给1000人,算1000人次;若企业账号上限是500人,则每个应用每天可发送100000人次的消息)。每应用对同一个成员不可超过30次/分钟,1000次/小时,超过部分会被丢弃不下发。

总结

感觉企业微信中的文本消息类似于手机中的短信,还可以加跳转网站的链接,操作比较简单。

### 企业微信应用文本消息HTML美化的实例或方法 尽管企业微信官方支持的消息类型中并未直接提及 HTML 格式的全面兼容性,但在某些情况下,可以通过间接方式利用 HTML 片段增强消息的表现力。以下是几种可能的方式及其具体实现示例。 #### 方法一:通过 Markdown 渲染有限的 HTML 效果 虽然企业微信中的 Markdown 支持较为基础,但它仍然可以解析部分 HTML 标签。例如 `<br>`、`<strong>` 和 `<em>` 等标签能够在一定程度上模拟 HTML 的功能[^1]。 以下是一则使用简单 HTML 标记来优化布局的例子: ```javascript function sendEnhancedMarkdownMessage() { const mdTpl = ` <strong>重要公告</strong><br> 尊敬的各位同事:<br> 我们将于<strong>今晚22:00</strong>进行系统维护,请提前保存好您的工作数据。<br> 如果有任何疑问请联系 IT 部门。<br> (此邮件由系统自动发出) `; const url = getConfig().url; const data = { msgtype: 'markdown', markdown: { content: mdTpl, }, }; return axios({ url, method: 'post', headers: {'Content-Type': 'application/json'}, data, }); } ``` 该函数定义了一条包含加粗标题和斜体备注的通知信息,并且每一段落之间都加入了换行符以改善可读性。 #### 方法二:借助图文消息(news)传递富媒体内容 对于更复杂的视觉需求,则推荐采用 `news` 类型的消息。这种方式下不仅可以嵌入图片资源,而且允许设置超链接指向外部页面加载更多动态内容。不过需要注意的是,这里的正文区域依旧受限于纯文本输入模式,无法直接插入复杂结构化的内容片段如表格等[^2]。 下面给出一个关于新产品发布的示例代码: ```json { "msgtype": "news", "news": { "articles": [ { "title": "<h3 style='color:#FF5733;'>全新产品上线啦!</h3>", "description": "<p>我们最新研发的产品现已正式发布。</p>", "url": "http://www.example.com/new_product.html", "picurl": "http://res.cloudinary.com/demo/image/upload/v160894728/product_image.jpg" } ] } } ``` 在此处可以看到 title 字段内部尝试运用了 h3 元素调整字体大小与颜色;然而实际上这部分会被当作普通的字符串对待而失去原有的语义特性——即最终呈现出来的效果只是普通样式的文字而已。因此这种方法主要适用于那些希望快速构建具备基本装饰风格的应用场景之中。 --- #### 方法三:ActionCard 提供单选或多选项卡交互体验 最后介绍 ActionCard 形态的消息对象,它非常适合用来制作带有多重选择项的小程序界面原型。每一个 button 属性都可以单独设定 label 及其关联的动作地址(action_url),从而让用户可以直接点击进入对应的服务环节当中去[^3]。 举个例子来说就是这样一个用于收集反馈意见的功能模块: ```json { "msgtype":"action_card", "action_card":{ "title":"对本次服务满意度评价?", "text":"感谢您参与我们的调研活动。\n\n请选择最符合实际情况的一项。", "btn_orientation":"0",//竖向排列按钮组 "buttons":[ {"title":"非常满意","action_url":"https://survey.exmaple.com/very_satisfied"}, {"title":"比较满意","action_url":"https://survey.exmaple.com/somewhat_satisfied"} ] } } ``` 以上三种途径分别代表不同程度上的解决方案策略,在实际开发过程里可以根据项目的具体情况灵活选取最为合适的那一种来进行实践探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值