contact

package
v1.0.54 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package contact provides declarative shortcuts for the DingTalk contact (通讯录) service: user / department / role / relation queries and the HR roster (花名册) lookups. Each shortcut maps 1:1 onto an MCP tool declared in internal/helpers/contact.go.

Index

Constants

This section is empty.

Variables

View Source
var GetRoster = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+get-roster",
	Product:     "hrmregister",
	Description: "查询员工花名册字段信息(学历、家庭、银行卡、合同等)",
	Intent:      "当你需要查看某员工在 HR 花名册中的详细档案字段(如学历、家庭、银行卡、合同等)时使用;可传员工 ID(--staff-id)和要查的字段编码(--fields,来自 +list-roster-fields),不传则按默认查询,返回授权范围内的花名册信息。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "staff-id", Type: shortcut.FlagString, Desc: "查询员工 ID(可选)"},
		{Name: "fields", Type: shortcut.FlagStringSlice, Desc: "指定字段集合,逗号分隔,可通过 +list-roster-fields 获取(可选)"},
	},
	Tips: []string{
		`dws contact +get-roster --staff-id STAFF_ID`,
		`dws contact +get-roster --staff-id STAFF_ID --fields fieldCode1,fieldCode2`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		params := map[string]any{}
		if rt.Changed("staff-id") {
			params["staffId"] = rt.Str("staff-id")
		}
		if rt.Changed("fields") {
			params["fieldCodeList"] = rt.StrSlice("fields")
		}
		return rt.CallMCP("get_authorized_emp_rosterInfo", params)
	},
}

GetRoster 查询员工花名册字段信息(个人档案,hrmregister server)。

View Source
var ListDeptMembers = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-dept-members",
	Product:     "contact",
	Description: "查看部门成员(仅本部门,不含下级)",
	Intent:      "当你想列出一个或多个部门本级的员工(不含下级子部门)以便群发通知、统计或指派任务时使用;输入部门 ID 列表(--depts,逗号分隔),返回这些部门下的成员,如需含下级需自行遍历子部门。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "depts", Type: shortcut.FlagStringSlice, Desc: "部门 ID 列表,逗号分隔", Required: true},
	},
	Tips: []string{
		`dws contact +list-dept-members --depts 12345,67890`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "get_dept_members_by_deptId", map[string]any{
			"deptIds": rt.StrSlice("depts"),
		})
		if err != nil {
			return err
		}
		members := memberListProject(data)
		return rt.Output(map[string]any{"count": len(members), "members": members})
	},
}

GetDept 获取部门详情(部门 ID、名称、人数)。 ListDeptMembers 查看部门成员(仅本部门,不含下级)。

View Source
var ListFollowings = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-followings",
	Product:     "contact",
	Description: "获取当前用户的特别关注列表",
	Intent:      "当你想查看本人在通讯录里「特别关注」的联系人名单(例如常打交道的同事、上级)时使用;无需输入,返回关注对象的用户列表,可用于快速定位这些人的 userId 再发消息或排日程。",
	Risk:        shortcut.RiskRead,
	Tips: []string{
		`dws contact +list-followings`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {

		data, err := rt.CallMCPData("contact", "list_my_followings", nil)
		if err != nil {
			return err
		}
		followings := listFollowingsProject(data)
		return rt.Output(map[string]any{"count": len(followings), "followings": followings})
	},
}

GetSelf 获取当前登录用户信息(我是谁 / 本人)。 ListFollowings 获取当前用户的特别关注列表。

View Source
var ListRoleMembers = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-role-members",
	Product:     "contact",
	Description: "查询角色下的成员列表",
	Intent:      "当你已知某个角色 ID、想列出该角色(标签)下的全部成员以便群发通知或统计人群时使用;输入角色 ID(--id),返回该角色下的用户列表,通常先用 +search-role 拿到角色 ID 再调用。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "id", Type: shortcut.FlagString, Desc: "角色 ID", Required: true},
	},
	Tips: []string{
		`dws contact +list-role-members --id 12345`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "get_label_members_by_labelId", map[string]any{
			"labelId": rt.Str("id"),
		})
		if err != nil {
			return err
		}
		members := memberListProject(data)
		return rt.Output(map[string]any{"count": len(members), "members": members})
	},
}

SearchRole 根据角色名称精确匹配查询角色(角色ID、名称)。 ListRoleMembers 根据角色 ID 查询该角色下的成员列表。

