64 lines
3.8 KiB
Python
64 lines
3.8 KiB
Python
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
|
||
|
|
# 调用发红包的功能
|