微信公众号开发:5、企业微信 SDK —— 发送文本消息

原文:https://www.cnblogs.com/Quinnz/p/12292598.html


下面在控制台应用里展示一个简单的例子来实现发送文本消息。

本文目录:

创建控制台应用

使用命令行工具创建

$ dotnet new console --name WeixinWorkDemo

dotnet 是程序的名字
new 是一个子程序的名字
console 是要使用的项目模板的名字
--name WeixinWorkDemo 指定要创建的项目的名字是 WeixinWorkDemo

添加SDK引用

命令行方式

进入项目目录

$ cd WeixinWorkDemo

添加包引用

$ dotnet add package Senparc.Weixin.Work

这个命令的执行效果可以在 WeixinWorkDemo.csproj 文件中看到

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Senparc.Weixin.Work" Version="3.7.104.2" />
  </ItemGroup>

</Project>

配置和使用SDK

添加appsettings.json文件

appsettings.json 文件一般用作 .NET Core 项目的项目配置文件,在 ASP.NET Core 项目中通常可以看到。

文件内容如下,其中需要替换你自己的信息进去。

{
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "SenparcSetting": {
        "IsDebug": true,
        "DefaultCacheNamespace": "DefaultCache"
    },
    "SenparcWeixinSetting": {
        "IsDebug": true,
        "WeixinCorpId": "替换为你的企业微信企业ID",
        "WeixinCorpAgentId": "替换为你的企业微信应用ID",
        "WeixinCorpSecret": "替换为你的企业微信应用的Secret"
    }
}

声明编译时复制配置文件

然后修改 WeixinWorkDemo.csproj,声明把 appsettings.json 拷贝到编译输出目录,不然运行时会找不到 appsettings.json 文件。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Senparc.Weixin.Work" Version="3.7.104.2" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

使用SDK发送文本消息

static void Main(string[] args)
{
    //创建配置构建对象,并添加配置来源
    var configBuilder = new ConfigurationBuilder();
    configBuilder.AddJsonFile("appsettings.json", false, false);
    Console.WriteLine("完成 appsettings.json 添加");

    //构建配置
    var config = configBuilder.Build();
    Console.WriteLine("完成 ConfigurationBuilder 初始化");

    //绑定配置数据到对象,然后可以通过对象来使用
    var senparcSetting = new SenparcSetting();
    var senparcWeixinSetting = new SenparcWeixinSetting();
    config.GetSection("SenparcSetting").Bind(senparcSetting);
    config.GetSection("SenparcWeixinSetting").Bind(senparcWeixinSetting);
    Console.WriteLine("完成配置对象绑定");

    //使用 Microsoft 内置依赖注入创建容器
    var services = new ServiceCollection();

    //添加 SDK 中的本地缓存服务到容器中
    services.AddMemoryCache();
    Console.WriteLine("完成本地缓存注册");

    //添加全局基础服务到容器中
    services.AddSenparcGlobalServices(config);
    Console.WriteLine("完成全局基础服务注册");

    //创建注册服务
    IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal();

    //开始注册微信信息
    register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting)
        //注册企业微信(可注册多个)
        .RegisterWorkAccount(senparcWeixinSetting, "企业微信应用名");  // 注册企业微信应用信息,同时获取了 access token

    // 通过应用信息获取 access token 标识
    var appKey = AccessTokenContainer.BuildingKey(senparcWeixinSetting.WeixinCorpId, senparcWeixinSetting.WeixinCorpSecret);
    // 通过标识获取 access token
    var token = AccessTokenContainer.GetToken(appKey);

    // 把应用ID也加入到 appsettings.json 中,这样可以通过配置对象获取了
    var appId = senparcWeixinSetting.WeixinCorpAgentId;

    // 使用 SDK 的消息 API 发送文本信息
    MassApi.SendText(token, appId, "Hello World!", "替换为你要发送的人员账号");

    Console.WriteLine("点击任意按键结束...");
    Console.ReadKey();
}

参考

posted on 2020-10-27 17:02  springsnow  阅读(889)  评论(0编辑  收藏  举报

导航