View Source
var ListRoles = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-roles",
	Product:     "contact",
	Description: "获取企业所有角色(标签)列表",
	Intent:      "当你想总览企业里都有哪些角色/员工标签(如「管理员」「财务」「销售」)及其角色 ID 时使用;无需输入,返回全量角色列表,常用于按角色圈定人群前先摸清有哪些角色可选。",
	Risk:        shortcut.RiskRead,
	Tips: []string{
		`dws contact +list-roles`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "get_org_labels", map[string]any{})
		if err != nil {
			return err
		}
		roles := listRolesProject(data)
		return rt.Output(map[string]any{"count": len(roles), "roles": roles})
	},
}

GetUser 批量获取用户详情(组织管理信息:部门、主管、管理员权限)。 ListRoles 获取企业所有角色(标签)列表。

View Source
var ListRosterFields = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-roster-fields",
	Product:     "hrmregister",
	Description: "查询花名册有权限的字段列表",
	Intent:      "当你要查询花名册(HR 档案)信息、需要先知道当前身份有权访问哪些字段及其字段编码(fieldCode)时使用;无需输入,返回可用字段列表,通常作为调用 +get-roster 前的准备步骤以指定 --fields。",
	Risk:        shortcut.RiskRead,
	Tips: []string{
		`dws contact +list-roster-fields`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		return rt.CallMCP("list_authorized_roster_fields", map[string]any{})
	},
}

ListRosterFields 查询花名册当前用户有权限的字段列表(hrmregister server)。

View Source
var ListSubDepts = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+list-sub-depts",
	Product:     "contact",
	Description: "查看指定部门的子部门",
	Intent:      "当你想逐层浏览组织架构、查看某个部门下一级的子部门时使用;输入父部门 ID(--dept,根部门为 1),返回其直属子部门列表,可用于自顶向下遍历部门树。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "dept", Type: shortcut.FlagInt, Desc: "部门 ID(钉钉根部门为 1)", Required: true},
	},
	Tips: []string{
		`dws contact +list-sub-depts --dept 1`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "get_sub_depts_by_dept_id", map[string]any{
			"deptId": rt.Int("dept"),
		})
		if err != nil {
			return err
		}
		depts := listSubDeptsProject(data)
		return rt.Output(map[string]any{"count": len(depts), "depts": depts})
	},
}

SearchDept 按关键词搜索部门。 ListSubDepts 查看指定部门的子部门。

View Source
var SearchMobile = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+search-mobile",
	Product:     "contact",
	Description: "按手机号搜索通讯录用户",
	Intent:      "当你手里只有某人的手机号、需要反查出对应的通讯录用户和 userId 时使用;输入手机号(--mobile),返回该手机号所属的用户信息,适合从电话或名片信息定位到具体员工。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "mobile", Type: shortcut.FlagString, Desc: "手机号", Required: true},
	},
	Tips: []string{
		`dws contact +search-mobile --mobile 13800138000`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "search_user_by_mobile", map[string]any{
			"mobile": rt.Str("mobile"),
		})
		if err != nil {
			return err
		}
		users := searchUserProject(data)
		return rt.Output(map[string]any{"count": len(users), "users": users})
	},
}

SearchMobile 按手机号搜索通讯录用户。

View Source
var SearchUser = shortcut.Shortcut{
	Service:     "contact",
	Command:     "+search-user",
	Product:     "contact",
	Description: "按关键词搜索通讯录用户",
	Intent:      "当你只知道某人的姓名、花名或部分名字,需要把它解析成 userId 及部门等信息以便后续发消息、排日程或指派任务时使用;输入搜索关键词(--query),返回匹配的用户列表。",
	Risk:        shortcut.RiskRead,
	Flags: []shortcut.Flag{
		{Name: "query", Type: shortcut.FlagString, Desc: "搜索关键词", Required: true},
	},
	Tips: []string{
		`dws contact +search-user --query "张三"`,
	},
	Execute: func(rt *shortcut.RuntimeContext) error {
		data, err := rt.CallMCPData("contact", "search_contact_by_key_word", map[string]any{
			"keyword": rt.Str("query"),
		})
		if err != nil {
			return err
		}
		users := searchUserProject(data)
		return rt.Output(map[string]any{"count": len(users), "users": users})
	},
}

SearchUser 按关键词搜索通讯录用户。

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL