def test_transfer_customer_service_reply_without_account(): t = int(time.time()) reply = TransferCustomerServiceReply(source='aaa', target='bbb', time=t) assert reply.render().strip() == """ <xml> <ToUserName><![CDATA[bbb]]></ToUserName> <FromUserName><![CDATA[aaa]]></FromUserName> <CreateTime>{time}</CreateTime> <MsgType><![CDATA[transfer_customer_service]]></MsgType> </xml> """.format(time=t).strip()
def test_transfer_customer_service_reply(): t = int(time.time()) reply = TransferCustomerServiceReply(source='aaa', target='bbb', time=t) assert reply.render().strip() == """ <xml> <ToUserName><![CDATA[bbb]]></ToUserName> <FromUserName><![CDATA[aaa]]></FromUserName> <CreateTime>{time}</CreateTime> <MsgType><![CDATA[transfer_customer_service]]></MsgType> </xml> """.format(time=t).strip()
def on_subscribe(message): try: user = um.models.User.get_wechat(mp_openid=message.source) if not user: user = um.models.User.from_wechat_mp(message.source) um.funcs.on_invite(user, int(message.key or 0)) if self.subscribe_callback: res = self.subscribe_callback(user, message) if res: return res if current_app.config.get('NEED_QRCODE') and not user.inviter: return '%s,欢迎关注!请取消关注,再通过扫描海报二维码进行关注!' % user.nickname if not user.wechat_user.subscribe: user.wechat_user.dosubscribe() follow_msg = Message.objects(follow=True).first() if follow_msg: reply = follow_msg.reply(message) if reply: return reply default_msg = Message.objects(default=True).first() if default_msg: reply = default_msg.reply(message) if reply: return reply return TransferCustomerServiceReply(message=message) except: current_app.logger.error(traceback.format_exc()) return '系统繁忙,请稍后重试!'
def help_with_similar(content: str, message) -> str: reply_record = AutoReply.query.get(content) if reply_record is not None: return json.loads(reply_record.response) keyword, _ = split_keyword(content) # get command not found help message helps = get_similar_help_for_user(wechat_command_reg, keyword, message) # No similar commands found if not helps: for command in wechat_command_reg.get_all(): for keyword in command.keywords: if content.startswith(keyword): return f'看起来想使用命令"{keyword}"但忘了在"{keyword}"后打空格?' return TransferCustomerServiceReply(message) # print similar commands return f'看起来命令"{keyword}"打错了? 可能的命令有:\n' + helps
def on_text(message): try: msg = Message.objects(keyword=message.content).first() if msg: reply = msg.reply(message) if reply: return reply default_msg = Message.objects(default=True).first() if default_msg: reply = default_msg.reply(message) if reply: return reply return TransferCustomerServiceReply(message=message) except: current_app.logger.error(traceback.format_exc()) return '系统繁忙,请稍后重试!'
def respond_image(message): return TransferCustomerServiceReply(message)