View Source WeChat.Work (wechat v0.16.0)

企业微信

注意 未支持企业微信服务商

定义 Client 模块

defmodule YourApp.WeChatAppCodeName do
  @moduledoc "CodeName"
  use WeChat.Work,
    corp_id: "corp_id",
    agents: [
      contacts_agent(secret: "contacts_secret"),
      customer_agent(secret: "customer_secret"),
      kf_agent(secret: "customer_secret"),
      agent(10000, name: :agent_name, secret: "agent_secret"),
      ...
    ]
end

定义参数说明请看 options/0

Summary

Types

access_token 是企业后台去企业微信的后台获取信息时的重要票据 - 官方文档

每个应用都有唯一的 agentid - 官方文档

每个企业都拥有唯一的 corpid - 官方文档

参数

secret 是企业应用里面用于保障数据安全的“钥匙” - 官方文档

Types

@type access_token() :: String.t()

access_token 是企业后台去企业微信的后台获取信息时的重要票据 - 官方文档

corpidsecret 产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限

@type agent() :: agent_name() | agent_id()
@type agent_id() :: WeChat.Work.Agent.agent_id()

每个应用都有唯一的 agentid - 官方文档

在管理后台->“应用与小程序”->“应用”,点进某个应用,即可看到 agentid

@type agent_name() :: WeChat.Work.Agent.agent_name()
@type agents() :: [WeChat.Work.Agent.t(), ...]
@type client() :: module()
@type corp_id() :: String.t()

每个企业都拥有唯一的 corpid - 官方文档

获取此信息可在管理后台“我的企业”-“企业信息”下查看“企业ID”(需要有管理员权限)

@type js_api_ticket() :: String.t()
@type options() :: [
  corp_id: corp_id(),
  agents: agents() | WeChat.env_option(),
  server_role: WeChat.server_role() | WeChat.env_option(),
  storage: WeChat.Storage.Adapter.t() | WeChat.env_option(),
  requester: module()
]

参数

参数说明

默认参数:

  • server_role: :client
  • storage: WeChat.Storage.File
  • requester: WeChat.WorkRequester
  • 其余参数皆为可选
@type secret() :: WeChat.Work.Agent.secret()

secret 是企业应用里面用于保障数据安全的“钥匙” - 官方文档

每一个应用都有一个独立的访问密钥,为了保证数据的安全,secret务必不能泄漏。 目前 secret 有:

  • 自建应用 secret 在管理后台->“应用与小程序”->“应用”->“自建”,点进某个应用,即可看到。
  • 基础应用 secret 某些基础应用(如“审批”“打卡”应用),支持通过API进行操作。在管理后台->“应用与小程序”->“应用->”“基础”,点进某个应用,点开“API”小按钮,即可看到。
  • 通讯录管理 secret 在“管理工具”-“通讯录同步”里面查看(需开启“API接口同步”);
  • 外部联系人管理 secret 在“客户联系”栏,点开“API”小按钮,即可看到。
@type url() :: String.t()

Functions

Link to this function

build_client(client, options)

View Source
@spec build_client(client(), options()) :: {:ok, client()}

动态构建 client

Link to this function

get_access_token(client, agent)

View Source
@spec get_access_token(client(), agent()) :: WeChat.response()

获取 access_token - 官方文档

Link to this function

get_jsapi_ticket(client, agent, is_agent \\ false)

View Source
@spec get_jsapi_ticket(client(), agent(), is_agent :: boolean()) :: WeChat.response()

获取 jsapi_ticket

Link to this function

js_sdk_agent_config(client, agent, url)

View Source
@spec js_sdk_agent_config(client(), agent(), url()) :: map()

生成agentConfig配置 - 官方文档

Link to this function

js_sdk_config(client, agent, url)

View Source
@spec js_sdk_config(client(), agent(), url()) :: map()

生成JS-SDK配置 - 官方文档

@spec shutdown_client(client()) :: :ok

动态关闭 client

Link to this function

sign_js_sdk(jsapi_ticket, url, corp_id)

View Source
@spec sign_js_sdk(js_api_ticket(), url(), corp_id()) :: map()

生成JS-SDK配置(by ticket)

Link to this function

start_agent(client, agent, options \\ %{})

View Source
@spec start_agent(client(), WeChat.Work.Agent.t(), WeChat.Setup.options()) ::
  :ok | :client_not_in | {atom(), term()}

动态启动 agent

Link to this function

start_client(client, options \\ %{})

View Source
@spec start_client(client(), WeChat.start_options()) :: :ok

动态启动 client