https://open.work.weixin.qq.com/api/doc#90000/90135/90236

#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use Encode qw(encode_utf8);
use JSON::MaybeXS qw(encode_json decode_json);
use LWP::UserAgent;
use HTTP::Request ();
use HTTP::Response;
use HTTP::Request::Common; my $tokenurl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?';
my $sendurl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?';
my $corpid = '';
my $corpsecret = '';
my $agentid =; sub get_response($) {
my $req = shift; my $ua = LWP::UserAgent->new(timeout=>);
my $res = $ua->request($req);
# $res->decoded_content / $res->content
if ( $res->is_success ) {
my $res_data = decode_json($res->content);
return (, $res_data);
}
else {
return (, $res->status_line);
}
} sub get_token {
my $token_url = $tokenurl . 'corpid=' .$corpid . '&corpsecret=' . $corpsecret;
my $req = HTTP::Request->new('GET', $token_url); my ($r, $res_data) = get_response($req);
if ( $r ) {
return ($r, $res_data->{access_token});
}
else {
return ($r, $res_data);
} } sub send_data($$$) {
my ($token, $user, $content) = @_;
my $send_url = $sendurl . 'access_token=' . $token;
my $send_data = {
'touser' => $user,
'msgtype' => 'text',
'agentid' => $agentid,
'text' => {'content' => $content},
'safe' => '0'
};
my $json = encode_utf8(encode_json($send_data));
my $req = HTTP::Request->new('POST', $send_url);
$req->content($json); my ($r, $res_data) = get_response($req);
if ( $r ) {
return ($r, $res_data->{errmsg});
}
else {
return ($r, $res_data);
} } my ($r, $send_token) = get_token();
print send_data($send_token, 'username', 'hello world');

【perl】企业微信发消息的更多相关文章

  1. .netcore--Controller后台实现企业微信发送消息

    一.获得企业微信管理端权限,登录企业企业微信管理端界面,并创建应用,如下图中的[网站消息推送] 二.参见企业微信API文献,根据corpid=ID&corpsecret=SECRET(其中企业 ...

  2. python实现通过企业微信发送消息

    实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq ...

  3. Java发送企业微信应用消息

    1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再 ...

  4. 使用gitlab ci构建IOS包并发送通知消息到企业微信

    在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ...

  5. 通过企业微信API接口发送消息

    最近给公司测试组内部开发一个记账小工具,当账目出现问题的时候需要发送消息通知大家,前期主要采用的QQ发送通知消息,但是有一天突然无法连接到QQ服务器,运维的同学建议采用微信的方式对接然后进行告警,所以 ...

  6. 使用Python发送企业微信消息

    准备工作: 到企业微信官网,注册一个企业:登录企业微信后台,创建一个“自建”应用, 获取企业ID.agentid.secret这3个必要的参数:在企业微信的通讯录中,创建多个测试账号:在手机端安装“企 ...

  7. zabbix企业微信报警实现

    企业微信配置 # 注册 企业微信注册地址:https://work.weixin.qq.com 笔者注册的企业微信名称为 5iik # 配置 # 在主干5iik(企业名称)下添加子部门(监控组),并将 ...

  8. Java企业微信开发_12_异常:java.lang.OutOfMemoryError: Java heap space

    一.异常现象 今天客户迁到正式环境,在做企业微信 接收消息服务器配置  时,出现如下异常: java.lang.OutOfMemoryError: Java heap space 二.异常原因 JAV ...

  9. [企业微信通知系列]Jenkins发布后自动通知

    一.前言 最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容.而由于公司使用的是企业微信,因此 ...

随机推荐

  1. 20164322韩玉婷 -----Exp1 PC平台逆向破解

    Exp1 PC平台逆向破解 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一 ...

  2. 下载python包

    修改pip下载源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider 更新pip版本 python -m pip inst ...

  3. 关于pycharm中缩进、粘贴复制等文本编辑功能部分失效的解决办法

    有可能是同时安装了vim,冲突导致: 在seetings中点击Plugins,搜索vim卸载后功能恢复

  4. 使用LNMP架构部署动态网站环境(源代码安装)

  5. js入门关于函数

    一,函数·关键字(function)复习var·js关键字.用于声明变量.生命在内存模块完成,定义(=)在执行模块完成.var(可以在内存模块提前完成,所以有变量提升的功能.function也是js的 ...

  6. 思科模拟器-使用vlan划分子网

    此博客为初始化版本,未经完善,后续我再整理一下 小技巧:有时候我们不小心执行了一条错误命令,可以尝试使用在该命令前加一个no进行撤销 首先说一下网络设备的选择 在该实验中我主要用到一台三层交换机(思科 ...

  7. Dev GridControl数据修改后实时更新数据源(转)

    1:  /// <summary> 2:  /// 嵌入的ComboxEdit控件选择值变化事件 3:  /// </summary> 4: /// <param nam ...

  8. 第一章 XAML概览

    1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...

  9. python 多线程threading的学习一

    1. import threading #引入线程模块 2 申明实例 t = threading.Thread(target  = fun, args = (,)) 说明:参数target 是要运行的 ...

  10. Java中final、finally、finalize有什么区别?

    final.finally和finalize的区别是什么? final: 最终的意思,可以修饰类,方法和变量. 它修饰的类,不能被继承 它修饰的方法,不能被重写 它修饰的变量,不能被改变 finall ...