import dataclasses import jmespath import pydash import requests from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from sixGuoDjango import redis_5 from wechat_项目工具包.企业微信工具包.客户管理 import wecom客户管理 from wechat_项目工具包.企业微信工具包.消息推送工具 import wecom消息推送 @dataclasses.dataclass class six企微回调业务处理方法(): pass def 添加企业客户事件(self, as_data): """""" """ 添加企业客户事件 参数 说明 配置了客户联系功能的成员添加外部联系人时,回调该事件 ToUserName 企业微信CorpID FromUserName 此事件该值固定为sys,表示该消息由系统生成 CreateTime 消息创建时间 (整型) MsgType 消息的类型,此时固定为event Event 事件的类型,此时固定为change_external_contact ChangeType 此时固定为add_external_contact UserID 企业服务人员的UserID ExternalUserID 外部联系人的userid,注意不是企业成员的账号 State 添加此用户的「联系我」方式配置的state参数,或在获客链接中指定的customer_channel参数,可用于识别添加此用户的渠道 WelcomeCode 欢迎语code,可用于发送欢迎语 """ # 这是用户在添加企微好友成功时的回调信息; ToUserName = pydash.get(obj=as_data, path="xml.ToUserName") # toUser 企业微信CorpID FromUserName = pydash.get(obj=as_data, path="xml.FromUserName") # sys 此事件该值固定为sys,表示该消息由系统生成 CreateTime = pydash.get(obj=as_data, path="xml.CreateTime") # 1403610513 消息创建时间 (整型) MsgType = pydash.get(obj=as_data, path="xml.MsgType") # event 消息的类型,此时固定为event Event = pydash.get(obj=as_data, path="xml.Event") # change_external_contact 事件的类型,此时固定为change_external_contact ChangeType = pydash.get(obj=as_data, path="xml.ChangeType") # add_external_contact 此时固定为add_external_contact UserID = pydash.get(obj=as_data, path="xml.UserID") # UserID 企业服务人员的UserID ExternalUserID = pydash.get(obj=as_data, path="xml.ExternalUserID", ) # woAJ2GCAAAXtWyujaWJHDDGi0mAAAA 外部联系人的userid,注意不是企业成员的账号 State = pydash.get(obj=as_data, path="xml.State", ) # teststate 添加此用户的「联系我」方式配置的state参数,或在获客链接中指定的customer_channel参数,可用于识别添加此用户的渠道 WelcomeCode = pydash.get(obj=as_data, path="xml.WelcomeCode") # WELCOMECODE 欢迎语code,可用于发送欢迎语 # 发送欢迎语 print("添加企业客户事件") res_welcom_code = wecom消息推送.发送新客户欢迎语(CALLBACK_CODE=WelcomeCode) # 获取用户的 unionid (主要就是获取用户的unionid的值) res = wecom客户管理.获取客户详情(external_userid=ExternalUserID) print(res) unionid = jmespath.search(data=res, expression="external_contact.unionid") print(unionid) wecom_pay_data = requests.post(url="https://xiao.sixgou.com/demopay/transfer/", json={"unionid": unionid}) # 存储数据(用户添加后的数据) print("打印数据类型", wecom_pay_data.json()) print("打印数据类型", type(wecom_pay_data.json())) payData = wecom_pay_data.json() channels_name = redis_5.get(name=unionid) default_channel_layer = get_channel_layer(alias="default") async_to_sync(awaitable=default_channel_layer.send)(channel=channels_name, message={"type": "chat_subMsg", "data": payData}) pass # 调用发红包的功能