
    Zi                     b    d Z ddlmc mZ ddlmZmZmZ ddl	m
Z
  G d d      Z G d d      Zy)	u   企业微信集成    N)DictOptionalTuple)get_settingsc            
       Z    e Zd ZdZd Zdededededef
dZd	edefd
Z	dedededefdZ
y)WeChatWorkClientu   企业微信客户端c                     t               }t        |dd      | _        t        |dd      | _        t        |dd      | _        t        |dd      | _        t        |dd      | _        y )NWECHAT_CORP_ID WECHAT_AGENT_IDWECHAT_SECRETWECHAT_TOKENWECHAT_ENCODING_AES_KEY)r   getattrcorp_idagent_idsecrettokenencoding_aes_key)selfsettingss     A/home/jang/Projects/ai-researcher/src/integrations/wechat_work.py__init__zWeChatWorkClient.__init__
   s]    >x)92>*;R@h<X~r:
 '2KR P    	signature	timestampnonceecho_strreturnc                     dj                  t        | j                  |||g            }ddl}|j	                  |j                               j                         }||k(  S )u*   验证回调URL（企微配置时调用）r   r   N)joinsortedr   hashlibsha1encode	hexdigest)r   r   r   r   r   tmp_strr#   hashcodes           r   
verify_urlzWeChatWorkClient.verify_url   sP     ''&$**i!IJK<< 01;;=9$$r   xml_datac           	         t        j                  |      }|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  nd|j                  d      |j                  d      j                  d	S dd	S )
u   解析XML消息
ToUserNamer   FromUserName
CreateTimeMsgTypeContentMsgIdAgentID)to_user_namefrom_user_namecreate_timemsg_typecontentmsg_idr   )ET
fromstringfindtext)r   r*   roots      r   parse_messagezWeChatWorkClient.parse_message   s   }}X&<@IIl<S<_DIIl388eg@D		.@Y@edii7<<km;?99\;R;^499\277df59YYy5I5U		),11[]48IIi4H4Ttyy+00Z\1571C1Odii(--UW59YYy5I5U		),11
 	
 \^
 	
r   to_user	from_userr7   c           	      Z    ddl }d| d| dt        |j                                d| d	}|S )u   构建回复XMLr   Nz<xml>
<ToUserName><![CDATA[z(]]></ToUserName>
<FromUserName><![CDATA[z]]></FromUserName>
<CreateTime>zD</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[z]]></Content>
</xml>)timeint)r   r?   r@   r7   rB   xmls         r   build_replyzWeChatWorkClient.build_reply'   sL    Y !{ # ) 
 
r   N)__name__
__module____qualname____doc__r   strboolr)   r   r>   rE    r   r   r   r      sh    Q%C %C % %s %W[ %
c 
d 

3 
3 
 
 
r   r   c                   F    e Zd ZdZdefdZdedee   fdZ	dededefd	Z
y
)WeChatWorkMessageHandleru   企业微信消息处理器clientc                     || _         y )N)rO   )r   rO   s     r   r   z!WeChatWorkMessageHandler.__init__7   s	    r   messager   c                    K   |j                  dd      }|j                  dd      }|j                  dd      }|dk(  r| j                  ||       d{   S y7 w)u   处理收到的消息r6   r   r7   r4   r<   N)get_handle_text_message)r   rQ   r6   r7   r@   s        r   handle_messagez'WeChatWorkMessageHandler.handle_message:   s^     ;;z2.++i,KK 0"5	v229gFFF Gs   AAAAuser_idr7   c                    K   d| dS w)u   处理文本消息u   收到消息：u   
正在处理中，请稍候...rL   )r   rV   r7   s      r   rT   z-WeChatWorkMessageHandler._handle_text_messageF   s      !	)IJJs   	N)rF   rG   rH   rI   r   r   r   r   rJ   rU   rT   rL   r   r   rN   rN   4   sG    %/ 
D 
Xc] 
K# K K Kr   rN   )rI   xml.etree.ElementTreeetreeElementTreer9   typingr   r   r   
src.configr   r   rN   rL   r   r   <module>r]      s.     " " ( ( #* *ZK Kr   