wecom_rs/client/external_contact/enterprise_service/
dto.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize, Default)]
4pub struct ParamsContactWayCreate {
5    ///	联系方式类型,1-单人, 2-多人
6    #[serde(rename = "type")]
7    pub kind: i32,
8    /// 场景,1-在小程序中联系,2-通过二维码联系
9    pub scene: i32,
10    /// 在小程序中联系时使用的控件样式,详见附表
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub style: Option<i32>,
13    /// 联系方式的备注信息,用于助记,不超过30个字符
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub remark: Option<String>,
16    /// 外部客户添加时是否无需验证,默认为true
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub skip_verify: Option<bool>,
19    /// 企业自定义的state参数,用于区分不同的添加渠道,在调用“获取外部联系人详情”时会返回该参数值,不超过30个字符
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub state: Option<String>,
22    /// 使用该联系方式的用户userID列表,在type为1时为必填,且只能有一个
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub user: Option<Vec<String>>,
25    /// 使用该联系方式的部门id列表,只在type为2时有效
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub party: Option<Vec<i32>>,
28    /// 是否临时会话模式,true表示使用临时会话模式,默认为false
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub is_temp: Option<bool>,
31    /// 临时会话二维码有效期,以秒为单位。该参数仅在is_temp为true时有效,默认7天,最多为14天
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub expires_in: Option<i64>,
34    /// 临时会话有效期,以秒为单位。该参数仅在is_temp为true时有效,默认为添加好友后24小时,最多为14天
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub chat_expires_in: Option<i64>,
37    /// 可进行临时会话的客户unionid,该参数仅在is_temp为true时有效,如不指定则不进行限制
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub unionid: Option<String>,
40    /// 结束语,会话结束时自动发送给客户,可参考“结束语定义”,仅在is_temp为true时有效
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub conclusions: Option<Conclusion>,
43}
44
45/// text、image、link和miniprogram四者不能同时为空;
46/// text与另外三者可以同时发送,此时将会以两条消息的形式触达客户;
47/// image、link和miniprogram只能有一个,如果三者同时填,则按image、link、miniprogram的优先顺序取参,也就是说,如果image与link同时传值,则只有image生效;
48/// media_id可以通过素材管理接口获得;
49/// 构造结束语使用image消息时,只能填写meida_id字段,获取含有image结构的联系我方式时,返回pic_url字段。
50#[derive(Debug, Deserialize, Serialize, Default)]
51pub struct Conclusion {
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub text: Option<Text>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub image: Option<Image>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub link: Option<Link>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub miniprogram: Option<MiniProgram>,
60}
61
62#[derive(Debug, Deserialize, Serialize, Default)]
63pub struct Text {
64    /// 消息文本内容,最长为4000字节
65    pub content: String,
66}
67
68#[derive(Debug, Deserialize, Serialize, Default)]
69pub struct Image {
70    /// 图片的media_id
71    pub media_id: String,
72    /// 图片的url
73    pub pic_url: String,
74}
75
76#[derive(Debug, Deserialize, Serialize, Default)]
77pub struct Link {
78    /// 图文消息标题,最长为128字节
79    pub title: String,
80    /// 图文消息封面的url
81    #[serde(rename = "picurl")]
82    pub pic_url: String,
83    /// 图文消息的描述,最长为512字节
84    pub desc: String,
85    /// 图文消息的链接
86    pub url: String,
87}
88
89#[derive(Debug, Deserialize, Serialize, Default)]
90pub struct MiniProgram {
91    /// 小程序消息标题,最长为64字节
92    pub title: String,
93    /// 小程序消息封面的mediaid,封面图建议尺寸为520*416
94    pub pic_media_id: String,
95    /// 小程序appid,必须是关联到企业的小程序应用
96    #[serde(rename = "appid")]
97    pub app_id: String,
98    /// 小程序page路径
99    pub page: String,
100}
101
102#[derive(Debug, Deserialize, Serialize, Default)]
103pub struct ParamsContactWayList {
104    /// 联系我」创建起始时间戳, 默认为90天前
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub start_time: Option<i64>,
107    /// 「联系我」创建结束时间戳, 默认为当前时间
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub end_time: Option<i64>,
110    /// 分页查询使用的游标,为上次请求返回的 next_cursor
111    #[serde(skip_serializing_if = "Option::is_none")]
112    pub cursor: Option<String>,
113    /// 每次查询的分页大小,默认为100条,最多支持1000条
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub limit: Option<i64>,
116}
117
118#[derive(Debug, Deserialize, Serialize, Default)]
119pub struct ParamsContactWayUpdate {
120    /// 企业联系方式的配置id
121    pub config_id: String,
122    /// 在小程序中联系时使用的控件样式,详见附表
123    #[serde(skip_serializing_if = "Option::is_none")]
124    pub style: Option<i32>,
125    /// 联系方式的备注信息,用于助记,不超过30个字符
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub remark: Option<String>,
128    /// 外部客户添加时是否无需验证,默认为true
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub skip_verify: Option<bool>,
131    /// 企业自定义的state参数,用于区分不同的添加渠道,在调用“获取外部联系人详情”时会返回该参数值,不超过30个字符
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub state: Option<String>,
134    /// 使用该联系方式的用户userID列表,在type为1时为必填,且只能有一个
135    #[serde(skip_serializing_if = "Option::is_none")]
136    pub user: Option<Vec<String>>,
137    /// 使用该联系方式的部门id列表,只在type为2时有效
138    #[serde(skip_serializing_if = "Option::is_none")]
139    pub party: Option<Vec<i32>>,
140    /// 临时会话二维码有效期,以秒为单位。该参数仅在is_temp为true时有效,默认7天,最多为14天
141    #[serde(skip_serializing_if = "Option::is_none")]
142    pub expires_in: Option<i64>,
143    /// 临时会话有效期,以秒为单位。该参数仅在is_temp为true时有效,默认为添加好友后24小时,最多为14天
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub chat_expires_in: Option<i64>,
146    /// 可进行临时会话的客户unionid,该参数仅在is_temp为true时有效,如不指定则不进行限制
147    #[serde(skip_serializing_if = "Option::is_none")]
148    pub unionid: Option<String>,
149    /// 结束语,会话结束时自动发送给客户,可参考“结束语定义”,仅在is_temp为true时有效
150    #[serde(skip_serializing_if = "Option::is_none")]
151    pub conclusions: Option<Conclusion>,
152}