zoukankan      html  css  js  c++  java
  • 【原创】在 .NET Core 3.1 中使用 Senparc.Weixin.Work 企业微信 SDK —— 发送文本消息

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

    本文目录:

    创建控制台应用

    使用命令行工具创建

    $ 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();
    }
    

    参考

  • 相关阅读:
    st-load视频性能测试
    gitlab-ci集成SonarQube代码质量检查
    退役记
    洛谷 P5195 【[USACO05DEC]Knights of Ni S】
    洛谷 P4742 【[Wind Festival]Running In The Sky】
    洛谷 SP13105 【MUTDNA
    洛谷 P3174 【[HAOI2009]毛毛虫】
    洛谷 P1542 【包裹快递】
    Python函数的返回值
    ubuntu18.04修改国内apt源
  • 原文地址:https://www.cnblogs.com/Quinnz/p/12292598.html
Copyright © 2011-2022 走看看