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
@type access_token() :: String.t()
access_token 是企业后台去企业微信的后台获取信息时的重要票据 - 官方文档
由 corpid
和 secret
产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限
@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() ]
参数
参数说明
corp_id
:corp_id/0
- 必填agents
: 应用列表 -agents/0
|WeChat.env_option/0
- 必填 & 至少一个server_role
:WeChat.server_role/0
storage
:WeChat.Storage.Adapter.t/0
requester
: 请求客户端 -module/0
默认参数:
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
动态构建 client
@spec get_access_token(client(), agent()) :: WeChat.response()
获取 access_token - 官方文档
@spec get_jsapi_ticket(client(), agent(), is_agent :: boolean()) :: WeChat.response()
获取 jsapi_ticket
生成agentConfig配置 - 官方文档
生成JS-SDK配置 - 官方文档
@spec shutdown_client(client()) :: :ok
动态关闭 client
@spec sign_js_sdk(js_api_ticket(), url(), corp_id()) :: map()
生成JS-SDK配置(by ticket)
@spec start_agent(client(), WeChat.Work.Agent.t(), WeChat.Setup.options()) :: :ok | :client_not_in | {atom(), term()}
动态启动 agent
@spec start_client(client(), WeChat.start_options()) :: :ok
动态启动 client