def test_process_text_msg(): to_user_name = 'to_user_name' from_user_name = 'from_user_name' content = 'content' text_msg = f""" <xml> <ToUserName><![CDATA[{to_user_name}]]></ToUserName> <FromUserName><![CDATA[{from_user_name}]]></FromUserName> <CreateTime>1594522500</CreateTime> <MsgType><![CDATA[text]]></MsgType> <MsgId><![CDATA[1594522500]]></MsgId> <Content><![CDATA[{content}]]></Content> </xml> """ msg_obj = mrc.parse_xml(text_msg) assert msg_obj.ToUserName == to_user_name assert msg_obj.FromUserName == from_user_name assert msg_obj.Content == content
def test_auth_verify(): to_user_name = 'to_user_name' from_user_name = 'from_user_name' content = 'content' text_msg = f""" <xml> <ToUserName><![CDATA[{to_user_name}]]></ToUserName> <FromUserName><![CDATA[{from_user_name}]]></FromUserName> <CreateTime>1594522500</CreateTime> <MsgType><![CDATA[text]]></MsgType> <MsgId><![CDATA[1594522500]]></MsgId> <Content><![CDATA[{content}]]></Content> </xml> """ msg_obj = mrc.parse_xml(text_msg) result = mt_auth.auth_verify(msg_obj) assert result.open_id == from_user_name assert result.groups[0] == mt_auth.Role.FANS
def test_process_image_msg(): to_user_name = 'to_user_name' from_user_name = 'from_user_name' pic_url = 'pic_url' media_id = 'media_id' text_msg = f""" <xml> <ToUserName><![CDATA[{to_user_name}]]></ToUserName> <FromUserName><![CDATA[{from_user_name}]]></FromUserName> <CreateTime>1594522500</CreateTime> <MsgType><![CDATA[text]]></MsgType> <MsgId><![CDATA[1594522500]]></MsgId> <PicUrl><![CDATA[{pic_url}]]></PicUrl> <MediaId><![CDATA[{media_id}]]></MediaId> </xml> """ msg_obj = mrc.parse_xml(text_msg) assert msg_obj.ToUserName == to_user_name assert msg_obj.FromUserName == from_user_name assert msg_obj.PicUrl == pic_url assert msg_obj.MediaId == media_id
def POST(self): try: data = web.data() print(f"handle/POST 接受参数 {data}") # 消息处理 rec_msg = mrc.parse_xml(data) if not rec_msg: return 'success' if isinstance(rec_msg, mrc.ErrMsg): return mrp.TextMsg(to_user_name=rec_msg.FromUserName, from_user_name=rec_msg.ToUserName, content=rec_msg.err).send() # 根据用户信息获取用户身份 identity = mt_auth.auth_verify(rec_msg) # 根据消息获得用户行为 purpose = mt_choice.get_purpose_by_msg(identity, rec_msg) # 根据用户身份和行为执行相应动作 return purpose(rec_msg) except Exception as err: print(f"handle/POST {type(err)} 异常, msg => {err}") return err
def test_process_voice_msg(): to_user_name = 'to_user_name' from_user_name = 'from_user_name' media_id = 'media_id' recognition = 'recognition' text_msg = f""" <xml> <ToUserName><![CDATA[{to_user_name}]]></ToUserName> <FromUserName><![CDATA[{from_user_name}]]></FromUserName> <CreateTime>1594522500</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MsgId>6848421990236160000</MsgId> <MediaId><![CDATA[{media_id}]]></MediaId> <Format><![CDATA[amr]]></Format> <Recognition><![CDATA[{recognition}]]></Recognition> </xml>> """ msg_obj = mrc.parse_xml(text_msg) assert msg_obj.ToUserName == to_user_name assert msg_obj.FromUserName == from_user_name assert msg_obj.MediaId == media_id assert msg_obj.Recognition == recognition