WorkTool企微机器人APP分享自定义链接

news2024/11/17 6:47:41

移动端应用怎么分享自定义网页链接到企业微信

前言

我们知道分享自定义网页可以采用转发形式发到企业微信的客户或群里,但是如果我们业务需要配置每次链接入口不同,如链接附带一些业务参数,这时单纯使用转发常常不能满足需求。找到一种替代方案快速发送自定义网页链接是很有必要的。
所幸根据企业微信官方回复,目前移动端可以调用sdk分享文字、图片视频、网页等至企业微信会话。
iOS端的sdk文档:https://developer.work.weixin.qq.com/document/path/91195
Android端的sdk文档:https://developer.work.weixin.qq.com/document/path/91196
本文以 Android 为例,也记录下其中遇到的一些问题,方便快速接入。

正文

下面开始直接进入接入步骤,我们还是以官方文档的流程为主,其中有些不清楚的地方我再补充。

在这里插入图片描述

第一步 创建应用

登录企业微信后台,需要企业微信管理员扫码登录
地址: https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome_baidu
在这里插入图片描述
我这里创建一个应用,名称为"自建应用"用来测试。
可见范围这里选择全公司,至少也要包括所有需要参与的开发和测试人员!
在这里插入图片描述
创建完成后点击进入,然后在下面找到"企业微信授权登录"并进入。
在这里插入图片描述
填写应用签名和应用包名,以生成schema。
这里遇到第一个坑,应用签名获取方式没有描述和介绍。Android 开发者应该这时不知道要填入的是什么签名值(要不要大小写,要不要去除符号,MD5还是SHA1还是其他?),这里提供一个传统查看自己应用签名方式

keytool -v -list -keystore xxx.jks

提示里说可以使用签名生成工具获取签名,但不知道什么是签名生成工具,也没提供链接,我们去找一下签名生成工具。
在微信开放平台搜索到第一个地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
想去点工具下载的时候,下载链接已经失效了。继续去开发者平台搜索资源,我们终于找到了一个还可以下载的版本,还是贴心的apk版本:https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html
如果你还是找不到,或者资源又失效了,我这里做了百度网盘备份:https://pan.baidu.com/s/1biK0If9ky0WLmgBZidqYog?pwd=1111
打开发现apk还是很贴心的加上了复制到粘贴板功能,只要手动输入一下应用包名就行了,粘贴出来就可以获得我们需要填写的签名,我们打开一看,这不就是去冒号小写MD5嘛。(注意这里我们APP是正式签名的正式包不是测试签名哦,如果都用测试签名也可以但注意每台机器人的测试签名可能不同)
在这里插入图片描述
在这里插入图片描述
填入应用签名和应用包名保存后就给我们 schema 了。
这时候我们还需要记录几个值。
在这里插入图片描述
应用的 AgnetId 记下来。
在这里插入图片描述
企业ID 记下来。

企微后台配置到此完成,此时我们应该有 企业ID、应用 AgnetId、schema 这三个值了,分享要用。

第二步 Android端接入

在这里插入图片描述
下载 aar 包,集成到 Android 项目中。
在这里插入图片描述
在这里插入图片描述
这里就不过多介绍集成 aar 了,基本操作。
集成后在自己的 Application.onCreate 里注册即可。
多次分享,或分享不同类型的消息都只需要注册一次。

iwwapi = WWAPIFactory.createWWAPI(this);
iwwapi.registerApp(SCHEMA);

然后尝试先分享最基础的文本消息。

WWMediaText txt = new WWMediaText("测试消息");
//包名和appName填自己应用的即可。
txt.appPkg = getPackageName();
txt.appName = getString(stringId);
//这里的 appId 填第一步获得的 企业ID,agentId 填第一步获取的 agentId。
txt.appId = APPID;
txt.agentId = AGENTID;
iwwapi.sendMessage(txt);

如果你在这里运行,会提示没有此权限。
在这里插入图片描述

