dingtalk.client.api.chat 源代码

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from dingtalk.client.api.base import DingTalkBaseAPI
from dingtalk.model.message import BodyBase


[文档]class Chat(DingTalkBaseAPI):
[文档] def create(self, name, owner, useridlist, show_history_type=False, searchable=0, validation_type=0, mention_all_authority=0, chat_banned_type=0, management_type=0): """ 创建会话 :param name: 群名称。长度限制为1~20个字符 :param owner: 群主userId,员工唯一标识ID;必须为该会话useridlist的成员之一 :param useridlist: 群成员列表,每次最多支持40人,群人数上限为1000 :param show_history_type: 新成员是否可查看聊天历史消息(新成员入群是否可查看最近100条聊天记录) :param searchable: 群可搜索,0-默认,不可搜索,1-可搜索 :param validation_type: 入群验证,0:不入群验证(默认) 1:入群验证 :param mention_all_authority: @all 权限,0-默认,所有人,1-仅群主可@all :param chat_banned_type: 群禁言,0-默认,不禁言,1-全员禁言 :param management_type: 管理类型,0-默认,所有人可管理,1-仅群主可管理 :return: 群会话的id """ return self._post( '/chat/create', { 'name': name, 'owner': owner, 'useridlist': useridlist, 'showHistoryType': 1 if show_history_type else 0, 'chatBannedType': chat_banned_type, 'searchable': searchable, 'validationType': validation_type, 'mentionAllAuthority': mention_all_authority, 'managementType': management_type }, result_processor=lambda x: x['chatid'] )
[文档] def update(self, chatid, name=None, owner=None, add_useridlist=(), del_useridlist=(), icon='', chat_banned_type=0, searchable=0, validation_type=0, mention_all_authority=0, show_history_type=False, management_type=0): """ 修改会话 :param chatid: 群会话的id :param name: 群名称。长度限制为1~20个字符,不传则不修改 :param owner: 群主userId,员工唯一标识ID;必须为该会话成员之一;不传则不修改 :param add_useridlist: 添加成员列表,每次最多支持40人,群人数上限为1000 :param del_useridlist: 删除成员列表,每次最多支持40人,群人数上限为1000 :param icon: 群头像mediaid :param chat_banned_type: 群禁言,0-默认,不禁言,1-全员禁言 :param searchable: 群可搜索,0-默认,不可搜索,1-可搜索 :param validation_type: 入群验证,0:不入群验证(默认) 1:入群验证 :param mention_all_authority: @all 权限,0-默认,所有人,1-仅群主可@all :param show_history_type: 新成员是否可查看聊天历史消息(新成员入群是否可查看最近100条聊天记录) :param management_type: 管理类型,0-默认,所有人可管理,1-仅群主可管理 :return: """ return self._post( '/chat/update', { 'chatid': chatid, 'name': name, 'owner': owner, 'add_useridlist': add_useridlist, 'del_useridlist': del_useridlist, 'icon': icon, 'chatBannedType': chat_banned_type, 'searchable': searchable, 'validationType': validation_type, 'mentionAllAuthority': mention_all_authority, 'showHistoryType': 1 if show_history_type else 0, 'managementType': management_type } )
[文档] def get(self, chatid): """ 获取会话 :param chatid: 群会话的id :return: 群会话信息 """ return self._get( '/chat/get', {'chatid': chatid}, result_processor=lambda x: x['chat_info'] )
[文档] def send(self, chatid, msg_body): """ 发送群消息 :param chatid: 群会话的id :param msg_body: BodyBase 消息体 :return: 加密的消息id """ if isinstance(msg_body, BodyBase): msg_body = msg_body.get_dict() msg_body['chatid'] = chatid return self._post( '/chat/send', msg_body, result_processor=lambda x: x['messageId'] )
[文档] def get_read_list(self, message_id, cursor=0, size=100): """ 查询群消息已读人员列表 :param message_id: 发送群消息接口返回的加密消息id :param cursor: 分页查询的游标,第一次传0,后续传返回结果中的next_cursor。返回结果中没有next_cursor时,表示没有后续的数据了 :param size: 分页查询的大小,最大可以传100 :return: """ return self._get( '/chat/getReadList', {"messageId": message_id, "cursor": cursor, "size": size} )