diff --git a/uniCloud/cloudfunctions/uni-im-co/msg.js b/uniCloud/cloudfunctions/uni-im-co/msg.js index 9a461c2134b65a20ef7ecab019578b797bd79a41..fd363b1245a796ce8846e247c56e7aca7e11fb89 100644 --- a/uniCloud/cloudfunctions/uni-im-co/msg.js +++ b/uniCloud/cloudfunctions/uni-im-co/msg.js @@ -288,8 +288,38 @@ async function _checkConversationGrade({ to_uid, group_id, }) { + if(!conversation_grade){ + return true + } + /** 读取配置的对话等级,校验是否有权发送消息 + * 0 - 任何人可以发起会话 + * 100 - 客服 or 好友或者群成员 + * 200 - 必须是好友或者群成员 + * 300 - 仅限:系统管理员参与的、群成员与群管理员,发起私聊 + **/ + switch (conversation_grade) { + case 100: + // 客服 or 好友或者群成员 + try { + await chatToCustomerService() + } catch (error) { + console.error(error) + await chatToFriendOrGroupMember() + } + break; + case 200: + // 必须是好友或者群成员 + await chatToFriendOrGroupMember() + break; + case 300: + // 放到创建会话时处理 + break; + default: + throw new Error('未知的对话等级,配置conversation_grade的值不正确') + break; + } // 客服模式下,如果配置的客服 id。则只能向客服发起会话 - let chatToCustomerService = async () => { + async function chatToCustomerService (){ const customer_service_uids = uniImConfig.config('customer_service_uids') || [] if (typeof customer_service_uids == 'string') { customer_service_uids = [customer_service_uids] @@ -301,9 +331,9 @@ async function _checkConversationGrade({ } return true } - + // 只能是好友关系,或者群成员才能发送 - let chatToFriendOrGroupMember = async () => { + async function chatToFriendOrGroupMember(){ if (group_id) { let { data: [has] @@ -332,32 +362,6 @@ async function _checkConversationGrade({ } return true } - - /** 读取配置的对话等级,校验是否有权发送消息 - * 0 - 任何人可以发起会话 - * 100 - 客服 or 好友或者群成员 - * 200 - 必须是好友或者群成员 - **/ - switch (conversation_grade) { - case 0: - // 任何人可以发起会话,不校验 - break; - case 100: - // 客服 or 好友或者群成员 - try { - await chatToCustomerService() - } catch (error) { - console.error(error) - await chatToFriendOrGroupMember() - } - break; - case 200: - // 必须是好友或者群成员 - await chatToFriendOrGroupMember() - break; - default: - break; - } } function _getLastMsgNote({