官方自查提示:

  1. 可能是 企业IDAgnetId 第一步复制错了,或者当前手机上企业微信登录的是不是这个企业且可以看见这个应用。(可见范围我这里选择全公司,至少也要包括所有需要参与的开发和测试人员!)
  2. 可能是包名填写错误,这个通常不会出错。
  3. 签名填写错误,我们使用官方工具,也不会出错,但注意我们要签名一致,不要出现提交的是正式包签名,本地调试却使用了测试签名,粗心的开发可能会在这里踩坑。(测试用的包也需要和提交上去签名一致的签名文件签名!)
  4. 跨企业就是企业微信切换到别的企业里,这个我们测试时肯定是和当前企业一致,应该也不会出错。

按上面提示走完了,打正式签名包,运行仍然提示无权限。这里遇到第二个大坑。我们通常打正式包是开启混淆模式的,但是如果你不小心混淆了企业微信sdk的代码,无论如何都会失败。
开启免混淆,官方文档已经贴心的提供了,但写在下面你就可能没注意看。

-keep class com.tencent.wework.api.** {
   *;
}

加到 proguard-rules.pro 文件中,打正式包,终于成功分享文本了。
如果分享文本成功了,分享网页链接就是轻而易举了。
在这里插入图片描述

WWMediaLink link = new WWMediaLink();
link.thumbUrl = thumbUrl ;
link.webpageUrl = webpageUrl ;
link.title = title ;
link.description = description ;
link.appPkg = getPackageName();
link.appName = getString(stringId);
link.appId = APPID; //企业唯一标识。创建企业后显示在,我的企业 CorpID字段
link.agentId = AGENTID; //应用唯一标识。显示在具体应用下的 AgentId字段
iwwapi.sendMessage(link);

thumbUrl 和 description 是选填的,thumbUrl 控制右边的缩略图,如果填 null,企微会填一个默认icon,填空串则显示空白图片,description 填 null 或空串都是空白。下方会显示应用图标和应用名称(这里是"自建应用"),不可以动态修改。

总结

至此,你应该已经完成了移动端应用分享自定义网页链接到企业微信客户或客户群。WorkTool 企微机器人可以自动将自定义链接批量发送给客户,如果还没了解过 WorkTool 可以先看下官网 或入门教程尝试一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

脉冲触发的触发器

唯一的不同在于时钟信号的控制不一样 前面的叫做主触发器,后面叫做从触发器 为什么在一个时钟周期内只可能改变一次?(工作原理) 在时钟信号等于0期间,看看时钟信号的工作 CLK1期间,主FF工作,…

JeecgBoot搭建(低代码)

环境安装 后端:JDK: 1.8 (小于11)、Maven: 3.5、MySql: 5.7、Redis: 3.2 前端:Node Js: 14.18 / 16、Npm: 5.6.0、Yarn: 1.21.1 、Pnpm 工具: IDEA、Navicat、Git、TortoiseGit拉取代码 后端:git clone https://gitee.com/jeecg/…

[附源码]计算机毕业设计网上电影购票系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

升级Seata Server 1.5.2

目录引言下载地址配置初始Mysql数据库支持TCC Fence引言 最近在做Seata TCC集成,集成过程中将Seata Server由原来的1.4.2升级为最新的1.5.2,本文记录了Seata 1.5的升级过程。 原Seata 1.4.2的安装过程可参见我之前的博客: 分布式事务 - Seat…

TPU编程竞赛系列|基于TPU平台的人车目标检测初赛收官!

近日,AI算法创新赛-“基于TPU平台的人车目标检测”初赛正式结束,经过激烈地角逐,最终排名TOP20的队伍成功进入复赛,开启新的赛程! 目标检测是计算机视觉的热门方向,广泛应用于各种智能视频监控系统中。人、…

Flink系列之Flink中State设计详解与企业案例实践

title: Flink系列 二、Flink State 设计详解 Flink 官网解释:Apache Flink — Stateful Computations over Data Streams 前课中 WordCount 的例子,可以得知:其实我们会发现,单词出现的次数有累计的效果。如果没有状态的管理&am…

自制肥鲨HDO2电源升压延长线

自制肥鲨HDO2电源升压延长线1. 问题源由2. 解决方案3. 材料准备4. 最终延长线产出4.1 裸照4.2 成品5. 参考资料1. 问题源由 之前我们介绍了【自制肥鲨HDO2电源降压延长线,支持3S~6S动力电池】,主要解决使用动力电池给眼镜供电的问题。 但是马上有兄弟反…

SpringMVC执行流程

SpringMVC的流程 整个过程开始于客户端发出的一个HTTP请求,Web应用服务器接收到这个请求。如果匹配DispatcherServlet的请求映射路径,则Web容器将该请求转交给DispatcherServlet处理。DispatcherServlet接收到这个请求后,将根据请求的信息&a…

Linux环境下Vivado和HLS功能测试

一. 简介 针对已经完成的Vivado在Linux下的安装与运行,本文主要通过一个LED灯闪烁的案例对Vivado和HLS在Linux操作系统下的运行流程进行介绍,并对已安装软件功能进行一个简单的测试。 HLS将C代码的编译综合为Verilog或VHDL代码,本文对HLS生成…

[附源码]计算机毕业设计JAVA医院门诊信息管理系统

[附源码]计算机毕业设计JAVA医院门诊信息管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

MySQL视图

MySQL视图 VIEW(视图) 概念 可以被当作是虚拟表或存储查询 视图跟表格的不同是,表格中有实际储存资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料。 临时表在用户退出或同数据库的连接断开后就自动…

[LeetCode解题报告] 1610. 可见点的最大数目

[LeetCode解题报告] 1610. 可见点的最大数目一、 题目1. 题目描述2. 原题链接二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现三、 本题小结四、 参考链接一、 题目 1. 题目描述 可见点的最大数目 难度:2147 给你一个点数组 points 和一个表示角度的整数 ang…

01-25-javajvm-JVM和Java体系架构

01-java-JVM和Java体系架构: 1、jvm底层,对性能调优,java是动态内存分配 2、java的跨平台性: Java虚拟机关心“字节码”文件,Java虚拟机和语言关性,只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符…

ch55xduino

1.把wch的ch55x系列单片机,移植到Arduino,制成所谓的“ch55xduino”:GitHub - DeqingSun/ch55xduino: An Arduino-like programming API for the CH55X 2.ch55x系列单片机比较(立创/云汉2022年12月报价) (1)CH552T:2…

ECMAScript新特性

代码 ECMAScript概述 ECMAScript 是脚本语言的标准化规范,也就是语言的语法。比如:怎样定义变量、怎样定义函数和逻辑运算等等。 那么ECMAScript 和 JavaScript 是何关系? JavaScript 是ECMAScript 的扩展语言,JavaScript实现了…

项目管理逻辑:日志\周报\月报, 一直要求写, 有用吗?

目录 1.公司管控项目: 2.什么是项目的生命周期? 3.项目管控举例 3.1装修项目阶段划分 3.2研发项目 4.控制项目的核心 1.公司管控项目: 写周报,日报,项目问题照样失控, 其实本质上的问题就是 我们没有如何设置好项目的阶段和项目的里程碑. 项目管理的五个阶段 2.什么是…

Golang基本命令操作

在前两期【初探Golang语言之环境搭建】 和 【Golang语法总结与学习】,对环境搭建和基本语法有介绍,本篇对常用的命令进行学习和梳理,记录下来,方便备查。 一、Go 语言基本命令 // 编译,生成exe文件 go build // 移除…

家庭用户无线上网案例(AC通过三层口对AP进行管理)

组网需求 为一个家庭用户使用的网络架构。该家庭消费用户的上网流量大多是低速流量,例如浏览网页、玩游戏、看视频等。家庭成员使用的无线终端主要为手机、PC、电视机等。终端接入的数量正常情况下在10个以内,偶尔有家庭聚会等特殊情况,终端接…

微服务框架 SpringCloud微服务架构 11 自定义镜像 11.1 镜像结构

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构11 自定义镜像11.1 镜像结构11.1.1 镜像结构11.1.2 总结11 自定义镜像 11…

【人工智能与机器学习】——线性回归、逻辑回归与分类评价指标(学习笔记)

📖 前言:线性回归(Lincar Regression)模型是最简单的线性模型之一,简而言之就像一元一次函数,是所有机器学习初学者的起点。而逻辑回归(Logistic Regression)则稍显复杂,…